Diff of the two buildlogs:

--
--- b1/build.log	2024-02-11 06:32:08.859410389 +0000
+++ b2/build.log	2024-02-11 08:43:21.273603070 +0000
@@ -1,6 +1,6 @@
 I: pbuilder: network access will be disabled during build
-I: Current time: Sat Feb 10 15:11:45 -12 2024
-I: pbuilder-time-stamp: 1707621105
+I: Current time: Sun Feb 11 20:43:49 +14 2024
+I: pbuilder-time-stamp: 1707633829
 I: Building the build Environment
 I: extracting base tarball [/var/cache/pbuilder/bookworm-reproducible-base.tgz]
 I: copying local configuration
@@ -16,7 +16,7 @@
 I: copying [./horizon-eda_2.4.0.orig.tar.xz]
 I: copying [./horizon-eda_2.4.0-1.debian.tar.xz]
 I: Extracting source
-gpgv: Signature made Fri Nov 25 23:37:23 2022 -12
+gpgv: Signature made Sun Nov 27 01:37:23 2022 +14
 gpgv:                using RSA key DC2BE5A635D6DCF094A1BD3037C2B4F8642139FF
 gpgv: Can't check signature: No public key
 dpkg-source: warning: cannot verify inline signature for ./horizon-eda_2.4.0-1.dsc: no acceptable signature found
@@ -30,135 +30,167 @@
 dpkg-source: info: applying canvas_gl-error-check.patch
 I: Not using root during the build.
 I: Installing the build-deps
-I: user script /srv/workspace/pbuilder/29237/tmp/hooks/D02_print_environment starting
+I: user script /srv/workspace/pbuilder/31671/tmp/hooks/D01_modify_environment starting
+debug: Running on virt32b.
+I: Changing host+domainname to test build reproducibility
+I: Adding a custom variable just for the fun of it...
+I: Changing /bin/sh to bash
+'/bin/sh' -> '/bin/bash'
+lrwxrwxrwx 1 root root 9 Feb 11 20:44 /bin/sh -> /bin/bash
+I: Setting pbuilder2's login shell to /bin/bash
+I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other
+I: user script /srv/workspace/pbuilder/31671/tmp/hooks/D01_modify_environment finished
+I: user script /srv/workspace/pbuilder/31671/tmp/hooks/D02_print_environment starting
 I: set
-  BUILDDIR='/build/reproducible-path'
-  BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other'
-  BUILDUSERNAME='pbuilder1'
-  BUILD_ARCH='armhf'
-  DEBIAN_FRONTEND='noninteractive'
-  DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=3 '
-  DISTRIBUTION='bookworm'
-  HOME='/root'
-  HOST_ARCH='armhf'
+  BASH=/bin/sh
+  BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath
+  BASH_ALIASES=()
+  BASH_ARGC=()
+  BASH_ARGV=()
+  BASH_CMDS=()
+  BASH_LINENO=([0]="12" [1]="0")
+  BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:.
+  BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment")
+  BASH_VERSINFO=([0]="5" [1]="2" [2]="15" [3]="1" [4]="release" [5]="arm-unknown-linux-gnueabihf")
+  BASH_VERSION='5.2.15(1)-release'
+  BUILDDIR=/build/reproducible-path
+  BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other'
+  BUILDUSERNAME=pbuilder2
+  BUILD_ARCH=armhf
+  DEBIAN_FRONTEND=noninteractive
+  DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=4 '
+  DIRSTACK=()
+  DISTRIBUTION=bookworm
+  EUID=0
+  FUNCNAME=([0]="Echo" [1]="main")
+  GROUPS=()
+  HOME=/root
+  HOSTNAME=i-capture-the-hostname
+  HOSTTYPE=arm
+  HOST_ARCH=armhf
   IFS=' 	
   '
-  INVOCATION_ID='8fb1e67bb1ab474f85b4ee848e71d22c'
-  LANG='C'
-  LANGUAGE='en_US:en'
-  LC_ALL='C'
-  MAIL='/var/mail/root'
-  OPTIND='1'
-  PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games'
-  PBCURRENTCOMMANDLINEOPERATION='build'
-  PBUILDER_OPERATION='build'
-  PBUILDER_PKGDATADIR='/usr/share/pbuilder'
-  PBUILDER_PKGLIBDIR='/usr/lib/pbuilder'
-  PBUILDER_SYSCONFDIR='/etc'
-  PPID='29237'
-  PS1='# '
-  PS2='> '
+  INVOCATION_ID=ff24104a499a43abb1a716377ad3cb2f
+  LANG=C
+  LANGUAGE=it_CH:it
+  LC_ALL=C
+  MACHTYPE=arm-unknown-linux-gnueabihf
+  MAIL=/var/mail/root
+  OPTERR=1
+  OPTIND=1
+  OSTYPE=linux-gnueabihf
+  PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path
+  PBCURRENTCOMMANDLINEOPERATION=build
+  PBUILDER_OPERATION=build
+  PBUILDER_PKGDATADIR=/usr/share/pbuilder
+  PBUILDER_PKGLIBDIR=/usr/lib/pbuilder
+  PBUILDER_SYSCONFDIR=/etc
+  PIPESTATUS=([0]="0")
+  POSIXLY_CORRECT=y
+  PPID=31671
   PS4='+ '
-  PWD='/'
-  SHELL='/bin/bash'
-  SHLVL='2'
-  SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.jmLRurtV/pbuilderrc_5CoG --distribution bookworm --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bookworm-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.jmLRurtV/b1 --logfile b1/build.log horizon-eda_2.4.0-1.dsc'
-  SUDO_GID='114'
-  SUDO_UID='108'
-  SUDO_USER='jenkins'
-  TERM='unknown'
-  TZ='/usr/share/zoneinfo/Etc/GMT+12'
-  USER='root'
-  _='/usr/bin/systemd-run'
-  http_proxy='http://10.0.0.15:3142/'
+  PWD=/
+  SHELL=/bin/bash
+  SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix
+  SHLVL=3
+  SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.jmLRurtV/pbuilderrc_BMzX --distribution bookworm --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bookworm-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.jmLRurtV/b2 --logfile b2/build.log horizon-eda_2.4.0-1.dsc'
+  SUDO_GID=112
+  SUDO_UID=106
+  SUDO_USER=jenkins
+  TERM=unknown
+  TZ=/usr/share/zoneinfo/Etc/GMT-14
+  UID=0
+  USER=root
+  _='I: set'
+  http_proxy=http://10.0.0.15:3142/
 I: uname -a
-  Linux virt64a 6.1.0-18-arm64 #1 SMP Debian 6.1.76-1 (2024-02-01) aarch64 GNU/Linux
+  Linux i-capture-the-hostname 6.1.0-18-armmp-lpae #1 SMP Debian 6.1.76-1 (2024-02-01) armv7l GNU/Linux
 I: ls -l /bin
   total 4964
-  -rwxr-xr-x 1 root root 838488 Apr 23  2023 bash
-  -rwxr-xr-x 3 root root  67144 Sep 18  2022 bunzip2
-  -rwxr-xr-x 3 root root  67144 Sep 18  2022 bzcat
-  lrwxrwxrwx 1 root root      6 Sep 18  2022 bzcmp -> bzdiff
-  -rwxr-xr-x 1 root root   2225 Sep 18  2022 bzdiff
-  lrwxrwxrwx 1 root root      6 Sep 18  2022 bzegrep -> bzgrep
-  -rwxr-xr-x 1 root root   4893 Nov 27  2021 bzexe
-  lrwxrwxrwx 1 root root      6 Sep 18  2022 bzfgrep -> bzgrep
-  -rwxr-xr-x 1 root root   3775 Sep 18  2022 bzgrep
-  -rwxr-xr-x 3 root root  67144 Sep 18  2022 bzip2
-  -rwxr-xr-x 1 root root  67112 Sep 18  2022 bzip2recover
-  lrwxrwxrwx 1 root root      6 Sep 18  2022 bzless -> bzmore
-  -rwxr-xr-x 1 root root   1297 Sep 18  2022 bzmore
-  -rwxr-xr-x 1 root root  67632 Sep 20  2022 cat
-  -rwxr-xr-x 1 root root  67676 Sep 20  2022 chgrp
-  -rwxr-xr-x 1 root root  67644 Sep 20  2022 chmod
-  -rwxr-xr-x 1 root root  67684 Sep 20  2022 chown
-  -rwxr-xr-x 1 root root 133532 Sep 20  2022 cp
-  -rwxr-xr-x 1 root root 132868 Jan  5  2023 dash
-  -rwxr-xr-x 1 root root 133220 Sep 20  2022 date
-  -rwxr-xr-x 1 root root  67732 Sep 20  2022 dd
-  -rwxr-xr-x 1 root root  68104 Sep 20  2022 df
-  -rwxr-xr-x 1 root root 133632 Sep 20  2022 dir
-  -rwxr-xr-x 1 root root  59128 Mar 22  2023 dmesg
-  lrwxrwxrwx 1 root root      8 Dec 19  2022 dnsdomainname -> hostname
-  lrwxrwxrwx 1 root root      8 Dec 19  2022 domainname -> hostname
-  -rwxr-xr-x 1 root root  67560 Sep 20  2022 echo
-  -rwxr-xr-x 1 root root     41 Jan 24  2023 egrep
-  -rwxr-xr-x 1 root root  67548 Sep 20  2022 false
-  -rwxr-xr-x 1 root root     41 Jan 24  2023 fgrep
-  -rwxr-xr-x 1 root root  55748 Mar 22  2023 findmnt
-  -rwsr-xr-x 1 root root  26208 Mar 22  2023 fusermount
-  -rwxr-xr-x 1 root root 128608 Jan 24  2023 grep
-  -rwxr-xr-x 2 root root   2346 Apr  9  2022 gunzip
-  -rwxr-xr-x 1 root root   6447 Apr  9  2022 gzexe
-  -rwxr-xr-x 1 root root  64220 Apr  9  2022 gzip
-  -rwxr-xr-x 1 root root  67032 Dec 19  2022 hostname
-  -rwxr-xr-x 1 root root  67720 Sep 20  2022 ln
-  -rwxr-xr-x 1 root root  35132 Mar 22  2023 login
-  -rwxr-xr-x 1 root root 133632 Sep 20  2022 ls
-  -rwxr-xr-x 1 root root 136808 Mar 22  2023 lsblk
-  -rwxr-xr-x 1 root root  67800 Sep 20  2022 mkdir
-  -rwxr-xr-x 1 root root  67764 Sep 20  2022 mknod
-  -rwxr-xr-x 1 root root  67596 Sep 20  2022 mktemp
-  -rwxr-xr-x 1 root root  38504 Mar 22  2023 more
-  -rwsr-xr-x 1 root root  38496 Mar 22  2023 mount
-  -rwxr-xr-x 1 root root   9824 Mar 22  2023 mountpoint
-  -rwxr-xr-x 1 root root 133532 Sep 20  2022 mv
-  lrwxrwxrwx 1 root root      8 Dec 19  2022 nisdomainname -> hostname
-  lrwxrwxrwx 1 root root     14 Apr  2  2023 pidof -> /sbin/killall5
-  -rwxr-xr-x 1 root root  67608 Sep 20  2022 pwd
-  lrwxrwxrwx 1 root root      4 Apr 23  2023 rbash -> bash
-  -rwxr-xr-x 1 root root  67600 Sep 20  2022 readlink
-  -rwxr-xr-x 1 root root  67672 Sep 20  2022 rm
-  -rwxr-xr-x 1 root root  67600 Sep 20  2022 rmdir
-  -rwxr-xr-x 1 root root  14152 Jul 28  2023 run-parts
-  -rwxr-xr-x 1 root root 133372 Jan  5  2023 sed
-  lrwxrwxrwx 1 root root      4 Jan  5  2023 sh -> dash
-  -rwxr-xr-x 1 root root  67584 Sep 20  2022 sleep
-  -rwxr-xr-x 1 root root  67644 Sep 20  2022 stty
-  -rwsr-xr-x 1 root root  50800 Mar 22  2023 su
-  -rwxr-xr-x 1 root root  67584 Sep 20  2022 sync
-  -rwxr-xr-x 1 root root 336764 Jan 19 21:27 tar
-  -rwxr-xr-x 1 root root   9800 Jul 28  2023 tempfile
-  -rwxr-xr-x 1 root root 133224 Sep 20  2022 touch
-  -rwxr-xr-x 1 root root  67548 Sep 20  2022 true
-  -rwxr-xr-x 1 root root   9768 Mar 22  2023 ulockmgr_server
-  -rwsr-xr-x 1 root root  22108 Mar 22  2023 umount
-  -rwxr-xr-x 1 root root  67572 Sep 20  2022 uname
-  -rwxr-xr-x 2 root root   2346 Apr  9  2022 uncompress
-  -rwxr-xr-x 1 root root 133632 Sep 20  2022 vdir
-  -rwxr-xr-x 1 root root  42608 Mar 22  2023 wdctl
-  lrwxrwxrwx 1 root root      8 Dec 19  2022 ypdomainname -> hostname
-  -rwxr-xr-x 1 root root   1984 Apr  9  2022 zcat
-  -rwxr-xr-x 1 root root   1678 Apr  9  2022 zcmp
-  -rwxr-xr-x 1 root root   6460 Apr  9  2022 zdiff
-  -rwxr-xr-x 1 root root     29 Apr  9  2022 zegrep
-  -rwxr-xr-x 1 root root     29 Apr  9  2022 zfgrep
-  -rwxr-xr-x 1 root root   2081 Apr  9  2022 zforce
-  -rwxr-xr-x 1 root root   8103 Apr  9  2022 zgrep
-  -rwxr-xr-x 1 root root   2206 Apr  9  2022 zless
-  -rwxr-xr-x 1 root root   1842 Apr  9  2022 zmore
-  -rwxr-xr-x 1 root root   4577 Apr  9  2022 znew
-I: user script /srv/workspace/pbuilder/29237/tmp/hooks/D02_print_environment finished
+  -rwxr-xr-x 1 root root 838488 Apr 24  2023 bash
+  -rwxr-xr-x 3 root root  67144 Sep 19  2022 bunzip2
+  -rwxr-xr-x 3 root root  67144 Sep 19  2022 bzcat
+  lrwxrwxrwx 1 root root      6 Sep 19  2022 bzcmp -> bzdiff
+  -rwxr-xr-x 1 root root   2225 Sep 19  2022 bzdiff
+  lrwxrwxrwx 1 root root      6 Sep 19  2022 bzegrep -> bzgrep
+  -rwxr-xr-x 1 root root   4893 Nov 28  2021 bzexe
+  lrwxrwxrwx 1 root root      6 Sep 19  2022 bzfgrep -> bzgrep
+  -rwxr-xr-x 1 root root   3775 Sep 19  2022 bzgrep
+  -rwxr-xr-x 3 root root  67144 Sep 19  2022 bzip2
+  -rwxr-xr-x 1 root root  67112 Sep 19  2022 bzip2recover
+  lrwxrwxrwx 1 root root      6 Sep 19  2022 bzless -> bzmore
+  -rwxr-xr-x 1 root root   1297 Sep 19  2022 bzmore
+  -rwxr-xr-x 1 root root  67632 Sep 21  2022 cat
+  -rwxr-xr-x 1 root root  67676 Sep 21  2022 chgrp
+  -rwxr-xr-x 1 root root  67644 Sep 21  2022 chmod
+  -rwxr-xr-x 1 root root  67684 Sep 21  2022 chown
+  -rwxr-xr-x 1 root root 133532 Sep 21  2022 cp
+  -rwxr-xr-x 1 root root 132868 Jan  6  2023 dash
+  -rwxr-xr-x 1 root root 133220 Sep 21  2022 date
+  -rwxr-xr-x 1 root root  67732 Sep 21  2022 dd
+  -rwxr-xr-x 1 root root  68104 Sep 21  2022 df
+  -rwxr-xr-x 1 root root 133632 Sep 21  2022 dir
+  -rwxr-xr-x 1 root root  59128 Mar 23  2023 dmesg
+  lrwxrwxrwx 1 root root      8 Dec 20  2022 dnsdomainname -> hostname
+  lrwxrwxrwx 1 root root      8 Dec 20  2022 domainname -> hostname
+  -rwxr-xr-x 1 root root  67560 Sep 21  2022 echo
+  -rwxr-xr-x 1 root root     41 Jan 25  2023 egrep
+  -rwxr-xr-x 1 root root  67548 Sep 21  2022 false
+  -rwxr-xr-x 1 root root     41 Jan 25  2023 fgrep
+  -rwxr-xr-x 1 root root  55748 Mar 23  2023 findmnt
+  -rwsr-xr-x 1 root root  26208 Mar 23  2023 fusermount
+  -rwxr-xr-x 1 root root 128608 Jan 25  2023 grep
+  -rwxr-xr-x 2 root root   2346 Apr 10  2022 gunzip
+  -rwxr-xr-x 1 root root   6447 Apr 10  2022 gzexe
+  -rwxr-xr-x 1 root root  64220 Apr 10  2022 gzip
+  -rwxr-xr-x 1 root root  67032 Dec 20  2022 hostname
+  -rwxr-xr-x 1 root root  67720 Sep 21  2022 ln
+  -rwxr-xr-x 1 root root  35132 Mar 23  2023 login
+  -rwxr-xr-x 1 root root 133632 Sep 21  2022 ls
+  -rwxr-xr-x 1 root root 136808 Mar 23  2023 lsblk
+  -rwxr-xr-x 1 root root  67800 Sep 21  2022 mkdir
+  -rwxr-xr-x 1 root root  67764 Sep 21  2022 mknod
+  -rwxr-xr-x 1 root root  67596 Sep 21  2022 mktemp
+  -rwxr-xr-x 1 root root  38504 Mar 23  2023 more
+  -rwsr-xr-x 1 root root  38496 Mar 23  2023 mount
+  -rwxr-xr-x 1 root root   9824 Mar 23  2023 mountpoint
+  -rwxr-xr-x 1 root root 133532 Sep 21  2022 mv
+  lrwxrwxrwx 1 root root      8 Dec 20  2022 nisdomainname -> hostname
+  lrwxrwxrwx 1 root root     14 Apr  3  2023 pidof -> /sbin/killall5
+  -rwxr-xr-x 1 root root  67608 Sep 21  2022 pwd
+  lrwxrwxrwx 1 root root      4 Apr 24  2023 rbash -> bash
+  -rwxr-xr-x 1 root root  67600 Sep 21  2022 readlink
+  -rwxr-xr-x 1 root root  67672 Sep 21  2022 rm
+  -rwxr-xr-x 1 root root  67600 Sep 21  2022 rmdir
+  -rwxr-xr-x 1 root root  14152 Jul 29  2023 run-parts
+  -rwxr-xr-x 1 root root 133372 Jan  6  2023 sed
+  lrwxrwxrwx 1 root root      9 Feb 11 20:44 sh -> /bin/bash
+  -rwxr-xr-x 1 root root  67584 Sep 21  2022 sleep
+  -rwxr-xr-x 1 root root  67644 Sep 21  2022 stty
+  -rwsr-xr-x 1 root root  50800 Mar 23  2023 su
+  -rwxr-xr-x 1 root root  67584 Sep 21  2022 sync
+  -rwxr-xr-x 1 root root 336764 Jan 20 23:27 tar
+  -rwxr-xr-x 1 root root   9800 Jul 29  2023 tempfile
+  -rwxr-xr-x 1 root root 133224 Sep 21  2022 touch
+  -rwxr-xr-x 1 root root  67548 Sep 21  2022 true
+  -rwxr-xr-x 1 root root   9768 Mar 23  2023 ulockmgr_server
+  -rwsr-xr-x 1 root root  22108 Mar 23  2023 umount
+  -rwxr-xr-x 1 root root  67572 Sep 21  2022 uname
+  -rwxr-xr-x 2 root root   2346 Apr 10  2022 uncompress
+  -rwxr-xr-x 1 root root 133632 Sep 21  2022 vdir
+  -rwxr-xr-x 1 root root  42608 Mar 23  2023 wdctl
+  lrwxrwxrwx 1 root root      8 Dec 20  2022 ypdomainname -> hostname
+  -rwxr-xr-x 1 root root   1984 Apr 10  2022 zcat
+  -rwxr-xr-x 1 root root   1678 Apr 10  2022 zcmp
+  -rwxr-xr-x 1 root root   6460 Apr 10  2022 zdiff
+  -rwxr-xr-x 1 root root     29 Apr 10  2022 zegrep
+  -rwxr-xr-x 1 root root     29 Apr 10  2022 zfgrep
+  -rwxr-xr-x 1 root root   2081 Apr 10  2022 zforce
+  -rwxr-xr-x 1 root root   8103 Apr 10  2022 zgrep
+  -rwxr-xr-x 1 root root   2206 Apr 10  2022 zless
+  -rwxr-xr-x 1 root root   1842 Apr 10  2022 zmore
+  -rwxr-xr-x 1 root root   4577 Apr 10  2022 znew
+I: user script /srv/workspace/pbuilder/31671/tmp/hooks/D02_print_environment finished
  -> Attempting to satisfy build-dependencies
  -> Creating pbuilder-satisfydepends-dummy package
 Package: pbuilder-satisfydepends-dummy
@@ -629,7 +661,7 @@
 Get: 385 http://deb.debian.org/debian bookworm/main armhf libzip-dev armhf 1.7.3-1+b1 [163 kB]
 Get: 386 http://deb.debian.org/debian bookworm/main armhf python3-cairo armhf 1.20.1-5+b1 [57.1 kB]
 Get: 387 http://deb.debian.org/debian bookworm/main armhf python3-cairo-dev all 1.20.1-5 [13.8 kB]
-Fetched 220 MB in 11s (19.3 MB/s)
+Fetched 220 MB in 7s (32.9 MB/s)
 debconf: delaying package configuration, since apt-utils is not installed
 Selecting previously unselected package libargon2-1:armhf.
 (Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 19288 files and directories currently installed.)
@@ -2212,7 +2244,11 @@
 Building tag database...
  -> Finished parsing the build-deps
 I: Building the package
-I: Running cd /build/reproducible-path/horizon-eda-2.4.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S  > ../horizon-eda_2.4.0-1_source.changes
+I: user script /srv/workspace/pbuilder/31671/tmp/hooks/A99_set_merged_usr starting
+Not re-configuring usrmerge for bookworm
+I: user script /srv/workspace/pbuilder/31671/tmp/hooks/A99_set_merged_usr finished
+hostname: Name or service not known
+I: Running cd /build/reproducible-path/horizon-eda-2.4.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S  > ../horizon-eda_2.4.0-1_source.changes
 dpkg-buildpackage: info: source package horizon-eda
 dpkg-buildpackage: info: source version 2.4.0-1
 dpkg-buildpackage: info: source distribution unstable
@@ -2222,7 +2258,7 @@
  debian/rules clean
 dh clean
    dh_auto_clean
-	make -j3 clean
+	make -j4 clean
 make[1]: Entering directory '/build/reproducible-path/horizon-eda-2.4.0'
 rm -f build/obj/3rd_party/router/router/pns_router.o build/obj/3rd_party/router/router/pns_item.o build/obj/3rd_party/router/router/pns_node.o build/obj/3rd_party/router/router/pns_solid.o build/obj/3rd_party/router/router/pns_optimizer.o build/obj/3rd_party/router/router/pns_topology.o build/obj/3rd_party/router/router/pns_walkaround.o build/obj/3rd_party/router/router/pns_utils.o build/obj/3rd_party/router/router/pns_algo_base.o build/obj/3rd_party/router/router/pns_diff_pair_placer.o build/obj/3rd_party/router/router/pns_diff_pair.o build/obj/3rd_party/router/router/pns_dp_meander_placer.o build/obj/3rd_party/router/router/pns_dragger.o build/obj/3rd_party/router/router/pns_itemset.o build/obj/3rd_party/router/router/pns_line_placer.o build/obj/3rd_party/router/router/pns_line.o build/obj/3rd_party/router/router/pns_via.o build/obj/3rd_party/router/router/pns_logger.o build/obj/3rd_party/router/router/pns_meander_placer_base.o build/obj/3rd_party/router/router/pns_meander_placer.o build/obj/3rd_party/router/router/pns_meander_skew_placer.o build/obj/3rd_party/router/router/pns_meander.o build/obj/3rd_party/router/router/pns_shove.o build/obj/3rd_party/router/router/pns_index.o build/obj/3rd_party/router/router/time_limit.o build/obj/3rd_party/router/router/pns_routing_settings.o build/obj/3rd_party/router/router/pns_sizes_settings.o build/obj/3rd_party/router/router/pns_arc.o build/obj/3rd_party/router/router/pns_component_dragger.o build/obj/3rd_party/router/router/pns_mouse_trail_tracer.o build/obj/3rd_party/router/wx_compat.o build/obj/src/router/pns_horizon_iface.o build/obj/src/core/tools/tool_route_track_interactive.o build/obj/3rd_party/router/kimath/src/geometry/circle.o build/obj/3rd_party/router/kimath/src/geometry/direction_45.o build/obj/3rd_party/router/kimath/src/geometry/geometry_utils.o build/obj/3rd_party/router/kimath/src/geometry/seg.o build/obj/3rd_party/router/kimath/src/geometry/shape_arc.o build/obj/3rd_party/router/kimath/src/geometry/shape_collisions.o build/obj/3rd_party/router/kimath/src/geometry/shape_compound.o build/obj/3rd_party/router/kimath/src/geometry/shape.o build/obj/3rd_party/router/kimath/src/geometry/shape_file_io.o build/obj/3rd_party/router/kimath/src/geometry/shape_line_chain.o build/obj/3rd_party/router/kimath/src/geometry/shape_poly_set.o build/obj/3rd_party/router/kimath/src/geometry/shape_rect.o build/obj/3rd_party/router/kimath/src/geometry/shape_segment.o build/obj/3rd_party/router/kimath/src/math/util.o build/obj/3rd_party/router/kimath/src/md5_hash.o build/obj/3rd_party/router/color4d.o build/obj/3rd_party/router/kimath/src/trigo.o build/obj/3rd_party/router/base_units.o build/obj/3rd_party/router/clipper_kicad/clipper.o build/obj/3rd_party/router/kimath/src/math/vector2.o build/obj/3rd_party/router/router/pns_router.d build/obj/3rd_party/router/router/pns_item.d build/obj/3rd_party/router/router/pns_node.d build/obj/3rd_party/router/router/pns_solid.d build/obj/3rd_party/router/router/pns_optimizer.d build/obj/3rd_party/router/router/pns_topology.d build/obj/3rd_party/router/router/pns_walkaround.d build/obj/3rd_party/router/router/pns_utils.d build/obj/3rd_party/router/router/pns_algo_base.d build/obj/3rd_party/router/router/pns_diff_pair_placer.d build/obj/3rd_party/router/router/pns_diff_pair.d build/obj/3rd_party/router/router/pns_dp_meander_placer.d build/obj/3rd_party/router/router/pns_dragger.d build/obj/3rd_party/router/router/pns_itemset.d build/obj/3rd_party/router/router/pns_line_placer.d build/obj/3rd_party/router/router/pns_line.d build/obj/3rd_party/router/router/pns_via.d build/obj/3rd_party/router/router/pns_logger.d build/obj/3rd_party/router/router/pns_meander_placer_base.d build/obj/3rd_party/router/router/pns_meander_placer.d build/obj/3rd_party/router/router/pns_meander_skew_placer.d build/obj/3rd_party/router/router/pns_meander.d build/obj/3rd_party/router/router/pns_shove.d build/obj/3rd_party/router/router/pns_index.d build/obj/3rd_party/router/router/time_limit.d build/obj/3rd_party/router/router/pns_routing_settings.d build/obj/3rd_party/router/router/pns_sizes_settings.d build/obj/3rd_party/router/router/pns_arc.d build/obj/3rd_party/router/router/pns_component_dragger.d build/obj/3rd_party/router/router/pns_mouse_trail_tracer.d build/obj/3rd_party/router/wx_compat.d build/obj/src/router/pns_horizon_iface.d build/obj/src/core/tools/tool_route_track_interactive.d build/obj/3rd_party/router/kimath/src/geometry/circle.d build/obj/3rd_party/router/kimath/src/geometry/direction_45.d build/obj/3rd_party/router/kimath/src/geometry/geometry_utils.d build/obj/3rd_party/router/kimath/src/geometry/seg.d build/obj/3rd_party/router/kimath/src/geometry/shape_arc.d build/obj/3rd_party/router/kimath/src/geometry/shape_collisions.d build/obj/3rd_party/router/kimath/src/geometry/shape_compound.d build/obj/3rd_party/router/kimath/src/geometry/shape.d build/obj/3rd_party/router/kimath/src/geometry/shape_file_io.d build/obj/3rd_party/router/kimath/src/geometry/shape_line_chain.d build/obj/3rd_party/router/kimath/src/geometry/shape_poly_set.d build/obj/3rd_party/router/kimath/src/geometry/shape_rect.d build/obj/3rd_party/router/kimath/src/geometry/shape_segment.d build/obj/3rd_party/router/kimath/src/math/util.d build/obj/3rd_party/router/kimath/src/md5_hash.d build/obj/3rd_party/router/color4d.d build/obj/3rd_party/router/kimath/src/trigo.d build/obj/3rd_party/router/base_units.d build/obj/3rd_party/router/clipper_kicad/clipper.d build/obj/3rd_party/router/kimath/src/math/vector2.d
 rm -f build/obj/src/import_step/step_importer.o build/obj/src/export_step/export_step.o build/obj/src/imp/3d/imp_package_3d_occt.o build/obj/src/import_step/step_importer.d build/obj/src/export_step/export_step.d build/obj/src/imp/3d/imp_package_3d_occt.d build/picobj/src/export_step/export_step.o build/picobj/src/import_step/step_importer.o build/picobj/src/export_step/export_step.d build/picobj/src/import_step/step_importer.d
@@ -2295,203 +2331,203 @@
 Searching for files to exclude
 Searching INPUT for files to process...
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/property_panels
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/block
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/common
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/dxflib
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/core
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/debian
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/debian/source
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/debian/man
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/debian/patches
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/parameter
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/docs
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/scripts
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/cache
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/polypartition
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/std
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/std/detail
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/experimental
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/experimental/view
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/experimental/utility
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/detail
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/aux_
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/meta
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/rtree
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/rtree/geometry
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/alphanum
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/clipper
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/footag
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/footag/ipc7351b
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/footag/ipc7251draft1
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/nlohmann
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/nlohmann/detail
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/nlohmann/detail/conversions
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/nlohmann/detail/input
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/nlohmann/detail/iterators
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/nlohmann/detail/output
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/nlohmann/detail/meta
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/nlohmann/detail/meta/call_std
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/nlohmann/thirdparty
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/nlohmann/thirdparty/hedley
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/catch2
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/delaunator
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath/include
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath/include/geometry
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath/include/math
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath/src
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath/src/geometry
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath/src/math
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/include
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/include/core
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/clipper_kicad
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/router
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/poly2tri
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/poly2tri/sweep
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/poly2tri/common
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/sexpr
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/dxflib
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/doc
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/import_dxf
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/project
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/export_gerber
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/dialogs
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/package
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/pool-util
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/clipper
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/prj-mgr
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/prj-mgr/part_browser
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/imp
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/imp/footprint_generator
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/imp/symbol_preview
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/imp/rules
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/common
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/wix
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/wix/Bitmaps
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/pool
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/core
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/board
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/property_panels
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/canvas
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/canvas/polypartition
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/canvas/poly2tri
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/canvas/poly2tri/common
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/canvas/poly2tri/sweep
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/pool-util
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/import_dxf
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/package
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/canvas/poly2tri/common
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/rules
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/schematic
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/export_gerber
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/dialogs
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/pool-mgr
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/pool-mgr/part_wizard
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/pool-mgr/duplicate
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/pool-update
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/scripts
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/wix
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/wix/Bitmaps
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/doc
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/prj-util
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/util
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/pool
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/parameter
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/widgets
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/imp
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/imp/symbol_preview
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/imp/footprint_generator
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/imp/rules
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/pool-mgr/part_wizard
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/logger
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/man
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/router
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/router/common
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/router/common/geometry
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/router/common/math
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/router/router
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/canvas3d
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/util
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/block
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/property_panels
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/block
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/export_odb
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/common
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/core
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/core/tools
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/core/clipboard
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/project
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/export_pdf
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/parameter
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/export_util
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/export_3d_image
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/blocks
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/block_symbol
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/export_gerber
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/dialogs
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/canvas
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/canvas/shaders
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/canvas/bitmap_font
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-util
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/tests
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/import_dxf
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/project
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/package
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/export_util
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-mgr
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-mgr/part_wizard
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-mgr/duplicate
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/python_module
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-update
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/prj-util
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/util
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/parameter
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/blocks
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/import_step
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/widgets
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-util
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/prj-mgr
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/prj-mgr/part_browser
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/export_odb
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/export_pdf
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/imp
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/imp/symbol_preview
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/imp/search
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/imp/footprint_generator
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/imp/footprint_generator/footag
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/imp/3d
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/imp/symbol_preview
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/imp/rules
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/document
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/canvas3d
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/canvas3d/shaders
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pr-review
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/gen-pkg
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/export_bom
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/export_pnp
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/imp/3d
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/imp/search
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons/16x16
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons/16x16/apps
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons/256x256
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons/256x256/apps
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons/scalable
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons/scalable/actions
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons/scalable/apps
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons/32x32
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons/32x32/apps
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons/64x64
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons/64x64/apps
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/common
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/import_step
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/core
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/core/clipboard
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/core/tools
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/board
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/property_panels
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/canvas
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/canvas/bitmap_font
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/canvas/shaders
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/frame
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/rules
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/export_pnp
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/schematic
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/export_gerber
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/export_step
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/dialogs
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/preferences
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/preferences/color_presets
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/router
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-mgr
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-mgr/duplicate
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-mgr/part_wizard
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pgm-test
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/prj-mgr
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/prj-mgr/part_browser
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/export_3d_image
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/frame
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/logger
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/python_module
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/document
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-prj-mgr
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-prj-mgr/prj-mgr
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-prj-mgr/prj-mgr/part_browser
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-prj-mgr/pools_window
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-prj-mgr/preferences
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-prj-mgr/pool-mgr
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-prj-mgr/pool-mgr/kicad_symbol_import_wizard
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-prj-mgr/pool-mgr/part_wizard
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-prj-mgr/pool-mgr/duplicate
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-prj-mgr/pool-mgr/editors
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-prj-mgr/preferences
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-prj-mgr/prj-mgr
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-prj-mgr/prj-mgr/part_browser
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-prj-mgr/pools_window
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/schematic
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-prj-mgr/pool-mgr/part_wizard
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/router
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/export_bom
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/symbol
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/tests
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/rules
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/export_step
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/logger
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons/256x256
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons/256x256/apps
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons/scalable
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons/scalable/apps
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons/scalable/actions
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons/64x64
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons/64x64/apps
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons/32x32
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons/32x32/apps
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons/16x16
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/icons/16x16/apps
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pr-review
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/canvas3d
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/canvas3d/shaders
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/util
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/gen-pkg
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/checks
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/block
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-update-parametric
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/man
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/board
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/router
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/router/common
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/router/common/math
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/router/common/geometry
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/router/router
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/prj-mgr
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/prj-mgr/part_browser
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/schematic
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/rules
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/logger
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/prj-util
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/pool-update
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/src/widgets
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/debian
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/debian/source
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/debian/patches
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/debian/man
 Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/pool-update-parametric
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/rtree
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/rtree/geometry
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/dxflib
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/clipper
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/polypartition
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/delaunator
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/nlohmann
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/nlohmann/thirdparty
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/nlohmann/thirdparty/hedley
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/nlohmann/detail
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/nlohmann/detail/output
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/nlohmann/detail/conversions
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/nlohmann/detail/meta
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/nlohmann/detail/meta/call_std
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/nlohmann/detail/input
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/nlohmann/detail/iterators
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/sexpr
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/catch2
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/clipper_kicad
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/include
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/include/core
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/router
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath/include
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath/include/math
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath/include/geometry
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath/src
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath/src/math
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath/src/geometry
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/meta
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/experimental
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/experimental/view
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/experimental/utility
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/detail
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/aux_
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/std
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/std/detail
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/poly2tri
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/poly2tri/common
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/poly2tri/sweep
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/alphanum
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/footag
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/footag/ipc7251draft1
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/3rd_party/footag/ipc7351b
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/cache
-Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/docs
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/prj-util
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/dxflib
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/pool-update
+Searching for files in directory /build/reproducible-path/horizon-eda-2.4.0/widgets
 Reading and parsing tag files
 Parsing files
 Preprocessing /build/reproducible-path/horizon-eda-2.4.0/3rd_party/alphanum/alphanum.hpp...
@@ -13030,7 +13066,7 @@
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath/include/geometry/shape_poly_set.h:934: warning: explicit link request to 'PM_FAST' could not be resolved
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath/include/geometry/shape_line_chain.h:716: warning: @copybrief or @copydoc target 'SHAPE::Parse()' not found
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath/include/geometry/shape_poly_set.h:1047: warning: @copybrief or @copydoc target 'SHAPE::Parse()' not found
-sh: 1: latex: not found
+sh: line 1: latex: command not found
 error: Problems running latex. Check your installation or look for typos in _formulas.tex and check _formulas.log!
 ducible-path/horizon-eda-2.4.0/version.py...
 Parsing file /build/reproducible-path/horizon-eda-2.4.0/version.py...
@@ -13135,8 +13171,6 @@
 Generating code for file 3rd_party/nlohmann/detail/iterators/internal_iterator.hpp...
 Generating code for file 3rd_party/nlohmann/detail/iterators/iter_impl.hpp...
 Generating code for file 3rd_party/nlohmann/detail/iterators/iteration_proxy.hpp...
-Generating code for file 3rd_party/nlohmann/detail/iterators/iterator_traits.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/utility/iterator_traits.hpp...
 Generating code for file 3rd_party/nlohmann/detail/iterators/json_reverse_iterator.hpp...
 Generating code for file 3rd_party/nlohmann/detail/iterators/primitive_iterator.hpp...
 Generating code for file 3rd_party/nlohmann/detail/json_pointer.hpp...
@@ -13149,8 +13183,6 @@
 Generating code for file 3rd_party/nlohmann/detail/meta/detected.hpp...
 Generating code for file 3rd_party/nlohmann/detail/meta/identity_tag.hpp...
 Generating code for file 3rd_party/nlohmann/detail/meta/is_sax.hpp...
-Generating code for file 3rd_party/nlohmann/detail/meta/type_traits.hpp...
-Generating code for file 3rd_party/range-v3/concepts/type_traits.hpp...
 Generating code for file 3rd_party/nlohmann/detail/meta/void_t.hpp...
 Generating code for file 3rd_party/nlohmann/detail/output/binary_writer.hpp...
 Generating code for file 3rd_party/nlohmann/detail/output/output_adapters.hpp...
@@ -13170,54 +13202,33 @@
 Generating code for file 3rd_party/poly2tri/sweep/sweep.h...
 Generating code for file 3rd_party/poly2tri/sweep/sweep_context.h...
 Generating code for file 3rd_party/polypartition/polypartition.h...
+Generating code for file 3rd_party/range-v3/concepts/compare.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/compare.hpp...
+Generating code for file 3rd_party/range-v3/concepts/concepts.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/action/concepts.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/functional/concepts.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/iterator/concepts.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/range/concepts.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/utility/concepts.hpp...
+Generating code for file 3rd_party/range-v3/concepts/swap.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/utility/swap.hpp...
+Generating code for file 3rd_party/nlohmann/detail/meta/type_traits.hpp...
+Generating code for file 3rd_party/range-v3/concepts/type_traits.hpp...
 Generating code for file 3rd_party/range-v3/meta/meta.hpp...
 Generating code for file 3rd_party/range-v3/meta/meta_fwd.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/action/adjacent_remove_if.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/algorithm/adjacent_remove_if.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/view/adjacent_remove_if.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/action/drop.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/view/drop.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/action/drop_while.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/view/drop_while.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/action.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/action/action.hpp...
+Generating code for file src/imp/action.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/action/erase.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/action/insert.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/action/join.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/view/join.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/action/push_back.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/action/push_front.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/action/remove.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/algorithm/remove.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/view/remove.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/action/remove_if.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/algorithm/remove_if.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/view/remove_if.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/action/reverse.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/algorithm/reverse.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/view/reverse.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/action/shuffle.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/algorithm/shuffle.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/action/slice.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/view/slice.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/action/sort.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/algorithm/sort.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/action/split.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/view/split.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/action/split_when.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/view/split_when.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/action/stable_sort.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/algorithm/stable_sort.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/action/stride.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/view/stride.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/action/take.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/view/take.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/action/take_while.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/view/take_while.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/action/transform.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/algorithm/transform.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/view/transform.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/action/unique.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/algorithm/unique.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/view/unique.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/action/unstable_remove_if.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/algorithm/unstable_remove_if.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/algorithm.hpp...
@@ -13292,13 +13303,11 @@
 Generating code for file 3rd_party/range-v3/range/v3/algorithm/tagspec.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/algorithm/unique_copy.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/algorithm/upper_bound.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/all.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/view/all.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/at.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/back.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/begin_end.hpp...
-Generating code for file 3rd_party/range-v3/concepts/compare.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/compare.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/core.hpp...
+Generating code for file src/core/core.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/data.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/detail/adl_get.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/detail/config.hpp...
@@ -13318,8 +13327,6 @@
 Generating code for file 3rd_party/range-v3/range/v3/functional/comparisons.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/functional/compose.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/functional/identity.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/functional/invoke.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/utility/invoke.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/functional/not_fn.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/functional/on.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/functional/overload.hpp...
@@ -13327,30 +13334,12 @@
 Generating code for file 3rd_party/range-v3/range/v3/functional/reference_wrapper.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/index.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/istream_range.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/iterator/access.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/range/access.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/iterator/basic_iterator.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/utility/basic_iterator.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/iterator/common_iterator.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/utility/common_iterator.hpp...
-Generating code for file 3rd_party/range-v3/concepts/concepts.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/action/concepts.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/functional/concepts.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/iterator/concepts.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/range/concepts.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/utility/concepts.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/iterator/counted_iterator.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/utility/counted_iterator.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/iterator/default_sentinel.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/iterator/diffmax_t.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/iterator/insert_iterators.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/iterator/move_iterators.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/iterator/operations.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/range/operations.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/iterator/reverse_iterator.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/iterator/stream_iterators.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/iterator/traits.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/range/traits.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/iterator/unreachable_sentinel.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/iterator_range.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/numeric.hpp...
@@ -13358,10 +13347,14 @@
 Generating code for file 3rd_party/range-v3/range/v3/numeric/adjacent_difference.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/numeric/inner_product.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/range.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/iterator/access.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/range/access.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/range/conversion.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/range/dangling.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/utility/dangling.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/iterator/operations.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/range/operations.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/range/primitives.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/iterator/traits.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/range/traits.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/detail/range_access.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/range_access.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/range_concepts.hpp...
@@ -13369,25 +13362,33 @@
 Generating code for file 3rd_party/range-v3/range/v3/range_fwd.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/range_traits.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/size.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/span.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/view/span.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/to_container.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility/any.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/utility/associated_types.hpp...
-Generating code for file 3rd_party/range-v3/std/detail/associated_types.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/iterator/basic_iterator.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/utility/basic_iterator.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility/box.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/iterator/common_iterator.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/utility/common_iterator.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility/common_tuple.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility/common_type.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility/compressed_pair.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/algorithm/copy.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility/copy.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/iterator/counted_iterator.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/utility/counted_iterator.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/range/dangling.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/utility/dangling.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility/get.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility/in_place.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility/infinity.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/functional/invoke.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/utility/invoke.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/iterator.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility/iterator.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility/iterator_concepts.hpp...
+Generating code for file 3rd_party/nlohmann/detail/iterators/iterator_traits.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/utility/iterator_traits.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility/memory.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility/nullptr_v.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility/optional.hpp...
@@ -13397,18 +13398,24 @@
 Generating code for file 3rd_party/range-v3/range/v3/utility/semiregular.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility/semiregular_box.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility/static_const.hpp...
-Generating code for file 3rd_party/range-v3/concepts/swap.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/utility/swap.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility/tagged_pair.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility/tagged_tuple.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility/tuple_algorithm.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility/unreachable.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/detail/variant.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility/variant.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/version.hpp...
+Generating code for file src/python_module/version.hpp...
+Generating code for file src/util/version.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/adaptor.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/utility/addressof.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/addressof.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/adjacent_filter.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/action/adjacent_remove_if.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/algorithm/adjacent_remove_if.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/view/adjacent_remove_if.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/all.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/view/all.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/any_view.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/bounded.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/c_str.hpp...
@@ -13416,13 +13423,19 @@
 Generating code for file 3rd_party/range-v3/range/v3/view/cartesian_product.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/chunk.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/chunk_by.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/view/common.hpp...
+Generating code for file src/common/common.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/concat.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/const.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/counted.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/cycle.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/delimit.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/action/drop.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/view/drop.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/drop_exactly.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/drop_last.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/action/drop_while.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/view/drop_while.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/empty.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/empty.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/enumerate.hpp...
@@ -13446,6 +13459,8 @@
 Generating code for file 3rd_party/range-v3/range/v3/numeric/iota.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/iota.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/istream.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/action/join.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/view/join.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/linear_distribute.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/map.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/algorithm/move.hpp...
@@ -13454,25 +13469,54 @@
 Generating code for file 3rd_party/range-v3/range/v3/numeric/partial_sum.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/partial_sum.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/ref.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/action/remove.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/algorithm/remove.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/view/remove.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/action/remove_if.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/algorithm/remove_if.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/view/remove_if.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/repeat.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/repeat_n.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/algorithm/replace.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/replace.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/algorithm/replace_if.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/replace_if.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/action/reverse.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/algorithm/reverse.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/view/reverse.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/algorithm/sample.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/sample.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/algorithm/set_algorithm.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/set_algorithm.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/single.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/action/slice.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/view/slice.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/sliding.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/span.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/view/span.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/action/split.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/view/split.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/action/split_when.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/view/split_when.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/action/stride.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/view/stride.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/subrange.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/tail.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/action/take.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/view/take.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/take_exactly.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/take_last.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/action/take_while.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/view/take_while.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/tokenize.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/action/transform.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/algorithm/transform.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/view/transform.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/trim.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/unbounded.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/action/unique.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/algorithm/unique.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/view/unique.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/view.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view/zip.hpp...
@@ -13480,6 +13524,8 @@
 Generating code for file 3rd_party/range-v3/range/v3/view_adaptor.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view_facade.hpp...
 Generating code for file 3rd_party/range-v3/range/v3/view_interface.hpp...
+Generating code for file 3rd_party/range-v3/range/v3/utility/associated_types.hpp...
+Generating code for file 3rd_party/range-v3/std/detail/associated_types.hpp...
 Generating code for file 3rd_party/router/base_units.h...
 Generating code for file 3rd_party/router/color4d.h...
 Generating code for file 3rd_party/router/config.h...
@@ -13577,11 +13623,15 @@
 Generating code for file src/block_symbol/block_symbol.hpp...
 Generating code for file src/blocks/blocks.hpp...
 Generating code for file src/blocks/blocks_schematic.hpp...
+Generating code for file src/blocks/dependency_graph.hpp...
+Generating code for file src/util/dependency_graph.hpp...
 Generating code for file src/blocks/iblock_provider.hpp...
 Generating code for file src/blocks/iblock_schematic_provider.hpp...
 Generating code for file src/blocks/iblock_symbol_and_schematic_provider.hpp...
 Generating code for file src/blocks/iblock_symbol_provider.hpp...
 Generating code for file src/board/airwire.hpp...
+Generating code for file src/board/board.hpp...
+Generating code for file src/python_module/board.hpp...
 Generating code for file src/board/board_decal.hpp...
 Generating code for file src/board/board_hole.hpp...
 Generating code for file src/board/board_junction.hpp...
@@ -13661,8 +13711,6 @@
 Generating code for file src/checks/check_unit.hpp...
 Generating code for file src/checks/check_util.hpp...
 Generating code for file src/common/arc.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/view/common.hpp...
-Generating code for file src/common/common.hpp...
 Generating code for file src/common/dimension.hpp...
 Generating code for file src/common/grid_settings.hpp...
 Generating code for file src/common/hole.hpp...
@@ -13688,8 +13736,6 @@
 Generating code for file src/core/clipboard/clipboard_package.hpp...
 Generating code for file src/core/clipboard/clipboard_padstack.hpp...
 Generating code for file src/core/clipboard/clipboard_schematic.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/core.hpp...
-Generating code for file src/core/core.hpp...
 Generating code for file src/core/core_board.hpp...
 Generating code for file src/core/core_decal.hpp...
 Generating code for file src/core/core_frame.hpp...
@@ -13910,9 +13956,6 @@
 Generating code for file src/imp/3d/import_canvas_3d.hpp...
 Generating code for file src/imp/3d/model_editor.hpp...
 Generating code for file src/imp/3d/place_model_box.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/action.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/action/action.hpp...
-Generating code for file src/imp/action.hpp...
 Generating code for file src/imp/action_catalog.hpp...
 Generating code for file src/imp/action_icon.hpp...
 Generating code for file src/imp/actions.hpp...
@@ -13951,6 +13994,8 @@
 Generating code for file src/imp/pdf_export_window.hpp...
 Generating code for file src/imp/pnp_export_window.hpp...
 Generating code for file src/imp/rules/export.hpp...
+Generating code for file src/imp/rules/import.hpp...
+Generating code for file src/import_step/import.hpp...
 Generating code for file src/imp/rules/rule_editor.hpp...
 Generating code for file src/imp/rules/rule_editor_clearance_copper.hpp...
 Generating code for file src/imp/rules/rule_editor_clearance_copper_keepout.hpp...
@@ -13985,8 +14030,6 @@
 Generating code for file src/imp/tuning_window.hpp...
 Generating code for file src/imp/view_angle_window.hpp...
 Generating code for file src/import_dxf/dxf_importer.hpp...
-Generating code for file src/imp/rules/import.hpp...
-Generating code for file src/import_step/import.hpp...
 Generating code for file src/import_step/step_importer.hpp...
 Generating code for file src/logger/log_dispatcher.hpp...
 Generating code for file src/logger/log_util.hpp...
@@ -14065,8 +14108,12 @@
 Generating code for file src/pool/package.hpp...
 Generating code for file src/pool/padstack.hpp...
 Generating code for file src/pool/part.hpp...
+Generating code for file src/pool/pool.hpp...
+Generating code for file src/python_module/pool.hpp...
 Generating code for file src/pool/pool_cache_status.hpp...
 Generating code for file src/pool/pool_info.hpp...
+Generating code for file src/pool/pool_manager.hpp...
+Generating code for file src/python_module/pool_manager.hpp...
 Generating code for file src/pool/pool_parametric.hpp...
 Generating code for file src/pool/project_pool.hpp...
 Generating code for file src/pool/unit.hpp...
@@ -14080,20 +14127,9 @@
 Generating code for file src/property_panels/property_panel.hpp...
 Generating code for file src/property_panels/property_panels.hpp...
 Generating code for file src/python_module/3d_image_exporter.hpp...
-Generating code for file src/board/board.hpp...
-Generating code for file src/python_module/board.hpp...
 Generating code for file src/python_module/image_3d_exporter_wrapper.hpp...
-Generating code for file src/pool/pool.hpp...
-Generating code for file src/python_module/pool.hpp...
-Generating code for file src/pool/pool_manager.hpp...
-Generating code for file src/python_module/pool_manager.hpp...
-Generating code for file src/python_module/schematic.hpp...
-Generating code for file src/schematic/schematic.hpp...
 Generating code for file src/python_module/util.hpp...
 Generating code for file src/util/util.hpp...
-Generating code for file 3rd_party/range-v3/range/v3/version.hpp...
-Generating code for file src/python_module/version.hpp...
-Generating code for file src/util/version.hpp...
 Generating code for file src/router/pns_horizon_iface.hpp...
 Generating code for file src/rules/cache.hpp...
 Generating code for file src/rules/rule.hpp...
@@ -14111,6 +14147,8 @@
 Generating code for file src/schematic/net_label.hpp...
 Generating code for file src/schematic/power_symbol.hpp...
 Generating code for file src/schematic/rule_connectivity.hpp...
+Generating code for file src/python_module/schematic.hpp...
+Generating code for file src/schematic/schematic.hpp...
 Generating code for file src/schematic/schematic_block_symbol.hpp...
 Generating code for file src/schematic/schematic_junction.hpp...
 Generating code for file src/schematic/schematic_net_tie.hpp...
@@ -14128,8 +14166,6 @@
 Generating code for file src/util/clipper_util.hpp...
 Generating code for file src/util/csv.hpp...
 Generating code for file src/util/csv_util.hpp...
-Generating code for file src/blocks/dependency_graph.hpp...
-Generating code for file src/util/dependency_graph.hpp...
 Generating code for file src/util/done_revealer_controller.hpp...
 Generating code for file src/util/editor_process.hpp...
 Generating code for file src/util/exception_util.hpp...
@@ -14923,6 +14959,264 @@
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/catch2/catch_amalgamated.hpp:2382: warning: Member clock_cost_estimation_iterations (variable) of namespace Catch::Benchmark::Detail is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/catch2/catch_amalgamated.hpp:2931: warning: Member unprintableString (variable) of namespace Catch::Detail is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/catch2/catch_amalgamated.hpp:4479: warning: Member accept_many (variable) of namespace Catch::Clara is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:42: warning: Member CPP_PP_IGNORE_CXX2A_COMPAT_BEGIN (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:43: warning: Member CPP_PP_IGNORE_CXX2A_COMPAT_END (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:62: warning: Member CPP_CXX_CONCEPTS (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:66: warning: Member CPP_PP_CAT_(X,...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:67: warning: Member CPP_PP_CAT(X,...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:69: warning: Member CPP_PP_EVAL_(X, ARGS) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:70: warning: Member CPP_PP_EVAL(X,...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:72: warning: Member CPP_PP_EVAL2_(X, ARGS) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:73: warning: Member CPP_PP_EVAL2(X,...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:75: warning: Member CPP_PP_EXPAND(...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:76: warning: Member CPP_PP_EAT(...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:78: warning: Member CPP_PP_FIRST(LIST) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:79: warning: Member CPP_PP_FIRST_(...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:81: warning: Member CPP_PP_SECOND(LIST) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:82: warning: Member CPP_PP_SECOND_(...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:84: warning: Member CPP_PP_CHECK(...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:85: warning: Member CPP_PP_CHECK_N(x, n,...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:86: warning: Member CPP_PP_PROBE(x) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:87: warning: Member CPP_PP_PROBE_N(x, n) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:89: warning: Member CPP_PP_IS_PAREN(x) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:90: warning: Member CPP_PP_IS_PAREN_PROBE(...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:98: warning: Member CPP_CXX_VA_OPT (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:104: warning: Member CPP_PP_COUNT(...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:117: warning: Member CPP_PP_COUNT_( _01, _02, _03, _04, _05, _06, _07, _08, _09, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, N,...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:120: warning: Member CPP_PP_IIF(BIT) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:121: warning: Member CPP_PP_IIF_0(TRUE,...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:122: warning: Member CPP_PP_IIF_1(TRUE,...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:124: warning: Member CPP_PP_LPAREN (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:125: warning: Member CPP_PP_RPAREN (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:127: warning: Member CPP_PP_NOT(BIT) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:128: warning: Member CPP_PP_NOT_0 (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:129: warning: Member CPP_PP_NOT_1 (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:131: warning: Member CPP_PP_EMPTY() (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:132: warning: Member CPP_PP_COMMA() (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:133: warning: Member CPP_PP_LBRACE() (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:134: warning: Member CPP_PP_RBRACE() (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:135: warning: Member CPP_PP_COMMA_IIF(X) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:138: warning: Member CPP_PP_FOR_EACH(M,...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:140: warning: Member CPP_PP_FOR_EACH_N(N, M,...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:142: warning: Member CPP_PP_FOR_EACH_1(M, _1) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:144: warning: Member CPP_PP_FOR_EACH_2(M, _1, _2) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:146: warning: Member CPP_PP_FOR_EACH_3(M, _1, _2, _3) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:148: warning: Member CPP_PP_FOR_EACH_4(M, _1, _2, _3, _4) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:150: warning: Member CPP_PP_FOR_EACH_5(M, _1, _2, _3, _4, _5) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:152: warning: Member CPP_PP_FOR_EACH_6(M, _1, _2, _3, _4, _5, _6) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:154: warning: Member CPP_PP_FOR_EACH_7(M, _1, _2, _3, _4, _5, _6, _7) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:156: warning: Member CPP_PP_FOR_EACH_8(M, _1, _2, _3, _4, _5, _6, _7, _8) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:159: warning: Member CPP_PP_PROBE_EMPTY_PROBE_CPP_PP_PROBE_EMPTY (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:162: warning: Member CPP_PP_PROBE_EMPTY() (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:163: warning: Member CPP_PP_IS_NOT_EMPTY(...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:178: warning: Member CPP_BOOL(...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:179: warning: Member CPP_TRUE_FN (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:180: warning: Member CPP_NOT(...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:183: warning: Member CPP_assert(...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:187: warning: Member CPP_assert_msg (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:194: warning: Member CPP_concept (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:195: warning: Member CPP_and (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:260: warning: Member CPP_template (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:261: warning: Member CPP_template_def (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:262: warning: Member CPP_member (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:263: warning: Member CPP_auto_member (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:264: warning: Member CPP_ctor (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:265: warning: Member CPP_concept_ref(NAME,...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:274: warning: Member CPP_template_sfinae(...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:422: warning: Member CPP_broken_friend_ret(...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:478: warning: Member CPP_requires(NAME, REQS) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:482: warning: Member CPP_requires_ref(NAME,...) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:509: warning: Member CPP_ret (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:642: warning: Member CPP_fun(X) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:653: warning: Member CPP_auto_fun(X) (macro definition) of file concepts.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:719: warning: Member bool_ (typedef) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:751: warning: Member return_t (typedef) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:877: warning: Member CPP_requires(explicitly_convertible_to_, requires(From(*from)())(static_cast< To >(from()))) (function) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:897: warning: Member CPP_template(typename T, typename U)(concept(derived_from_)(T (function) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:910: warning: Member CPP_template(typename T, typename U)(concept(common_reference_with_)(T (function) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:924: warning: Member CPP_template(typename T, typename U)(concept(common_with_)(T (function) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:967: warning: Member CPP_requires(assignable_from_, requires(T t, U &&u)(t=(U &&) u, requires_< same_as< T, decltype(t=(U &&) u)> >)) (function) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:984: warning: Member CPP_requires(swappable_, requires(T &t, T &u)(concepts::swap(t, u))) (function) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:998: warning: Member CPP_requires(swappable_with_, requires(T &&t, U &&u)(concepts::swap((T &&) t,(T &&) t), concepts::swap((U &&) u,(U &&) u), concepts::swap((U &&) u,(T &&) t), concepts::swap((T &&) t,(U &&) u))) (function) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1025: warning: Member CPP_requires(boolean_testable_frag_, requires(T &&t)(!(T &&) t, concepts::requires_< boolean_testable_impl_< decltype(!(T &&) t)> >)) (function) of namespace concepts::detail is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1045: warning: Member CPP_requires(weakly_equality_comparable_with_frag_, requires(detail::as_cref_t< T > t, detail::as_cref_t< U > u)(concepts::requires_< boolean_testable_< decltype(t==u)> >, concepts::requires_< boolean_testable_< decltype(t !=u)> >, concepts::requires_< boolean_testable_< decltype(u==t)> >, concepts::requires_< boolean_testable_< decltype(u !=t)> >)) (function) of namespace concepts::detail is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1062: warning: Member CPP_requires(partially_ordered_with_frag_, requires(detail::as_cref_t< T > &t, detail::as_cref_t< U > &u)(concepts::requires_< boolean_testable_< decltype(t< u)> >, concepts::requires_< boolean_testable_< decltype(t > u)> >, concepts::requires_< boolean_testable_< decltype(t<=u)> >, concepts::requires_< boolean_testable_< decltype(t >=u)> >, concepts::requires_< boolean_testable_< decltype(u< t)> >, concepts::requires_< boolean_testable_< decltype(u > t)> >, concepts::requires_< boolean_testable_< decltype(u<=t)> >, concepts::requires_< boolean_testable_< decltype(u >=t)> >)) (function) of namespace concepts::detail is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1097: warning: Member CPP_template(typename T, typename U)(concept(equality_comparable_with_)(T (function) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1121: warning: Member CPP_template(typename T, typename U)(concept(totally_ordered_with_)(T (function) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1170: warning: Member CPP_template(typename T)(concept(copy_constructible_)(T) (function) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1187: warning: Member CPP_template(typename T)(concept(move_assignable_)(T) (function) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1202: warning: Member CPP_template(typename T)(concept(copy_assignable_)(T) (function) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:735: warning: Member and_v (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:739: warning: Member or_v (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:821: warning: Member requires_ (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:833: warning: Member is_true (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:838: warning: Member type (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:843: warning: Member satisfies (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:853: warning: Member same_as (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:871: warning: Member implicitly_convertible_to (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:885: warning: Member explicitly_convertible_to (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:891: warning: Member convertible_to (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:898: warning: Member U (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:898: warning: Member convertible_to< T const volatile *, U const volatile * > (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:904: warning: Member derived_from (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:911: warning: Member U (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:913: warning: Member convertible_to< U, common_reference_t< T, U > > (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:919: warning: Member common_reference_with (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:925: warning: Member U (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:941: warning: Member common_with (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:947: warning: Member integral (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:953: warning: Member signed_integral (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:960: warning: Member unsigned_integral (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:976: warning: Member assignable_from (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:992: warning: Member swappable (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1009: warning: Member swappable_with (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1020: warning: Member boolean_testable_impl_ (variable) of namespace concepts::detail is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1035: warning: Member boolean_testable_ (variable) of namespace concepts::detail is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1056: warning: Member weakly_equality_comparable_with_ (variable) of namespace concepts::detail is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1077: warning: Member partially_ordered_with_ (variable) of namespace concepts::detail is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1092: warning: Member equality_comparable (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1098: warning: Member U (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1105: warning: Member equality_comparable_with (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1115: warning: Member totally_ordered (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1122: warning: Member U (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1132: warning: Member totally_ordered_with (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1145: warning: Member destructible (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1151: warning: Member constructible_from (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1158: warning: Member default_constructible (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1164: warning: Member move_constructible (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1170: warning: Member convertible_to< T const, T > (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1181: warning: Member copy_constructible (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1187: warning: Member assignable_from< T &, T > (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1194: warning: Member movable (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1202: warning: Member assignable_from< T &, T const & > (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1209: warning: Member copyable (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1217: warning: Member semiregular (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1226: warning: Member regular (variable) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/concepts.hpp:68: warning: Member template(typename T)(concept(container_)(T) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/concepts.hpp:86: warning: Member CPP_requires(reservable_, requires(C &c, C const &cc)(c.reserve(ranges::size(c)), cc.capacity(), cc.max_size(), concepts::requires_< same_as< decltype(cc.capacity()), decltype(ranges::size(c))> >, concepts::requires_< same_as< decltype(cc.max_size()), decltype(ranges::size(c))> >)) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/concepts.hpp:107: warning: Member CPP_requires(reservable_with_assign_, requires(C &c, I i)(c.assign(i, i))) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/concepts.hpp:60: warning: Member semi_container (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/concepts.hpp:79: warning: Member container (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/concepts.hpp:101: warning: Member reservable (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/concepts.hpp:115: warning: Member reservable_with_assign (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/concepts.hpp:123: warning: Member random_access_reservable (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/concepts.hpp:176: warning: Member lvalue_container_like (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/concepts.hpp:40: warning: Member CPP_requires(invocable_, requires(Fun &&fn)(invoke((Fun &&) fn, std::declval< Args >()...))) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/concepts.hpp:62: warning: Member CPP_requires(predicate_, requires(Fun &&fn)(concepts::requires_< convertible_to< decltype(invoke((Fun &&) fn, std::declval< Args >()...)), bool > >)) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/concepts.hpp:48: warning: Member invocable (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/concepts.hpp:55: warning: Member regular_invocable (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/concepts.hpp:73: warning: Member predicate (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/concepts.hpp:80: warning: Member relation (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/concepts.hpp:89: warning: Member strict_weak_order (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:443: warning: Member iterator_tag_of (typedef) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:492: warning: Member indirect_result_t (typedef) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:735: warning: Member projected (typedef) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:876: warning: Member sentinel_tag_of (typedef) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:129: warning: Member template(typename I)(concept(readable_)(I) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:158: warning: Member CPP_requires(writable_, requires(O &&o, T &&t)(*o=(T &&) t, *(O &&) o=(T &&) t, const_cast< iter_reference_t< O > const && >(*o)=(T &&) t, const_cast< iter_reference_t< O > const && >(*(O &&) o)=(T &&) t)) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:250: warning: Member CPP_requires(weakly_incrementable_, requires(I i)(++i, i++, concepts::requires_< same_as< I &, decltype(++i)> >)) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:276: warning: Member CPP_requires(incrementable_, requires(I i)(concepts::requires_< same_as< I, decltype(i++)> >)) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:314: warning: Member CPP_requires(sized_sentinel_for_, requires(S const &s, I const &i)(s - i, i - s, concepts::requires_< same_as< iter_difference_t< I >, decltype(s - i)> >, concepts::requires_< same_as< iter_difference_t< I >, decltype(i - s)> >)) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:324: warning: Member template(typename S, typename I)(concept(sized_sentinel_for_)(S (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:339: warning: Member CPP_requires(output_iterator_, requires(Out o, T &&t)(*o++=(T &&) t)) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:354: warning: Member template(typename I, typename Tag)(concept(with_category_)(I (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:379: warning: Member CPP_requires(bidirectional_iterator_, requires(I i)(--i, i--, concepts::requires_< same_as< I &, decltype(--i)> >, concepts::requires_< same_as< I, decltype(i--)> >)) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:398: warning: Member CPP_requires(random_access_iterator_, requires(I i, iter_difference_t< I > n)(i+n, n+i, i - n, i+=n, i -=n, concepts::requires_< same_as< decltype(i+n), I > >, concepts::requires_< same_as< decltype(n+i), I > >, concepts::requires_< same_as< decltype(i - n), I > >, concepts::requires_< same_as< decltype(i+=n), I & > >, concepts::requires_< same_as< decltype(i -=n), I & > >, concepts::requires_< same_as< decltype(i[n]), iter_reference_t< I > > >)) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:551: warning: Member template(typename F, typename I)(concept(indirectly_regular_unary_invocable_)(F (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:639: warning: Member template(typename F, typename I1, typename I2)(concept(indirect_binary_predicate_impl_)(F (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:744: warning: Member template(typename I, typename O)(concept(indirectly_movable_)(I (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:805: warning: Member CPP_requires(indirectly_swappable_, requires(I1 const i1, I2 const i2)(ranges::iter_swap(i1, i2), ranges::iter_swap(i1, i1), ranges::iter_swap(i2, i2), ranges::iter_swap(i2, i1))) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:823: warning: Member template(typename C, typename I1, typename P1, typename I2, typename P2)(concept(projected_indirect_relation_)(C (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:140: warning: Member common_reference_with< iter_rvalue_reference_t< I > &&, iter_value_t< I > const & > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:147: warning: Member indirectly_readable (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:152: warning: Member readable (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:169: warning: Member indirectly_writable (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:174: warning: Member writable (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:268: warning: Member weakly_incrementable (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:284: warning: Member incrementable (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:299: warning: Member input_or_output_iterator (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:306: warning: Member sentinel_for (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:325: warning: Member I (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:326: warning: Member sentinel_for< S, I > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:332: warning: Member sized_sentinel_for (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:347: warning: Member output_iterator (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:355: warning: Member Tag (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:362: warning: Member input_iterator (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:370: warning: Member forward_iterator (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:390: warning: Member bidirectional_iterator (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:416: warning: Member random_access_iterator (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:435: warning: Member contiguous_iterator (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:545: warning: Member indirectly_unary_invocable (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:555: warning: Member common_reference_with< invoke_result_t< F &, iter_value_t< I > & >, invoke_result_t< F &, iter_reference_t< I > > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:564: warning: Member indirectly_regular_unary_invocable (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:625: warning: Member predicate< F &, iter_common_reference_t< I > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:632: warning: Member indirect_unary_predicate (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:640: warning: Member I2 (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:644: warning: Member predicate< F &, iter_common_reference_t< I1 >, iter_common_reference_t< I2 > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:651: warning: Member indirect_binary_predicate_ (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:663: warning: Member relation< F &, iter_common_reference_t< I1 >, iter_common_reference_t< I2 > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:670: warning: Member indirect_relation (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:682: warning: Member strict_weak_order< F &, iter_common_reference_t< I1 >, iter_common_reference_t< I2 > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:689: warning: Member indirect_strict_weak_order (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:745: warning: Member indirectly_writable< O, iter_rvalue_reference_t< I > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:752: warning: Member indirectly_movable (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:761: warning: Member assignable_from< iter_value_t< I > &, iter_rvalue_reference_t< I > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:768: warning: Member indirectly_movable_storable (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:775: warning: Member indirectly_writable< O, iter_reference_t< I > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:782: warning: Member indirectly_copyable (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:791: warning: Member assignable_from< iter_value_t< I > &, iter_reference_t< I > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:798: warning: Member indirectly_copyable_storable (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:816: warning: Member indirectly_swappable (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:824: warning: Member P2 (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:824: warning: Member indirect_relation< C, projected< I1, P1 >, projected< I2, P2 > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:832: warning: Member indirectly_comparable (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:840: warning: Member permutable (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:848: warning: Member indirect_strict_weak_order< C, projected< I1, P1 >, projected< I2, P2 > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:854: warning: Member mergeable (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:865: warning: Member sortable (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:282: warning: Member range_tag_of (typedef) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:308: warning: Member common_range_tag_of (typedef) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:319: warning: Member sized_range_tag_of (typedef) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:60: warning: Member CPP_requires(_range_, requires(T &t)(ranges::begin(t), ranges::end(t))) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:84: warning: Member template(typename T, typename V)(concept(output_range_)(T (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/concepts.hpp:68: warning: Member template(typename T)(concept(container_)(T) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:194: warning: Member CPP_requires(sized_range_, requires(T &t)(ranges::size(t))) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:69: warning: Member range (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:75: warning: Member borrowed_range (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:80: warning: Member safe_range (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:85: warning: Member V (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:85: warning: Member output_iterator< iterator_t< T >, V > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:91: warning: Member output_range (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:96: warning: Member input_iterator< iterator_t< T > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:103: warning: Member input_range (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:108: warning: Member forward_iterator< iterator_t< T > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:115: warning: Member forward_range (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:120: warning: Member bidirectional_iterator< iterator_t< T > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:127: warning: Member bidirectional_range (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:132: warning: Member random_access_iterator< iterator_t< T > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:140: warning: Member random_access_range (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:167: warning: Member contiguous_range (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:172: warning: Member same_as< iterator_t< T >, sentinel_t< T > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:180: warning: Member common_range (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:208: warning: Member sized_range (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:227: warning: Member enable_view (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:252: warning: Member view_ (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:260: warning: Member viewable_range (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/swap.hpp:27: warning: Member CPP_CXX14_CONSTEXPR (macro definition) of file swap.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/swap.hpp:39: warning: Member CPP_CXX_INLINE_VARIABLES (macro definition) of file swap.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/swap.hpp:50: warning: Member CPP_INLINE_VAR (macro definition) of file swap.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/swap.hpp:51: warning: Member CPP_INLINE_VARIABLE(type, name) (macro definition) of file swap.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/swap.hpp:65: warning: Member CPP_DEFINE_CPO(type, name) (macro definition) of file swap.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/swap.hpp:103: warning: Member CPP_DIAGNOSTIC_PUSH (macro definition) of file swap.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/swap.hpp:104: warning: Member CPP_DIAGNOSTIC_POP (macro definition) of file swap.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/swap.hpp:105: warning: Member CPP_DIAGNOSTIC_IGNORE_INIT_LIST_LIFETIME (macro definition) of file swap.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/swap.hpp:106: warning: Member CPP_DIAGNOSTIC_IGNORE_FLOAT_EQUAL (macro definition) of file swap.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/swap.hpp:107: warning: Member CPP_DIAGNOSTIC_IGNORE_CPP2A_COMPAT (macro definition) of file swap.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/swap.hpp:149: warning: Member exchange(T &t, U &&u) noexcept(std::is_nothrow_move_constructible< T >::value &&std::is_nothrow_assignable< T &, U >::value) (function) of namespace concepts is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/swap.hpp:30: warning: Member is_swappable (typedef) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/swap.hpp:33: warning: Member is_nothrow_swappable (typedef) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/swap.hpp:36: warning: Member is_swappable_with (typedef) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/swap.hpp:39: warning: Member is_nothrow_swappable_with (typedef) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/type_traits.hpp:24: warning: Member remove_cvref_t (typedef) of namespace concepts is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/type_traits.hpp:259: warning: Member common_type_t (typedef) of namespace concepts is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/type_traits.hpp:370: warning: Member common_reference_t (typedef) of namespace concepts is not documented.
@@ -14957,27 +15251,15 @@
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/meta/meta_fwd.hpp:175: warning: Member META_IS_SAME(...) (macro definition) of file meta_fwd.hpp is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/meta/meta_fwd.hpp:183: warning: Member META_IS_BASE_OF(...) (macro definition) of file meta_fwd.hpp is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/meta/meta_fwd.hpp:192: warning: Member META_IS_CONSTRUCTIBLE(...) (macro definition) of file meta_fwd.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/adjacent_remove_if.hpp:50: warning: Member adjacent_remove_if(I first, S last, Pred pred={}, Proj proj={}) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/adjacent_remove_if.hpp:77: warning: Member adjacent_remove_if(Rng &&rng, Pred pred, Proj proj={}) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/adjacent_filter.hpp:146: warning: Member template(typename Rng, typename Fun)() adjacent_filter_view(Rng && (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/drop.hpp:136: warning: Member drop_view(Rng &&, range_difference_t< Rng >) -> drop_view< views::all_t< Rng > > (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/common.hpp:224: warning: Member template(typename Rng)() using common_view (function) of namespace ranges::cpp20 is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/drop.hpp:131: warning: Member enable_borrowed_range< drop_view< Rng > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/drop_while.hpp:156: warning: Member drop_while_view (typedef) of namespace ranges::cpp20 is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/adjacent_filter.hpp:146: warning: Member template(typename Rng, typename Fun)() adjacent_filter_view(Rng && (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/drop_while.hpp:153: warning: Member template(typename Rng, typename Pred)(AND input_range< Rng > AND indirect_unary_predicate< Pred (function) of namespace ranges::cpp20 is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/drop_while.hpp:81: warning: Member enable_borrowed_range< drop_while_view< Rng, Pred > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/drop_while.hpp:92: warning: Member disable_sized_range< drop_while_view< Rng, Pred > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/action.hpp:61: warning: Member template(typename ActionFn, typename Rng)(concept(invocable_action_closure_)(ActionFn (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/action.hpp:62: warning: Member Rng (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/action.hpp:68: warning: Member invocable_action_closure (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/erase.hpp:67: warning: Member CPP_requires(erasable_range_, requires(Rng &&rng, I first, S last)(ranges::erase((Rng &&) rng, first, last))) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/erase.hpp:76: warning: Member erasable_range (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/insert.hpp:167: warning: Member template(typename Cont, typename P, typename I, typename S)(AND input_iterator< P > AND sentinel_for< S (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/insert.hpp:169: warning: Member AND(!range< S >)) auto insert(Cont &&cont (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/insert.hpp:171: warning: Member p (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/insert.hpp:171: warning: Member i (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/join.hpp:39: warning: Member join_action_value_t_ (typedef) of namespace ranges::actions is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/any_view.hpp:659: warning: Member template(typename Rng)() any_view(Rng &&) -> any_view< range_reference_t< Rng >, get_categories< Rng >()> (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/join.hpp:623: warning: Member template(typename Rng, typename ValRng)() explicit join_with_view(Rng && (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/common.hpp:224: warning: Member template(typename Rng)() using common_view (function) of namespace ranges::cpp20 is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/push_back.hpp:41: warning: Member push_back_t (typedef) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/push_back.hpp:45: warning: Member insert_t (typedef) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/push_back.hpp:49: warning: Member template(typename Cont, typename T)(AND(!range< T >) AND const ructible_from< range_value_t< Cont > (function) of namespace ranges is not documented.
@@ -14989,8 +15271,6 @@
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/push_front.hpp:52: warning: Member push_front(Cont &&cont, T &&t) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/push_back.hpp:57: warning: Member template(typename Cont, typename Rng)(AND range< Rng >) insert_t< Cont (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/push_front.hpp:59: warning: Member push_front(Cont &&cont, Rng &&rng) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/remove.hpp:44: warning: Member remove(I first, S last, T const &val, P proj=P{}) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/remove.hpp:66: warning: Member remove(Rng &&rng, T const &val, P proj=P{}) (function) of namespace ranges is not documented.
 c/widgets/multi_net_selector.hpp...
 Generating code for file src/widgets/multi_pad_button.hpp...
 Generating code for file src/widgets/multi_pad_selector.hpp...
@@ -15037,72 +15317,27 @@
 Generating file documentation...
 Generating docs for file 3rd_party/catch2/catch_amalgamated.cpp...
 Generating docs for file 3rd_party/catch2/catch_amalgamated.hpp...
+Generating docs for file 3rd_party/range-v3/concepts/compare.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/compare.hpp...
+Generating docs for file 3rd_party/range-v3/concepts/concepts.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/action/concepts.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/functional/concepts.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/iterator/concepts.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/range/concepts.hpp...
+Generating docs for file 3rd_party/range-v3/concepts/swap.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/utility/swap.hpp...
 Generating docs for file 3rd_party/range-v3/concepts/type_traits.hpp...
 Generating docs for file 3rd_party/range-v3/meta/meta.hpp...
 Generating docs for file 3rd_party/range-v3/meta/meta_fwd.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/action/adjacent_remove_if.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/adjacent_remove_if.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/adjacent_remove_if.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/action/drop.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/drop.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/action/drop_while.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/drop_while.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/action.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/action/action.hpp...
 Generating docs for file 3rd_party/range-v3/range/v3/action/erase.hpp...
 Generating docs for file 3rd_party/range-v3/range/v3/action/insert.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/action/join.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/join.hpp...
 Generating docs for file 3rd_party/range-v3/range/v3/action/push_back.hpp...
 Generating docs for file 3rd_party/range-v3/range/v3/action/push_front.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/action/remove.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/remove.hpp...
-Generati/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/remove_if.hpp:44: warning: Member remove_if(I first, S last, C pred, P proj=P{}) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/remove_if.hpp:65: warning: Member remove_if(Rng &&rng, C pred, P proj=P{}) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/remove_if.hpp:141: warning: Member template(typename Rng, typename Pred)() remove_if_view(Rng && (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/reverse.hpp:65: warning: Member reverse(I first, S end_) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/reverse.hpp:144: warning: Member reverse_view(Rng &&) -> reverse_view< views::all_t< Rng > > (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/reverse.hpp:148: warning: Member reverse_view(reverse_view< Rng >) -> reverse_view< reverse_view< Rng > > (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/common.hpp:224: warning: Member template(typename Rng)() using common_view (function) of namespace ranges::cpp20 is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/reverse.hpp:139: warning: Member enable_borrowed_range< reverse_view< Rng > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/shuffle.hpp:46: warning: Member shuffle(I const first, S const last, Gen &&gen=detail::get_random_engine()) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/slice.hpp:188: warning: Member slice_view(Rng &&, range_difference_t< Rng >, range_difference_t< Rng >) -> slice_view< views::all_t< Rng > > (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/slice.hpp:183: warning: Member enable_borrowed_range< slice_view< Rng > > (variable) of namespace ranges is not documented.
+Generating docs for file 3rd_party/range-v3/range/v3/action/shu/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/shuffle.hpp:46: warning: Member shuffle(I const first, S const last, Gen &&gen=detail::get_random_engine()) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/sort.hpp:202: warning: Member sort(I first, S end_, C pred=C{}, P proj=P{}) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/split.hpp:620: warning: Member template(typename R, typename P)(AND forward_range< P > AND viewable_range< R > AND viewable_range< P > AND indirectly_comparable< iterator_t< R > (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/split.hpp:628: warning: Member template(typename R)() split_view(R && (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/split.hpp:686: warning: Member template(typename Rng, typename Pattern)(AND forward_range< Pattern > AND view_< Rng > AND view_< Pattern > AND indirectly_comparable< iterator_t< Rng > (function) of namespace ranges::cpp20 is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/split.hpp:620: warning: Member iterator_t< P > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/split.hpp:623: warning: Member AND(forward_range< R >||detail::tiny_range< P >)) split_view(R && (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/split.hpp:686: warning: Member iterator_t< Pattern > (variable) of namespace ranges::cpp20 is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/split.hpp:692: warning: Member AND(forward_range< Rng >||ranges::detail::tiny_range< Pattern >)) using split_view (variable) of namespace ranges::cpp20 is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/adjacent_filter.hpp:146: warning: Member template(typename Rng, typename Fun)() adjacent_filter_view(Rng && (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/stable_sort.hpp:199: warning: Member stable_sort(I first, S end_, C pred=C{}, P proj=P{}) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/stride.hpp:301: warning: Member stride_view(Rng &&, range_difference_t< Rng >) -> stride_view< views::all_t< Rng > > (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/take.hpp:278: warning: Member take_view(Rng &&, range_difference_t< Rng >) -> take_view< views::all_t< Rng > > (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/common.hpp:224: warning: Member template(typename Rng)() using common_view (function) of namespace ranges::cpp20 is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/take.hpp:273: warning: Member enable_borrowed_range< take_view< Rng > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/take_while.hpp:200: warning: Member take_while_view (typedef) of namespace ranges::cpp20 is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/adjacent_filter.hpp:146: warning: Member template(typename Rng, typename Fun)() adjacent_filter_view(Rng && (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/take_while.hpp:197: warning: Member template(typename Rng, typename Pred)(AND input_range< Rng > AND predicate< Pred & (function) of namespace ranges::cpp20 is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/transform.hpp:41: warning: Member unary_transform_result (typedef) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/transform.hpp:44: warning: Member binary_transform_result (typedef) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/transform.hpp:55: warning: Member transform(I first, S last, O out, F fun, P proj=P{}) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/transform.hpp:68: warning: Member transform(Rng &&rng, O out, F fun, P proj=P{}) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/transform.hpp:91: warning: Member transform(I0 begin0, S0 end0, I1 begin1, S1 end1, O out, F fun, P0 proj0=P0{}, P1 proj1=P1{}) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/transform.hpp:122: warning: Member transform(Rng0 &&rng0, Rng1 &&rng1, O out, F fun, P0 proj0=P0{}, P1 proj1=P1{}) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/transform.hpp:150: warning: Member RANGES_DEPRECATED("Use the variant of ranges::transform that takes an upper bound " "for both input ranges") binary_transform_result< I0 (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/transform.hpp:154: warning: Member transform(I0 begin0, S0 end0, I1 begin1, O out, F fun, P0 proj0=P0{}, P1 proj1=P1{}) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/transform.hpp:190: warning: Member transform(Rng0 &&rng0, I1Ref &&begin1, O out, F fun, P0 proj0=P0{}, P1 proj1=P1{}) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/transform.hpp:186: warning: Member uncvref_t< I1Ref > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/adjacent_filter.hpp:146: warning: Member template(typename Rng, typename Fun)() adjacent_filter_view(Rng && (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/transform.hpp:498: warning: Member template(typename Rng, typename Fun)(concept(transformable_range_)(Rng (function) of namespace ranges::views is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/transform.hpp:500: warning: Member AND(!std::is_void< indirect_result_t< Fun &, iterator_t< Rng > > >::value)) (function) of namespace ranges::views is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/transform.hpp:513: warning: Member template(typename Rng1, typename Rng2, typename Fun)(concept(transformable_ranges_)(Rng1 (function) of namespace ranges::views is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/transform.hpp:515: warning: Member AND(!std::is_void< indirect_result_t< Fun &, iterator_t< Rng1 >, iterator_t< Rng2 > > >::value)) (function) of namespace ranges::views is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/transform.hpp:499: warning: Member Fun (variable) of namespace ranges::views is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/transform.hpp:506: warning: Member transformable_range (variable) of namespace ranges::views is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/transform.hpp:514: warning: Member Rng2 (variable) of namespace ranges::views is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/transform.hpp:522: warning: Member transformable_ranges (variable) of namespace ranges::views is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/unique.hpp:52: warning: Member unique(I first, S last, C pred=C{}, P proj=P{}) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/unstable_remove_if.hpp:51: warning: Member unstable_remove_if(I first, I last, C pred, P proj={}) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/unstable_remove_if.hpp:80: warning: Member unstable_remove_if(Rng &&rng, C pred, P proj=P{}) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/adjacent_find.hpp:44: warning: Member adjacent_find(I first, S last, C pred=C{}, P proj=P{}) (function) of namespace ranges is not documented.
@@ -15136,59 +15371,7 @@
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/ends_with.hpp:49: warning: Member C (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/ends_with.hpp:49: warning: Member P0 (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/ends_with.hpp:71: warning: Member iterator_t< Rng1 > (variable) of namespace ranges is not documented.
-ng docs for file 3rd_party/range-v3/range/v3/view/remove.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/action/remove_if.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/remove_if.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/remove_if.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/action/reverse.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/reverse.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/reverse.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/action/shuffle.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/shuffle.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/action/slice.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/slice.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/action/sort.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/sort.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/action/split.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/split.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/action/split_when.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/split_when.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/action/stable_sort.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/stable_sort.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/action/stride.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/stride.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/action/take.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/take.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/action/take_while.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/take_while.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/action/transform.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/transform.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/transform.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/action/unique.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/unique.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/unique.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/action/unstable_remove_if.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/unstable_remove_if.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/adjacent_find.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/all_of.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/any_of.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/aux_/equal_range_n.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/aux_/lower_bound_n.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/aux_/merge_n.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/aux_/merge_n_with_buffer.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/aux_/partition_point_n.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/aux_/sort_n_with_buffer.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/aux_/upper_bound_n.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/binary_search.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/contains.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/copy_backward.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/copy_if.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/copy_n.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/count.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/count_if.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/ends_with.hpp...
-Generating docs for fi/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/equal.hpp:65: warning: Member RANGES_DEPRECATED("Use the variant of ranges::equal that takes an upper bound for " "both sequences") const expr bool RANGES_FUNC(equal)(I0 begin0 (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/equal.hpp:65: warning: Member RANGES_DEPRECATED("Use the variant of ranges::equal that takes an upper bound for " "both sequences") const expr bool RANGES_FUNC(equal)(I0 begin0 (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/equal.hpp:69: warning: Member end0 (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/equal.hpp:70: warning: Member begin1 (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/equal.hpp:71: warning: Member pred (variable) of namespace ranges is not documented.
@@ -15268,7 +15451,58 @@
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/merge.hpp:70: warning: Member merge(I0 begin0, S0 end0, I1 begin1, S1 end1, O out, C pred=C{}, P0 proj0=P0{}, P1 proj1=P1{}) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/merge.hpp:107: warning: Member merge(Rng0 &&rng0, Rng1 &&rng1, O out, C pred=C{}, P0 proj0=P0{}, P1 proj1=P1{}) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/merge.hpp:105: warning: Member O (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/min_element.hpp:42: warning: Member min_element(I first, S last, C pred=C{}, P proj=P{}) (function) of namespace ranges is not documented.
+ffle.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/shuffle.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/action/sort.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/sort.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/action/stable_sort.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/stable_sort.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/action/unstable_remove_if.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/unstable_remove_if.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/adjacent_find.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/all_of.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/any_of.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/aux_/equal_range_n.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/aux_/lower_bound_n.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/aux_/merge_n.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/aux_/merge_n_with_buffer.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/aux_/partition_point_n.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/aux_/sort_n_with_buffer.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/aux_/upper_bound_n.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/binary_search.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/contains.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/copy_backward.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/copy_if.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/copy_n.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/count.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/count_if.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/ends_with.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/equal.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/equal_range.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/fill.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/fill_n.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/find.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/find_end.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/find_first_of.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/find_if.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/find_if_not.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/fold.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/fold_left.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/fold_right.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/for_each_n.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/heap_algorithm.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/inplace_merge.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/is_partitioned.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/is_sorted.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/is_sorted_until.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/lexicographical_compare.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/lower_bound.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/max.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/max_element.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/merge.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/min.hpp...
+Generating docs for/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/min_element.hpp:42: warning: Member min_element(I first, S last, C pred=C{}, P proj=P{}) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/min_element.hpp:56: warning: Member min_element(Rng &&rng, C pred=C{}, P proj=P{}) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/minmax.hpp:39: warning: Member minmax_result (typedef) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/minmax_element.hpp:40: warning: Member minmax_element_result (typedef) of namespace ranges is not documented.
@@ -15344,57 +15578,7 @@
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/unique_copy.hpp:167: warning: Member unique_copy(Rng &&rng, O out, C pred=C{}, P proj=P{}) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/upper_bound.hpp:45: warning: Member upper_bound(I first, S last, V const &val, C pred=C{}, P proj=P{}) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/upper_bound.hpp:58: warning: Member upper_bound(Rng &&rng, V const &val, C pred=C{}, P proj=P{}) (function) of namespace ranges is not documented.
-le 3rd_party/range-v3/range/v3/algorithm/equal.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/equal_range.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/fill.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/fill_n.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/find.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/find_end.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/find_first_of.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/find_if.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/find_if_not.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/fold.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/fold_left.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/fold_right.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/for_each_n.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/heap_algorithm.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/inplace_merge.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/is_partitioned.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/is_sorted.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/is_sorted_until.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/lexicographical_compare.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/lower_bound.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/max.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/max_element.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/merge.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/min.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/min_element.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/minmax.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/minmax_element.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/mismatch.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/move_backward.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/none_of.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/nth_element.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/partial_sort.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/partial_sort_copy.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/partition.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/partition_copy.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/partition_point.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/permutation.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/remove_copy.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/remove_copy_if.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/replace_copy.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/replace_copy_if.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/reverse_copy.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/rotate.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/rotate_copy.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/search.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/search_n.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/stable_partition.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/swap_ranges.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/unique_copy.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/upper_bound.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3//build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/experimental/utility/generator.hpp:62: warning: Member generator_size_t (typedef) of namespace ranges::experimental is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/experimental/utility/generator.hpp:62: warning: Member generator_size_t (typedef) of namespace ranges::experimental is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/experimental/utility/generator.hpp:65: warning: Member generator_size (enumeration) of namespace ranges::experimental is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/experimental/utility/generator.hpp:71: warning: Member coroutine_owner (variable) of namespace ranges::experimental is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/experimental/view/shared.hpp:124: warning: Member RANGES_STRUCT_WITH_ADL_BARRIER(shared_closure_base) (function) of namespace ranges::experimental is not documented.
@@ -15402,273 +15586,11 @@
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/bind.hpp:38: warning: Member bind_forward(meta::_t< std::remove_reference< T > > &t) noexcept (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/bind.hpp:44: warning: Member bind_forward(meta::_t< std::remove_reference< T > > &&t) noexcept (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/bind_back.hpp:166: warning: Member bind_back_fn (typedef) of namespace ranges::detail is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/invoke.hpp:38: warning: Member RANGES_CONSTEXPR_INVOKE (macro definition) of file invoke.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/invoke.hpp:86: warning: Member is_reference_wrapper (typedef) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/invoke.hpp:174: warning: Member invoke_result_t (typedef) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/invoke.hpp:82: warning: Member is_reference_wrapper_v (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/invoke.hpp:207: warning: Member is_invocable_v (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/invoke.hpp:211: warning: Member is_nothrow_invocable_v (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/pipeable.hpp:43: warning: Member is_pipeable (typedef) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/pipeable.hpp:119: warning: Member instead (typedef) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/pipeable.hpp:34: warning: Member is_pipeable_v (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/pipeable.hpp:37: warning: Member is_pipeable_v< T & > (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/pipeable.hpp:40: warning: Member is_pipeable_v< T && > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/access.hpp:73: warning: Member iter_reference_t (typedef) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/access.hpp:76: warning: Member iter_value_t (typedef) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/access.hpp:151: warning: Member is_indirectly_movable_v (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/access.hpp:155: warning: Member is_nothrow_indirectly_movable_v (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/access.hpp:276: warning: Member is_indirectly_swappable_v (variable) of group group-iterator is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/access.hpp:280: warning: Member is_nothrow_indirectly_swappable_v (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/access.hpp:701: warning: Member sentinel_t (typedef) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/access.hpp:69: warning: Member _decay_copy(T) noexcept (function) of namespace ranges::detail is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/access.hpp:62: warning: Member _borrowed_range (variable) of namespace ranges::detail is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/access.hpp:66: warning: Member _borrowed_range< T & > (variable) of namespace ranges::detail is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/basic_iterator.hpp:741: warning: Member template(typename Cur, typename Cur2)() const expr bool operator (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/common_iterator.hpp:251: warning: Member template(typename I1, typename I2, typename S1, typename S2)(AND sentinel_for< S2 (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/common_iterator.hpp:252: warning: Member AND(!equality_comparable_with< I1, I2 >)) bool operator (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:42: warning: Member CPP_PP_IGNORE_CXX2A_COMPAT_BEGIN (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:43: warning: Member CPP_PP_IGNORE_CXX2A_COMPAT_END (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:62: warning: Member CPP_CXX_CONCEPTS (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:66: warning: Member CPP_PP_CAT_(X,...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:67: warning: Member CPP_PP_CAT(X,...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:69: warning: Member CPP_PP_EVAL_(X, ARGS) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:70: warning: Member CPP_PP_EVAL(X,...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:72: warning: Member CPP_PP_EVAL2_(X, ARGS) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:73: warning: Member CPP_PP_EVAL2(X,...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:75: warning: Member CPP_PP_EXPAND(...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:76: warning: Member CPP_PP_EAT(...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:78: warning: Member CPP_PP_FIRST(LIST) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:79: warning: Member CPP_PP_FIRST_(...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:81: warning: Member CPP_PP_SECOND(LIST) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:82: warning: Member CPP_PP_SECOND_(...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:84: warning: Member CPP_PP_CHECK(...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:85: warning: Member CPP_PP_CHECK_N(x, n,...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:86: warning: Member CPP_PP_PROBE(x) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:87: warning: Member CPP_PP_PROBE_N(x, n) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:89: warning: Member CPP_PP_IS_PAREN(x) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:90: warning: Member CPP_PP_IS_PAREN_PROBE(...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:98: warning: Member CPP_CXX_VA_OPT (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:104: warning: Member CPP_PP_COUNT(...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:117: warning: Member CPP_PP_COUNT_( _01, _02, _03, _04, _05, _06, _07, _08, _09, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, N,...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:120: warning: Member CPP_PP_IIF(BIT) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:121: warning: Member CPP_PP_IIF_0(TRUE,...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:122: warning: Member CPP_PP_IIF_1(TRUE,...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:124: warning: Member CPP_PP_LPAREN (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:125: warning: Member CPP_PP_RPAREN (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:127: warning: Member CPP_PP_NOT(BIT) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:128: warning: Member CPP_PP_NOT_0 (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:129: warning: Member CPP_PP_NOT_1 (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:131: warning: Member CPP_PP_EMPTY() (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:132: warning: Member CPP_PP_COMMA() (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:133: warning: Member CPP_PP_LBRACE() (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:134: warning: Member CPP_PP_RBRACE() (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:135: warning: Member CPP_PP_COMMA_IIF(X) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:138: warning: Member CPP_PP_FOR_EACH(M,...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:140: warning: Member CPP_PP_FOR_EACH_N(N, M,...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:142: warning: Member CPP_PP_FOR_EACH_1(M, _1) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:144: warning: Member CPP_PP_FOR_EACH_2(M, _1, _2) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:146: warning: Member CPP_PP_FOR_EACH_3(M, _1, _2, _3) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:148: warning: Member CPP_PP_FOR_EACH_4(M, _1, _2, _3, _4) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:150: warning: Member CPP_PP_FOR_EACH_5(M, _1, _2, _3, _4, _5) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:152: warning: Member CPP_PP_FOR_EACH_6(M, _1, _2, _3, _4, _5, _6) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:154: warning: Member CPP_PP_FOR_EACH_7(M, _1, _2, _3, _4, _5, _6, _7) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:156: warning: Member CPP_PP_FOR_EACH_8(M, _1, _2, _3, _4, _5, _6, _7, _8) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:159: warning: Member CPP_PP_PROBE_EMPTY_PROBE_CPP_PP_PROBE_EMPTY (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:162: warning: Member CPP_PP_PROBE_EMPTY() (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:163: warning: Member CPP_PP_IS_NOT_EMPTY(...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:178: warning: Member CPP_BOOL(...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:179: warning: Member CPP_TRUE_FN (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:180: warning: Member CPP_NOT(...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:183: warning: Member CPP_assert(...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:187: warning: Member CPP_assert_msg (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:194: warning: Member CPP_concept (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:195: warning: Member CPP_and (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:260: warning: Member CPP_template (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:261: warning: Member CPP_template_def (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:262: warning: Member CPP_member (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:263: warning: Member CPP_auto_member (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:264: warning: Member CPP_ctor (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:265: warning: Member CPP_concept_ref(NAME,...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:274: warning: Member CPP_template_sfinae(...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:422: warning: Member CPP_broken_friend_ret(...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:478: warning: Member CPP_requires(NAME, REQS) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:482: warning: Member CPP_requires_ref(NAME,...) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:509: warning: Member CPP_ret (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:642: warning: Member CPP_fun(X) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:653: warning: Member CPP_auto_fun(X) (macro definition) of file concepts.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:719: warning: Member bool_ (typedef) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:751: warning: Member return_t (typedef) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:877: warning: Member CPP_requires(explicitly_convertible_to_, requires(From(*from)())(static_cast< To >(from()))) (function) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:897: warning: Member CPP_template(typename T, typename U)(concept(derived_from_)(T (function) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:910: warning: Member CPP_template(typename T, typename U)(concept(common_reference_with_)(T (function) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:924: warning: Member CPP_template(typename T, typename U)(concept(common_with_)(T (function) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:967: warning: Member CPP_requires(assignable_from_, requires(T t, U &&u)(t=(U &&) u, requires_< same_as< T, decltype(t=(U &&) u)> >)) (function) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:984: warning: Member CPP_requires(swappable_, requires(T &t, T &u)(concepts::swap(t, u))) (function) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:998: warning: Member CPP_requires(swappable_with_, requires(T &&t, U &&u)(concepts::swap((T &&) t,(T &&) t), concepts::swap((U &&) u,(U &&) u), concepts::swap((U &&) u,(T &&) t), concepts::swap((T &&) t,(U &&) u))) (function) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1025: warning: Member CPP_requires(boolean_testable_frag_, requires(T &&t)(!(T &&) t, concepts::requires_< boolean_testable_impl_< decltype(!(T &&) t)> >)) (function) of namespace concepts::detail is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1045: warning: Member CPP_requires(weakly_equality_comparable_with_frag_, requires(detail::as_cref_t< T > t, detail::as_cref_t< U > u)(concepts::requires_< boolean_testable_< decltype(t==u)> >, concepts::requires_< boolean_testable_< decltype(t !=u)> >, concepts::requires_< boolean_testable_< decltype(u==t)> >, concepts::requires_< boolean_testable_< decltype(u !=t)> >)) (function) of namespace concepts::detail is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1062: warning: Member CPP_requires(partially_ordered_with_frag_, requires(detail::as_cref_t< T > &t, detail::as_cref_t< U > &u)(concepts::requires_< boolean_testable_< decltype(t< u)> >, concepts::requires_< boolean_testable_< decltype(t > u)> >, concepts::requires_< boolean_testable_< decltype(t<=u)> >, concepts::requires_< boolean_testable_< decltype(t >=u)> >, concepts::requires_< boolean_testable_< decltype(u< t)> >, concepts::requires_< boolean_testable_< decltype(u > t)> >, concepts::requires_< boolean_testable_< decltype(u<=t)> >, concepts::requires_< boolean_testable_< decltype(u >=t)> >)) (function) of namespace concepts::detail is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1097: warning: Member CPP_template(typename T, typename U)(concept(equality_comparable_with_)(T (function) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1121: warning: Member CPP_template(typename T, typename U)(concept(totally_ordered_with_)(T (function) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1170: warning: Member CPP_template(typename T)(concept(copy_constructible_)(T) (function) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1187: warning: Member CPP_template(typename T)(concept(move_assignable_)(T) (function) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1202: warning: Member CPP_template(typename T)(concept(copy_assignable_)(T) (function) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:735: warning: Member and_v (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:739: warning: Member or_v (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:821: warning: Member requires_ (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:833: warning: Member is_true (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:838: warning: Member type (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:843: warning: Member satisfies (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:853: warning: Member same_as (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:871: warning: Member implicitly_convertible_to (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:885: warning: Member explicitly_convertible_to (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:891: warning: Member convertible_to (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:898: warning: Member U (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:898: warning: Member convertible_to< T const volatile *, U const volatile * > (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:904: warning: Member derived_from (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:911: warning: Member U (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:913: warning: Member convertible_to< U, common_reference_t< T, U > > (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:919: warning: Member common_reference_with (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:925: warning: Member U (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:941: warning: Member common_with (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:947: warning: Member integral (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:953: warning: Member signed_integral (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:960: warning: Member unsigned_integral (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:976: warning: Member assignable_from (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:992: warning: Member swappable (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1009: warning: Member swappable_with (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1020: warning: Member boolean_testable_impl_ (variable) of namespace concepts::detail is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1035: warning: Member boolean_testable_ (variable) of namespace concepts::detail is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1056: warning: Member weakly_equality_comparable_with_ (variable) of namespace concepts::detail is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1077: warning: Member partially_ordered_with_ (variable) of namespace concepts::detail is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1092: warning: Member equality_comparable (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1098: warning: Member U (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1105: warning: Member equality_comparable_with (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1115: warning: Member totally_ordered (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1122: warning: Member U (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1132: warning: Member totally_ordered_with (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1145: warning: Member destructible (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1151: warning: Member constructible_from (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1158: warning: Member default_constructible (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1164: warning: Member move_constructible (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1170: warning: Member convertible_to< T const, T > (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1181: warning: Member copy_constructible (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1187: warning: Member assignable_from< T &, T > (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1194: warning: Member movable (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1202: warning: Member assignable_from< T &, T const & > (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1209: warning: Member copyable (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1217: warning: Member semiregular (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/concepts.hpp:1226: warning: Member regular (variable) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/concepts.hpp:68: warning: Member template(typename T)(concept(container_)(T) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/concepts.hpp:86: warning: Member CPP_requires(reservable_, requires(C &c, C const &cc)(c.reserve(ranges::size(c)), cc.capacity(), cc.max_size(), concepts::requires_< same_as< decltype(cc.capacity()), decltype(ranges::size(c))> >, concepts::requires_< same_as< decltype(cc.max_size()), decltype(ranges::size(c))> >)) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/concepts.hpp:107: warning: Member CPP_requires(reservable_with_assign_, requires(C &c, I i)(c.assign(i, i))) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/concepts.hpp:60: warning: Member semi_container (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/concepts.hpp:79: warning: Member container (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/concepts.hpp:101: warning: Member reservable (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/concepts.hpp:115: warning: Member reservable_with_assign (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/concepts.hpp:123: warning: Member random_access_reservable (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/concepts.hpp:176: warning: Member lvalue_container_like (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/concepts.hpp:40: warning: Member CPP_requires(invocable_, requires(Fun &&fn)(invoke((Fun &&) fn, std::declval< Args >()...))) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/concepts.hpp:62: warning: Member CPP_requires(predicate_, requires(Fun &&fn)(concepts::requires_< convertible_to< decltype(invoke((Fun &&) fn, std::declval< Args >()...)), bool > >)) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/concepts.hpp:48: warning: Member invocable (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/concepts.hpp:55: warning: Member regular_invocable (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/concepts.hpp:73: warning: Member predicate (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/concepts.hpp:80: warning: Member relation (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/concepts.hpp:89: warning: Member strict_weak_order (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:443: warning: Member iterator_tag_of (typedef) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:492: warning: Member indirect_result_t (typedef) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:735: warning: Member projected (typedef) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:876: warning: Member sentinel_tag_of (typedef) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:129: warning: Member template(typename I)(concept(readable_)(I) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:158: warning: Member CPP_requires(writable_, requires(O &&o, T &&t)(*o=(T &&) t, *(O &&) o=(T &&) t, const_cast< iter_reference_t< O > const && >(*o)=(T &&) t, const_cast< iter_reference_t< O > const && >(*(O &&) o)=(T &&) t)) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:250: warning: Member CPP_requires(weakly_incrementable_, requires(I i)(++i, i++, concepts::requires_< same_as< I &, decltype(++i)> >)) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:276: warning: Member CPP_requires(incrementable_, requires(I i)(concepts::requires_< same_as< I, decltype(i++)> >)) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:314: warning: Member CPP_requires(sized_sentinel_for_, requires(S const &s, I const &i)(s - i, i - s, concepts::requires_< same_as< iter_difference_t< I >, decltype(s - i)> >, concepts::requires_< same_as< iter_difference_t< I >, decltype(i - s)> >)) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:324: warning: Member template(typename S, typename I)(concept(sized_sentinel_for_)(S (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:339: warning: Member CPP_requires(output_iterator_, requires(Out o, T &&t)(*o++=(T &&) t)) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:354: warning: Member template(typename I, typename Tag)(concept(with_category_)(I (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:379: warning: Member CPP_requires(bidirectional_iterator_, requires(I i)(--i, i--, concepts::requires_< same_as< I &, decltype(--i)> >, concepts::requires_< same_as< I, decltype(i--)> >)) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:398: warning: Member CPP_requires(random_access_iterator_, requires(I i, iter_difference_t< I > n)(i+n, n+i, i - n, i+=n, i -=n, concepts::requires_< same_as< decltype(i+n), I > >, concepts::requires_< same_as< decltype(n+i), I > >, concepts::requires_< same_as< decltype(i - n), I > >, concepts::requires_< same_as< decltype(i+=n), I & > >, concepts::requires_< same_as< decltype(i -=n), I & > >, concepts::requires_< same_as< decltype(i[n]), iter_reference_t< I > > >)) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:551: warning: Member template(typename F, typename I)(concept(indirectly_regular_unary_invocable_)(F (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:639: warning: Member template(typename F, typename I1, typename I2)(concept(indirect_binary_predicate_impl_)(F (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:744: warning: Member template(typename I, typename O)(concept(indirectly_movable_)(I (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:805: warning: Member CPP_requires(indirectly_swappable_, requires(I1 const i1, I2 const i2)(ranges::iter_swap(i1, i2), ranges::iter_swap(i1, i1), ranges::iter_swap(i2, i2), ranges::iter_swap(i2, i1))) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:823: warning: Member template(typename C, typename I1, typename P1, typename I2, typename P2)(concept(projected_indirect_relation_)(C (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:140: warning: Member common_reference_with< iter_rvalue_reference_t< I > &&, iter_value_t< I > const & > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:147: warning: Member indirectly_readable (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:152: warning: Member readable (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:169: warning: Member indirectly_writable (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:174: warning: Member writable (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:268: warning: Member weakly_incrementable (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:284: warning: Member incrementable (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:299: warning: Member input_or_output_iterator (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:306: warning: Member sentinel_for (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:325: warning: Member I (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:326: warning: Member sentinel_for< S, I > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:332: warning: Member sized_sentinel_for (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:347: warning: Member output_iterator (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:355: warning: Member Tag (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:362: warning: Member input_iterator (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:370: warning: Member forward_iterator (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:390: warning: Member bidirectional_iterator (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:416: warning: Member random_access_iterator (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:435: warning: Member contiguous_iterator (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:545: warning: Member indirectly_unary_invocable (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:555: warning: Member common_reference_with< invoke_result_t< F &, iter_value_t< I > & >, invoke_result_t< F &, iter_reference_t< I > > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:564: warning: Member indirectly_regular_unary_invocable (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:625: warning: Member predicate< F &, iter_common_reference_t< I > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:632: warning: Member indirect_unary_predicate (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:640: warning: Member I2 (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:644: warning: Member predicate< F &, iter_common_reference_t< I1 >, iter_common_reference_t< I2 > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:651: warning: Member indirect_binary_predicate_ (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:663: warning: Member relation< F &, iter_common_reference_t< I1 >, iter_common_reference_t< I2 > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:670: warning: Member indirect_relation (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:682: warning: Member strict_weak_order< F &, iter_common_reference_t< I1 >, iter_common_reference_t< I2 > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:689: warning: Member indirect_strict_weak_order (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:745: warning: Member indirectly_writable< O, iter_rvalue_reference_t< I > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:752: warning: Member indirectly_movable (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:761: warning: Member assignable_from< iter_value_t< I > &, iter_rvalue_reference_t< I > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:768: warning: Member indirectly_movable_storable (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:775: warning: Member indirectly_writable< O, iter_reference_t< I > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:782: warning: Member indirectly_copyable (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:791: warning: Member assignable_from< iter_value_t< I > &, iter_reference_t< I > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:798: warning: Member indirectly_copyable_storable (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:816: warning: Member indirectly_swappable (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:824: warning: Member P2 (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:824: warning: Member indirect_relation< C, projected< I1, P1 >, projected< I2, P2 > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:832: warning: Member indirectly_comparable (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:840: warning: Member permutable (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:848: warning: Member indirect_strict_weak_order< C, projected< I1, P1 >, projected< I2, P2 > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:854: warning: Member mergeable (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/concepts.hpp:865: warning: Member sortable (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:282: warning: Member range_tag_of (typedef) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:308: warning: Member common_range_tag_of (typedef) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:319: warning: Member sized_range_tag_of (typedef) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:60: warning: Member CPP_requires(_range_, requires(T &t)(ranges::begin(t), ranges::end(t))) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:84: warning: Member template(typename T, typename V)(concept(output_range_)(T (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/concepts.hpp:68: warning: Member template(typename T)(concept(container_)(T) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:194: warning: Member CPP_requires(sized_range_, requires(T &t)(ranges::size(t))) (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:69: warning: Member range (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:75: warning: Member borrowed_range (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:80: warning: Member safe_range (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:85: warning: Member V (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:85: warning: Member output_iterator< iterator_t< T >, V > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:91: warning: Member output_range (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:96: warning: Member input_iterator< iterator_t< T > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:103: warning: Member input_range (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:108: warning: Member forward_iterator< iterator_t< T > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:115: warning: Member forward_range (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:120: warning: Member bidirectional_iterator< iterator_t< T > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:127: warning: Member bidirectional_range (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:132: warning: Member random_access_iterator< iterator_t< T > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:140: warning: Member random_access_range (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:167: warning: Member contiguous_range (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:172: warning: Member same_as< iterator_t< T >, sentinel_t< T > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:180: warning: Member common_range (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:208: warning: Member sized_range (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:227: warning: Member enable_view (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:252: warning: Member view_ (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/concepts.hpp:260: warning: Member viewable_range (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/diffmax_t.hpp:62: warning: Member diffmax_t()=default (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/concepts.hpp:68: warning: Member template(typename T)(concept(container_)(T) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/diffmax_t.hpp:72: warning: Member operator<(diffmax_t a, diffmax_t b) noexcept (function) of namespace ranges is not documented.
@@ -15718,6 +15640,78 @@
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/diffmax_t.hpp:333: warning: Member operator<<(Ostream &sout, diffmax_t a) -> CPP_broken_friend_ret(std::ostream &)() (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/diffmax_t.hpp:345: warning: Member _is_integer_like_< diffmax_t > (variable) of file diffmax_t.hpp is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/stream_iterators.hpp:197: warning: Member ostream_iterator (typedef) of namespace ranges::cpp20 is not documented.
+ file 3rd_party/range-v3/range/v3/algorithm/min_element.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/minmax.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/minmax_element.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/mismatch.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/move_backward.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/none_of.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/nth_element.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/partial_sort.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/partial_sort_copy.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/partition.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/partition_copy.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/partition_point.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/permutation.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/remove_copy.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/remove_copy_if.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/replace_copy.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/replace_copy_if.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/reverse_copy.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/rotate.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/rotate_copy.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/search.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/search_n.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/stable_partition.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/swap_ranges.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/unique_copy.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/upper_bound.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/core.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/experimental/utility/generator.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/experimental/view/shared.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/functional.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/functional/arithmetic.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/functional/bind.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/functional/bind_back.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/functional/comparisons.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/functional/compose.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/functional/identity.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/functional/not_fn.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/functional/on.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/functional/overload.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/functional/pipeable.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/functional/reference_wrapper.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/iterator/default_sentinel.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/iterator/diffmax_t.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/iterator/insert_iterators.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/iterator/move_iterators.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/iterator/reverse_iterator.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/iterator/stream_iterators.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/iterator/unreachable_sentinel.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/iterator_range.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/numeric.hpp...
+Generating docs for file 3rd_party/range-v3/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric/adjacent_difference.hpp:72: warning: Member adjacent_difference_result (typedef) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric/adjacent_difference.hpp:44: warning: Member template(typename I, typename O, typename BOp, typename P)(concept(differenceable_)(I (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric/adjacent_difference.hpp:45: warning: Member BOp (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric/adjacent_difference.hpp:45: warning: Member P (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric/adjacent_difference.hpp:55: warning: Member output_iterator< O, invoke_result_t< BOp &, invoke_result_t< P &, iter_value_t< I > >, invoke_result_t< P &, iter_value_t< I > > > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric/adjacent_difference.hpp:66: warning: Member differenceable (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric/inner_product.hpp:40: warning: Member template(typename I1, typename I2, typename T, typename BOp1, typename BOp2, typename P1, typename P2)(concept(inner_product_constraints_)(I1 (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric/inner_product.hpp:42: warning: Member BOp1 (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric/inner_product.hpp:42: warning: Member BOp2 (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric/inner_product.hpp:55: warning: Member assignable_from< T &, invoke_result_t< BOp1 &, T, invoke_result_t< BOp2 &, invoke_result_t< P1 &, iter_value_t< I1 > >, invoke_result_t< P2 &, iter_value_t< I2 > > > > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric/inner_product.hpp:70: warning: Member inner_product_constraints (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/access.hpp:73: warning: Member iter_reference_t (typedef) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/access.hpp:76: warning: Member iter_value_t (typedef) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/access.hpp:151: warning: Member is_indirectly_movable_v (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/access.hpp:155: warning: Member is_nothrow_indirectly_movable_v (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/access.hpp:276: warning: Member is_indirectly_swappable_v (variable) of group group-iterator is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/access.hpp:280: warning: Member is_nothrow_indirectly_swappable_v (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/access.hpp:701: warning: Member sentinel_t (typedef) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/access.hpp:69: warning: Member _decay_copy(T) noexcept (function) of namespace ranges::detail is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/access.hpp:62: warning: Member _borrowed_range (variable) of namespace ranges::detail is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/access.hpp:66: warning: Member _borrowed_range< T & > (variable) of namespace ranges::detail is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/primitives.hpp:33: warning: Member disable_sized_range (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/traits.hpp:64: warning: Member iter_rvalue_reference_t (typedef) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/traits.hpp:67: warning: Member iter_common_reference_t (typedef) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/traits.hpp:79: warning: Member iter_difference_t (typedef) of namespace ranges is not documented.
@@ -15731,20 +15725,6 @@
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/traits.hpp:73: warning: Member range_common_reference_t (typedef) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/traits.hpp:76: warning: Member range_size_t (typedef) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/traits.hpp:101: warning: Member range_common_iterator_t (typedef) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric/adjacent_difference.hpp:72: warning: Member adjacent_difference_result (typedef) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric/adjacent_difference.hpp:44: warning: Member template(typename I, typename O, typename BOp, typename P)(concept(differenceable_)(I (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric/adjacent_difference.hpp:45: warning: Member BOp (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric/adjacent_difference.hpp:45: warning: Member P (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric/adjacent_difference.hpp:55: warning: Member output_iterator< O, invoke_result_t< BOp &, invoke_result_t< P &, iter_value_t< I > >, invoke_result_t< P &, iter_value_t< I > > > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric/adjacent_difference.hpp:66: warning: Member differenceable (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric/inner_product.hpp:40: warning: Member template(typename I1, typename I2, typename T, typename BOp1, typename BOp2, typename P1, typename P2)(concept(inner_product_constraints_)(I1 (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric/inner_product.hpp:42: warning: Member BOp1 (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric/inner_product.hpp:42: warning: Member BOp2 (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric/inner_product.hpp:55: warning: Member assignable_from< T &, invoke_result_t< BOp1 &, T, invoke_result_t< BOp2 &, invoke_result_t< P1 &, iter_value_t< I1 > >, invoke_result_t< P2 &, iter_value_t< I2 > > > > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/numeric/inner_product.hpp:70: warning: Member inner_product_constraints (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/dangling.hpp:55: warning: Member borrowed_iterator_t (typedef) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/dangling.hpp:88: warning: Member instead (typedef) of namespace ranges::cpp20 is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/primitives.hpp:33: warning: Member disable_sized_range (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range_for.hpp:47: warning: Member RANGES_FOR(VAR_DECL,...) (macro definition) of file range_for.hpp is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range_fwd.hpp:497: warning: Member uncvref_t (typedef) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range_fwd.hpp:521: warning: Member is_finite (typedef) of namespace ranges is not documented.
@@ -15767,74 +15747,16 @@
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range_fwd.hpp:607: warning: Member adjacent_remove_if_view (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range_fwd.hpp:653: warning: Member cycled_view (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range_fwd.hpp:761: warning: Member reverse_view (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/any_view.hpp:659: warning: Member template(typename Rng)() any_view(Rng &&) -> any_view< range_reference_t< Rng >, get_categories< Rng >()> (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/span.hpp:378: warning: Member as_bytes(span< T, N > s) noexcept (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/span.hpp:383: warning: Member as_writeable_bytes(span< T, N > s) noexcept (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/span.hpp:389: warning: Member make_span(ElementType *ptr, detail::span_index_t cnt) noexcept (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/span.hpp:395: warning: Member make_span(ElementType *first, ElementType *last) noexcept (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/span.hpp:400: warning: Member template(typename Rng)(AND(range_cardinality< Rng > (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/span.hpp:46: warning: Member dynamic_extent (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/span.hpp:362: warning: Member enable_borrowed_range< span< T, N > > (variable) of namespace ranges is not documented.
-all.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/all.hpp...
-Generating docs for file 3rd_party/range-v3/concepts/compare.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/compare.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/experimental/utility/generator.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/experimental/view/shared.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/functional.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/functional/arithmetic.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/functional/bind.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/functional/bind_back.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/functional/comparisons.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/functional/compose.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/functional/identity.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/functional/invoke.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/functional/not_fn.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/functional/on.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/functional/overload.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/functional/pipeable.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/functional/reference_wrapper.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/iterator/access.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/range/access.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/iterator/basic_iterator.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/iterator/common_iterator.hpp...
-Generating docs for file 3rd_party/range-v3/concepts/concepts.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/action/concepts.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/functional/concepts.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/iterator/concepts.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/range/concepts.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/iterator/counted_iterator.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/iterator/default_sentinel.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/iterator/diffmax_t.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/iterator/insert_iterators.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/iterator/move_iterators.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/iterator/operations.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/range/operations.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/iterator/reverse_iterator.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/iterator/stream_iterators.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/iterator/traits.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/range/traits.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/iterator/unreachable_sentinel.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/iterator_range.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/numeric.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/numeric/accumulate.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/numeric/adjacent_difference.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/numeric/inner_product.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/range.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/range/conversion.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/range/dangling.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/range/primitives.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/detail/range_access.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/range_for.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/range_fwd.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/span.hpp...
-Generating /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/any.hpp:230: warning: Member RANGES_DEPRECATED("ranges::any will be going away in the not-too-distant future. " "We suggest you use std::any or boost::any instead (or simply steal " "this header and maintain it yourself).") any (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/any.hpp:230: warning: Member RANGES_DEPRECATED("ranges::any will be going away in the not-too-distant future. " "We suggest you use std::any or boost::any instead (or simply steal " "this header and maintain it yourself).") any (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/basic_iterator.hpp:741: warning: Member template(typename Cur, typename Cur2)() const expr bool operator (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/box.hpp:329: warning: Member get(box< Element, Tag, BC > &b) noexcept (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/box.hpp:334: warning: Member get(box< Element, Tag, BC > const &b) noexcept (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/box.hpp:339: warning: Member get(box< Element, Tag, BC > &&b) noexcept (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/box.hpp:345: warning: Member get(box< Element, meta::size_t< I >, BC > &b) noexcept (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/box.hpp:350: warning: Member get(box< Element, meta::size_t< I >, BC > const &b) noexcept (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/box.hpp:356: warning: Member get(box< Element, meta::size_t< I >, BC > &&b) noexcept (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/common_iterator.hpp:251: warning: Member template(typename I1, typename I2, typename S1, typename S2)(AND sentinel_for< S2 (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/iterator/common_iterator.hpp:252: warning: Member AND(!equality_comparable_with< I1, I2 >)) bool operator (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/common_tuple.hpp:267: warning: Member LOGICAL_OP(OP, CONCEPT) (macro definition) of file common_tuple.hpp is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/common_tuple.hpp:490: warning: Member LOGICAL_OP(OP, CONCEPT, RET) (macro definition) of file common_tuple.hpp is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/common_tuple.hpp:454: warning: Member template(typename F1, typename S1, typename F2, typename S2)(AND equality_comparable_with< S1 (function) of namespace ranges is not documented.
@@ -15851,6 +15773,14 @@
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/copy.hpp:38: warning: Member copy_result (typedef) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/copy.hpp:47: warning: Member copy(I first, S last, O out) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/copy.hpp:59: warning: Member copy(Rng &&rng, O out) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/dangling.hpp:55: warning: Member borrowed_iterator_t (typedef) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/range/dangling.hpp:88: warning: Member instead (typedef) of namespace ranges::cpp20 is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/invoke.hpp:38: warning: Member RANGES_CONSTEXPR_INVOKE (macro definition) of file invoke.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/invoke.hpp:86: warning: Member is_reference_wrapper (typedef) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/invoke.hpp:174: warning: Member invoke_result_t (typedef) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/invoke.hpp:82: warning: Member is_reference_wrapper_v (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/invoke.hpp:207: warning: Member is_invocable_v (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/functional/invoke.hpp:211: warning: Member is_nothrow_invocable_v (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/memory.hpp:209: warning: Member template(typename I)() iterator_wrapper< I > iter_ref(I &i) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/memory.hpp:247: warning: Member make_raw_buffer(Val *val) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/optional.hpp:53: warning: Member nullopt (variable) of namespace ranges is not documented.
@@ -15862,31 +15792,76 @@
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/scope_exit.hpp:88: warning: Member make_scope_exit(Fun &&fun) noexcept(noexcept(ScopeExit(ScopeExit((Fun &&) fun)))) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/semiregular_box.hpp:308: warning: Member semiregular_box_t (typedef) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/semiregular_box.hpp:311: warning: Member semiregular_box_ref_or_val_t (typedef) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/swap.hpp:27: warning: Member CPP_CXX14_CONSTEXPR (macro definition) of file swap.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/swap.hpp:39: warning: Member CPP_CXX_INLINE_VARIABLES (macro definition) of file swap.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/swap.hpp:50: warning: Member CPP_INLINE_VAR (macro definition) of file swap.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/swap.hpp:51: warning: Member CPP_INLINE_VARIABLE(type, name) (macro definition) of file swap.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/swap.hpp:65: warning: Member CPP_DEFINE_CPO(type, name) (macro definition) of file swap.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/swap.hpp:103: warning: Member CPP_DIAGNOSTIC_PUSH (macro definition) of file swap.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/swap.hpp:104: warning: Member CPP_DIAGNOSTIC_POP (macro definition) of file swap.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/swap.hpp:105: warning: Member CPP_DIAGNOSTIC_IGNORE_INIT_LIST_LIFETIME (macro definition) of file swap.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/swap.hpp:106: warning: Member CPP_DIAGNOSTIC_IGNORE_FLOAT_EQUAL (macro definition) of file swap.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/swap.hpp:107: warning: Member CPP_DIAGNOSTIC_IGNORE_CPP2A_COMPAT (macro definition) of file swap.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/concepts/swap.hpp:149: warning: Member exchange(T &t, U &&u) noexcept(std::is_nothrow_move_constructible< T >::value &&std::is_nothrow_assignable< T &, U >::value) (function) of namespace concepts is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/swap.hpp:30: warning: Member is_swappable (typedef) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/swap.hpp:33: warning: Member is_nothrow_swappable (typedef) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/swap.hpp:36: warning: Member is_swappable_with (typedef) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/swap.hpp:39: warning: Member is_nothrow_swappable_with (typedef) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/tagged_pair.hpp:171: warning: Member RANGES_DEFINE_TAG_SPECIFIER(NAME) (macro definition) of file tagged_pair.hpp is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/tagged_pair.hpp:157: warning: Member deprecated (typedef) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/tagged_pair.hpp:164: warning: Member make_tagged_pair(T1 &&t1, T2 &&t2) noexcept(std::is_nothrow_constructible< R, T1, T2 >::value) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/tagged_tuple.hpp:35: warning: Member make_tagged_tuple(Ts &&... ts) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/utility/tuple_algorithm.hpp:37: warning: Member tuple_indices_t (typedef) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/version.hpp:17: warning: Member RANGE_V3_MAJOR (macro definition) of file version.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/version.hpp:18: warning: Member RANGE_V3_MINOR (macro definition) of file version.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/version.hpp:19: warning: Member RANGE_V3_PATCHLEVEL (macro definition) of file version.hpp is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/version.hpp:21: warning: Member RANGE_V3_VERSION (macro definition) of file version.hpp is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/adaptor.hpp:462: warning: Member adaptor_cursor_t (typedef) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/adaptor.hpp:466: warning: Member adaptor_sentinel_t (typedef) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/adjacent_filter.hpp:146: warning: Member template(typename Rng, typename Fun)() adjacent_filter_view(Rng && (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/adjacent_remove_if.hpp:50: warning: Member adjacent_remove_if(I first, S last, Pred pred={}, Proj proj={}) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/adjacent_remove_if.hpp:77: warning: Member adjacent_remove_if(Rng &&rng, Pred pred, Proj proj={}) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/adjacent_filter.hpp:146: warning: Member template(typename Rng, typename Fun)() adjacent_filter_view(Rng && (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/any_view.hpp:659: warning: Member template(typename Rng)() any_view(Rng &&) -> any_view< range_reference_t< Rng >, get_categories< Rng >()> (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/cache1.hpp:168: warning: Member cache1_view(Rng &&) -> cache1_view< views::all_t< Rng > > (function) of namespace ranges is not documented.
+/range/v3/numeric/accumulate.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/numeric/adjacent_difference.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/numeric/inner_product.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/range.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/iterator/access.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/range/access.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/range/conversion.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/iterator/operations.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/range/operations.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/range/primitives.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/iterator/traits.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/range/traits.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/detail/range_access.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/range_for.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/range_fwd.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/utility.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/utility/any.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/iterator/basic_iterator.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/utility/box.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/iterator/common_iterator.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/utility/common_tuple.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/utility/common_type.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/utility/compressed_pair.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/copy.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/utility/copy.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/iterator/counted_iterator.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/range/dangling.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/utility/get.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/utility/in_place.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/functional/invoke.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/iterator.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/utility/memory.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/utility/optional.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/utility/random.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/utility/scope_exit.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/utility/semiregular.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/utility/semiregular_box.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/utility/tagged_pair.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/utility/tagged_tuple.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/utility/tuple_algorithm.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/utility/variant.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/version.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/adaptor.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/addressof.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/adjacent_filter.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/action/adjacent_remove_if.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/adjacent_remove_if.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/adjacent_remove_if.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/all.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/all.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/any_view.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/bounded.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/c_str.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/cache1.h/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/cache1.hpp:168: warning: Member cache1_view(Rng &&) -> cache1_view< views::all_t< Rng > > (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/cartesian_product.hpp:91: warning: Member template(typename IsConst, typename... Views)(concept(cartesian_produce_view_can_size_)(IsConst (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/cartesian_product.hpp:446: warning: Member cartesian_product_view(Rng &&...) -> cartesian_product_view< views::all_t< Rng >... > (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/cartesian_product.hpp:86: warning: Member cartesian_produce_view_can_const (variable) of namespace ranges is not documented.
@@ -15898,6 +15873,9 @@
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/chunk.hpp:420: warning: Member chunk_view(Rng &&, range_difference_t< Rng >) -> chunk_view< views::all_t< Rng > > (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/chunk.hpp:415: warning: Member enable_borrowed_range< chunk_view< Rng > > (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/adjacent_filter.hpp:146: warning: Member template(typename Rng, typename Fun)() adjacent_filter_view(Rng && (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/any_view.hpp:659: warning: Member template(typename Rng)() any_view(Rng &&) -> any_view< range_reference_t< Rng >, get_categories< Rng >()> (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/common.hpp:224: warning: Member template(typename Rng)() using common_view (function) of namespace ranges::cpp20 is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/common.hpp:141: warning: Member enable_borrowed_range< common_view< Rng, B > > (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/concat.hpp:394: warning: Member concat_view(Rng &&...) -> concat_view< views::all_t< Rng >... > (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/const.hpp:115: warning: Member const_view(Rng &&) -> const_view< views::all_t< Rng > > (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/const.hpp:110: warning: Member enable_borrowed_range< const_view< Rng > > (variable) of namespace ranges is not documented.
@@ -15906,10 +15884,18 @@
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/cycle.hpp:214: warning: Member cycled_view(Rng &&) -> cycled_view< views::all_t< Rng > > (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/delimit.hpp:80: warning: Member template(typename Rng, typename Val)() delimit_view(Rng && (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/delimit.hpp:76: warning: Member enable_borrowed_range< delimit_view< Rng, Val > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/drop.hpp:136: warning: Member drop_view(Rng &&, range_difference_t< Rng >) -> drop_view< views::all_t< Rng > > (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/common.hpp:224: warning: Member template(typename Rng)() using common_view (function) of namespace ranges::cpp20 is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/drop.hpp:131: warning: Member enable_borrowed_range< drop_view< Rng > > (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/drop_exactly.hpp:128: warning: Member drop_exactly_view(Rng &&, range_difference_t< Rng >) -> drop_exactly_view< views::all_t< Rng > > (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/drop_exactly.hpp:123: warning: Member enable_borrowed_range< drop_exactly_view< Rng > > (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/drop_last.hpp:334: warning: Member drop_last_view(Rng &&, range_difference_t< Rng >) -> drop_last_view< views::all_t< Rng > > (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/drop_last.hpp:329: warning: Member enable_borrowed_range< drop_last_view< Rng, T > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/drop_while.hpp:156: warning: Member drop_while_view (typedef) of namespace ranges::cpp20 is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/adjacent_filter.hpp:146: warning: Member template(typename Rng, typename Fun)() adjacent_filter_view(Rng && (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/drop_while.hpp:153: warning: Member template(typename Rng, typename Pred)(AND input_range< Rng > AND indirect_unary_predicate< Pred (function) of namespace ranges::cpp20 is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/drop_while.hpp:81: warning: Member enable_borrowed_range< drop_while_view< Rng, Pred > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/drop_while.hpp:92: warning: Member disable_sized_range< drop_while_view< Rng, Pred > > (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/empty.hpp:59: warning: Member enable_borrowed_range< empty_view< T > > (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/empty.hpp:64: warning: Member empty (variable) of namespace ranges::views is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/exclusive_scan.hpp:34: warning: Member template(typename Rng, typename T, typename Fun)(concept(exclusive_scan_constraints_)(Rng (function) of namespace ranges is not documented.
@@ -15930,61 +15916,7 @@
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/generate_n.hpp:37: warning: Member generate_n_result (typedef) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/generate_n.hpp:45: warning: Member generate_n(O first, iter_difference_t< O > n, F fun) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/adjacent_filter.hpp:146: warning: Member template(typename Rng, typename Fun)() adjacent_filter_view(Rng && (function) of namespace ranges is not documented.
-docs for file 3rd_party/range-v3/range/v3/utility.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/utility/any.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/utility/box.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/utility/common_tuple.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/utility/common_type.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/utility/compressed_pair.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/copy.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/utility/copy.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/utility/get.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/utility/in_place.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/iterator.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/utility/memory.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/utility/optional.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/utility/random.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/utility/scope_exit.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/utility/semiregular.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/utility/semiregular_box.hpp...
-Generating docs for file 3rd_party/range-v3/concepts/swap.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/utility/swap.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/utility/tagged_pair.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/utility/tagged_tuple.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/utility/tuple_algorithm.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/utility/variant.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/adaptor.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/addressof.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/adjacent_filter.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/any_view.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/bounded.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/c_str.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/cache1.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/cartesian_product.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/chunk.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/chunk_by.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/concat.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/const.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/counted.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/cycle.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/delimit.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/drop_exactly.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/drop_last.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/empty.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/enumerate.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/exclusive_scan.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/facade.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/filter.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/for_each.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/for_each.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/generate.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/generate.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/generate_n.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/generate_n.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/getlines.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/group_by.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/indices.hpp...
-Generating docs for file 3rd_party/range-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/indirect.hpp:123: warning: Member indirect_view(Rng &&) -> indirect_view< views::all_t< Rng > > (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/indirect.hpp:123: warning: Member indirect_view(Rng &&) -> indirect_view< views::all_t< Rng > > (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/indirect.hpp:118: warning: Member enable_borrowed_range< indirect_view< Rng > > (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/interface.hpp:36: warning: Member CPP_template_gcc_workaround (macro definition) of file interface.hpp is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/intersperse.hpp:213: warning: Member intersperse_view(Rng &&, range_value_t< Rng >) -> intersperse_view< views::all_t< Rng > > (function) of namespace ranges is not documented.
@@ -15993,6 +15925,10 @@
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/iota.hpp:459: warning: Member enable_borrowed_range< iota_view< From, To > > (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/istream.hpp:116: warning: Member basic_istream_view (typedef) of namespace ranges::cpp20 is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/istream.hpp:102: warning: Member template(typename Val)(AND default_constructible< Val >) inline istream_view< Val > istream(std (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/join.hpp:39: warning: Member join_action_value_t_ (typedef) of namespace ranges::actions is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/any_view.hpp:659: warning: Member template(typename Rng)() any_view(Rng &&) -> any_view< range_reference_t< Rng >, get_categories< Rng >()> (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/join.hpp:623: warning: Member template(typename Rng, typename ValRng)() explicit join_with_view(Rng && (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/common.hpp:224: warning: Member template(typename Rng)() using common_view (function) of namespace ranges::cpp20 is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/map.hpp:130: warning: Member enable_borrowed_range< keys_range_view< Rng > > (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/map.hpp:133: warning: Member enable_borrowed_range< values_view< Rng > > (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/move.hpp:37: warning: Member move_result (typedef) of namespace ranges is not documented.
@@ -16009,10 +15945,75 @@
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/adjacent_filter.hpp:146: warning: Member template(typename Rng, typename Fun)() adjacent_filter_view(Rng && (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/ref.hpp:87: warning: Member template(typename R)() ref_view(R &) -> ref_view< R > (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/ref.hpp:35: warning: Member enable_borrowed_range< ref_view< Rng > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/replace.hpp:43: warning: Member replace(I first, S last, T1 const &old_value, T2 const &new_value, P proj={}) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/remove.hpp:44: warning: Member remove(I first, S last, T const &val, P proj=P{}) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/remove.hpp:66: warning: Member remove(Rng &&rng, T const &val, P proj=P{}) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/remove_if.hpp:44: warning: Member remove_if(I first, S last, C pred, P proj=P{}) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/remove_if.hpp:65: warning: Member remove_if(Rng &&rng, C pred, P proj=P{}) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/remove_if.hpp:141: warning: Member template(typename Rng, typename Pred)() remove_if_view(Rng && (function) of namespace ranges is not documented.
+pp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/cartesian_product.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/chunk.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/chunk_by.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/common.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/concat.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/const.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/counted.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/cycle.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/delimit.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/action/drop.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/drop.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/drop_exactly.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/drop_last.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/action/drop_while.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/drop_while.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/empty.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/enumerate.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/exclusive_scan.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/facade.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/filter.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/for_each.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/for_each.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/generate.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/generate.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/generate_n.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/generate_n.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/getlines.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/group_by.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/indices.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/functional/indirect.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/indirect.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/interface.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/intersperse.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/numeric/iota.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/iota.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/istream.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/action/join.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/join.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/linear_distribute.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/map.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/move.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/utility/move.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/move.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/numeric/partial_sum.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/partial_sum.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/ref.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/action/remove.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/remove.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/remove.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/action/remove_if.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/remove_if.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/remove_if.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/repeat.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/repeat_n.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/rep/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/replace.hpp:43: warning: Member replace(I first, S last, T1 const &old_value, T2 const &new_value, P proj={}) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/replace.hpp:57: warning: Member replace(Rng &&rng, T1 const &old_value, T2 const &new_value, P proj={}) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/replace_if.hpp:43: warning: Member replace_if(I first, S last, C pred, T const &new_value, P proj=P{}) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/replace_if.hpp:57: warning: Member replace_if(Rng &&rng, C pred, T const &new_value, P proj=P{}) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/reverse.hpp:65: warning: Member reverse(I first, S end_) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/reverse.hpp:144: warning: Member reverse_view(Rng &&) -> reverse_view< views::all_t< Rng > > (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/reverse.hpp:148: warning: Member reverse_view(reverse_view< Rng >) -> reverse_view< reverse_view< Rng > > (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/common.hpp:224: warning: Member template(typename Rng)() using common_view (function) of namespace ranges::cpp20 is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/reverse.hpp:139: warning: Member enable_borrowed_range< reverse_view< Rng > > (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/sample.hpp:39: warning: Member sample_result (typedef) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/sample.hpp:85: warning: Member AND(random_access_iterator< O >||forward_iterator< I >||sized_sentinel_for< S, I >)) sample_result< I (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/sample.hpp:88: warning: Member sample(I first, S last, O out, iter_difference_t< O > const n, Gen &&gen=detail::get_random_engine()) (function) of namespace ranges is not documented.
@@ -16041,8 +16042,27 @@
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/set_algorithm.hpp:591: warning: Member set_union_view (typedef) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/set_algorithm.hpp:825: warning: Member set_symmetric_difference_view (typedef) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/single.hpp:103: warning: Member single_view(T &&) -> single_view< detail::decay_t< T > > (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/slice.hpp:188: warning: Member slice_view(Rng &&, range_difference_t< Rng >, range_difference_t< Rng >) -> slice_view< views::all_t< Rng > > (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/slice.hpp:183: warning: Member enable_borrowed_range< slice_view< Rng > > (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/sliding.hpp:367: warning: Member sliding_view(Rng &&, range_difference_t< Rng >) -> sliding_view< views::all_t< Rng > > (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/sliding.hpp:362: warning: Member enable_borrowed_range< sliding_view< Rng > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/any_view.hpp:659: warning: Member template(typename Rng)() any_view(Rng &&) -> any_view< range_reference_t< Rng >, get_categories< Rng >()> (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/span.hpp:378: warning: Member as_bytes(span< T, N > s) noexcept (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/span.hpp:383: warning: Member as_writeable_bytes(span< T, N > s) noexcept (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/span.hpp:389: warning: Member make_span(ElementType *ptr, detail::span_index_t cnt) noexcept (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/span.hpp:395: warning: Member make_span(ElementType *first, ElementType *last) noexcept (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/span.hpp:400: warning: Member template(typename Rng)(AND(range_cardinality< Rng > (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/span.hpp:46: warning: Member dynamic_extent (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/span.hpp:362: warning: Member enable_borrowed_range< span< T, N > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/split.hpp:620: warning: Member template(typename R, typename P)(AND forward_range< P > AND viewable_range< R > AND viewable_range< P > AND indirectly_comparable< iterator_t< R > (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/split.hpp:628: warning: Member template(typename R)() split_view(R && (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/split.hpp:686: warning: Member template(typename Rng, typename Pattern)(AND forward_range< Pattern > AND view_< Rng > AND view_< Pattern > AND indirectly_comparable< iterator_t< Rng > (function) of namespace ranges::cpp20 is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/split.hpp:620: warning: Member iterator_t< P > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/split.hpp:623: warning: Member AND(forward_range< R >||detail::tiny_range< P >)) split_view(R && (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/split.hpp:686: warning: Member iterator_t< Pattern > (variable) of namespace ranges::cpp20 is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/split.hpp:692: warning: Member AND(forward_range< Rng >||ranges::detail::tiny_range< Pattern >)) using split_view (variable) of namespace ranges::cpp20 is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/adjacent_filter.hpp:146: warning: Member template(typename Rng, typename Fun)() adjacent_filter_view(Rng && (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/stride.hpp:301: warning: Member stride_view(Rng &&, range_difference_t< Rng >) -> stride_view< views::all_t< Rng > > (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/subrange.hpp:40: warning: Member subrange_kind (enumeration) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/subrange.hpp:371: warning: Member subrange(I, S) -> subrange< I, S > (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/subrange.hpp:376: warning: Member subrange(I, S, detail::iter_size_t< I >) -> subrange< I, S, subrange_kind::sized > (function) of namespace ranges is not documented.
@@ -16053,11 +16073,37 @@
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/tail.hpp:39: warning: Member prev_or_zero_(T n) (function) of namespace ranges::detail is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/any_view.hpp:659: warning: Member template(typename Rng)() any_view(Rng &&) -> any_view< range_reference_t< Rng >, get_categories< Rng >()> (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/tail.hpp:110: warning: Member enable_borrowed_range< tail_view< Rng > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/take.hpp:278: warning: Member take_view(Rng &&, range_difference_t< Rng >) -> take_view< views::all_t< Rng > > (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/common.hpp:224: warning: Member template(typename Rng)() using common_view (function) of namespace ranges::cpp20 is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/take.hpp:273: warning: Member enable_borrowed_range< take_view< Rng > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/take_while.hpp:200: warning: Member take_while_view (typedef) of namespace ranges::cpp20 is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/adjacent_filter.hpp:146: warning: Member template(typename Rng, typename Fun)() adjacent_filter_view(Rng && (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/take_while.hpp:197: warning: Member template(typename Rng, typename Pred)(AND input_range< Rng > AND predicate< Pred & (function) of namespace ranges::cpp20 is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/tokenize.hpp:94: warning: Member template(typename Rng, typename Regex, typename SubMatchRange)(AND copy_constructible< SubMatchRange >) tokenize_view(Rng && (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/tokenize.hpp:96: warning: Member Regex (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/transform.hpp:41: warning: Member unary_transform_result (typedef) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/transform.hpp:44: warning: Member binary_transform_result (typedef) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/transform.hpp:55: warning: Member transform(I first, S last, O out, F fun, P proj=P{}) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/transform.hpp:68: warning: Member transform(Rng &&rng, O out, F fun, P proj=P{}) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/transform.hpp:91: warning: Member transform(I0 begin0, S0 end0, I1 begin1, S1 end1, O out, F fun, P0 proj0=P0{}, P1 proj1=P1{}) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/transform.hpp:122: warning: Member transform(Rng0 &&rng0, Rng1 &&rng1, O out, F fun, P0 proj0=P0{}, P1 proj1=P1{}) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/transform.hpp:150: warning: Member RANGES_DEPRECATED("Use the variant of ranges::transform that takes an upper bound " "for both input ranges") binary_transform_result< I0 (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/transform.hpp:154: warning: Member transform(I0 begin0, S0 end0, I1 begin1, O out, F fun, P0 proj0=P0{}, P1 proj1=P1{}) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/transform.hpp:190: warning: Member transform(Rng0 &&rng0, I1Ref &&begin1, O out, F fun, P0 proj0=P0{}, P1 proj1=P1{}) (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/transform.hpp:186: warning: Member uncvref_t< I1Ref > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/adjacent_filter.hpp:146: warning: Member template(typename Rng, typename Fun)() adjacent_filter_view(Rng && (function) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/transform.hpp:498: warning: Member template(typename Rng, typename Fun)(concept(transformable_range_)(Rng (function) of namespace ranges::views is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/transform.hpp:500: warning: Member AND(!std::is_void< indirect_result_t< Fun &, iterator_t< Rng > > >::value)) (function) of namespace ranges::views is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/transform.hpp:513: warning: Member template(typename Rng1, typename Rng2, typename Fun)(concept(transformable_ranges_)(Rng1 (function) of namespace ranges::views is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/transform.hpp:515: warning: Member AND(!std::is_void< indirect_result_t< Fun &, iterator_t< Rng1 >, iterator_t< Rng2 > > >::value)) (function) of namespace ranges::views is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/transform.hpp:499: warning: Member Fun (variable) of namespace ranges::views is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/transform.hpp:506: warning: Member transformable_range (variable) of namespace ranges::views is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/transform.hpp:514: warning: Member Rng2 (variable) of namespace ranges::views is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/transform.hpp:522: warning: Member transformable_ranges (variable) of namespace ranges::views is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/trim.hpp:96: warning: Member trim_view(Rng &&, Pred) -> trim_view< views::all_t< Rng >, Pred > (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/trim.hpp:91: warning: Member enable_borrowed_range< trim_view< Rng, Pred > > (variable) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/trim.hpp:101: warning: Member disable_sized_range< trim_view< Rng, Pred > > (variable) of namespace ranges is not documented.
+/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/algorithm/unique.hpp:52: warning: Member unique(I first, S last, C pred=C{}, P proj=P{}) (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/span.hpp:400: warning: Member template(typename Rng)(AND(range_cardinality< Rng > (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/view.hpp:76: warning: Member template(typename ViewFn, typename Rng)(concept(invocable_view_closure_)(ViewFn (function) of namespace ranges is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/view.hpp:89: warning: Member simple_view() noexcept (function) of namespace ranges is not documented.
@@ -16126,16 +16172,6 @@
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath/src/trigo.cpp:390: warning: Member CalcArcCenter(const VECTOR2D &aStart, const VECTOR2D &aMid, const VECTOR2D &aEnd) (function) of file trigo.cpp is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath/src/trigo.cpp:546: warning: Member CalcArcCenter(const wxPoint &aStart, const wxPoint &aMid, const wxPoint &aEnd) (function) of file trigo.cpp is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath/include/trigo.h:206: warning: End of list marker found without any preceding list items
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/any_view.hpp:659: warning: Member template(typename Rng)() any_view(Rng &&) -> any_view< range_reference_t< Rng >, get_categories< Rng >()> (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/common.hpp:224: warning: Member template(typename Rng)() using common_view (function) of namespace ranges::cpp20 is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/view/common.hpp:141: warning: Member enable_borrowed_range< common_view< Rng, B > > (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/action.hpp:61: warning: Member template(typename ActionFn, typename Rng)(concept(invocable_action_closure_)(ActionFn (function) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/action.hpp:62: warning: Member Rng (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/action/action.hpp:68: warning: Member invocable_action_closure (variable) of namespace ranges is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/version.hpp:17: warning: Member RANGE_V3_MAJOR (macro definition) of file version.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/version.hpp:18: warning: Member RANGE_V3_MINOR (macro definition) of file version.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/version.hpp:19: warning: Member RANGE_V3_PATCHLEVEL (macro definition) of file version.hpp is not documented.
-/build/reproducible-path/horizon-eda-2.4.0/3rd_party/range-v3/range/v3/version.hpp:21: warning: Member RANGE_V3_VERSION (macro definition) of file version.hpp is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/CHANGELOG.md:343: warning: Illegal command @rroohhh found as part of a <a>..</a> block
 /build/reproducible-path/horizon-eda-2.4.0/CHANGELOG.md:351: warning: Illegal command @guserav found as part of a <a>..</a> block
 /build/reproducible-path/horizon-eda-2.4.0/CHANGELOG.md:371: warning: Illegal command @kamtar found as part of a <a>..</a> block
@@ -16877,39 +16913,44 @@
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath/include/math/box2.h:431: warning: Member Distance(const Vec &aP) const (function) of class BOX2 is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath/include/math/box2.h:482: warning: Member operator==(const BOX2< Vec > &aOther) const (function) of class BOX2 is not documented.
 /build/reproducible-path/horizon-eda-2.4.0/3rd_party/router/kimath/include/math/box2.h:491: warning: Member operator!=(const BOX2< Vec > &aOther) const (function) of class BOX2 is not documented.
-v3/range/v3/functional/indirect.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/indirect.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/interface.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/intersperse.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/numeric/iota.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/iota.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/istream.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/linear_distribute.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/map.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/move.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/utility/move.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/move.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/numeric/partial_sum.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/partial_sum.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/ref.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/repeat.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/repeat_n.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/algorithm/replace.hpp...
+lace.hpp...
 Generating docs for file 3rd_party/range-v3/range/v3/view/replace.hpp...
 Generating docs for file 3rd_party/range-v3/range/v3/algorithm/replace_if.hpp...
 Generating docs for file 3rd_party/range-v3/range/v3/view/replace_if.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/action/reverse.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/reverse.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/reverse.hpp...
 Generating docs for file 3rd_party/range-v3/range/v3/algorithm/sample.hpp...
 Generating docs for file 3rd_party/range-v3/range/v3/view/sample.hpp...
 Generating docs for file 3rd_party/range-v3/range/v3/algorithm/set_algorithm.hpp...
 Generating docs for file 3rd_party/range-v3/range/v3/view/set_algorithm.hpp...
 Generating docs for file 3rd_party/range-v3/range/v3/view/single.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/action/slice.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/slice.hpp...
 Generating docs for file 3rd_party/range-v3/range/v3/view/sliding.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/span.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/action/split.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/split.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/action/split_when.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/split_when.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/action/stride.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/stride.hpp...
 Generating docs for file 3rd_party/range-v3/range/v3/view/subrange.hpp...
 Generating docs for file 3rd_party/range-v3/range/v3/view/tail.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/action/take.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/take.hpp...
 Generating docs for file 3rd_party/range-v3/range/v3/view/take_exactly.hpp...
 Generating docs for file 3rd_party/range-v3/range/v3/view/take_last.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/action/take_while.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/take_while.hpp...
 Generating docs for file 3rd_party/range-v3/range/v3/view/tokenize.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/action/transform.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/transform.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/transform.hpp...
 Generating docs for file 3rd_party/range-v3/range/v3/view/trim.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/action/unique.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/algorithm/unique.hpp...
+Generating docs for file 3rd_party/range-v3/range/v3/view/unique.hpp...
 Generating docs for file 3rd_party/range-v3/range/v3/view.hpp...
 Generating docs for file 3rd_party/range-v3/range/v3/view/view.hpp...
 Generating docs for file 3rd_party/range-v3/range/v3/view/zip.hpp...
@@ -16919,11 +16960,6 @@
 Generating docs for file 3rd_party/router/kimath/src/convert_basic_shapes_to_polygon.cpp...
 Generating docs for file 3rd_party/router/kimath/src/geometry/geometry_utils.cpp...
 Generating docs for file 3rd_party/router/kimath/src/trigo.cpp...
-Generating docs for file 3rd_party/range-v3/range/v3/view/common.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/core.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/action.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/action/action.hpp...
-Generating docs for file 3rd_party/range-v3/range/v3/version.hpp...
 Generating page documentation...
 Generating docs for page md_3rd_party_polypartition_LICENSE...
 Generating docs for page md_CHANGELOG...
@@ -47742,7 +47778,7 @@
  build/horizon.so
 make[2]: Leaving directory '/build/reproducible-path/horizon-eda-2.4.0'
 dh_auto_build
-	make -j3
+	make -j4
 make[2]: Entering directory '/build/reproducible-path/horizon-eda-2.4.0'
  build/obj/src/util/uuid.o
  build/obj/src/util/uuid_path.o
@@ -47752,6 +47788,7 @@
  build/obj/src/pool/pool_manager.o
  build/obj/src/pool/unit.o
  build/obj/src/pool/symbol.o
+ build/obj/src/pool/part.o
 In file included from /usr/include/c++/12/map:60,
                  from src/pool/pool_manager.hpp:3,
                  from src/pool/pool_manager.cpp:1:
@@ -47767,8 +47804,8 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/pool/part.o
  build/obj/src/common/common.o
+ build/obj/src/common/lut.o
 In file included from /usr/include/c++/12/map:60,
                  from 3rd_party/nlohmann/json_fwd.hpp:5,
                  from src/common/arc.hpp:3,
@@ -47778,6 +47815,16 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In file included from /usr/include/c++/12/map:60,
+                 from src/util/uuid_ptr.hpp:4,
+                 from src/pool/part.hpp:3,
+                 from src/pool/part.cpp:1:
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
+/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
+ 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/common/junction.o
+ build/obj/src/common/junction_util.o
 In file included from /usr/include/c++/12/vector:70,
                  from 3rd_party/nlohmann/json_fwd.hpp:8:
 /usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {long long int}; _Tp = long long int; _Alloc = std::allocator<long long int>]':
@@ -47793,18 +47840,8 @@
 /usr/include/c++/12/bits/vector.tcc:366:26: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int, std::allocator<long long int> > >' changed in GCC 7.1
   366 |         _M_realloc_insert(begin() + __n, std::move(__v));
       |         ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/common/lut.o
- build/obj/src/common/junction.o
- build/obj/src/common/junction_util.o
  build/obj/src/common/line.o
-In file included from /usr/include/c++/12/map:60,
-                 from src/util/uuid_ptr.hpp:4,
-                 from src/pool/part.hpp:3,
-                 from src/pool/part.cpp:1:
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
-/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
- 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/common/arc.o
 In file included from /usr/include/c++/12/vector:70,
                  from src/common/common.hpp:3,
                  from src/common/junction.hpp:3,
@@ -47822,30 +47859,30 @@
 /usr/include/c++/12/bits/vector.tcc:366:26: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int, std::allocator<long long int> > >' changed in GCC 7.1
   366 |         _M_realloc_insert(begin() + __n, std::move(__v));
       |         ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/common/arc.o
  build/obj/src/common/layer_provider.o
  build/obj/src/pool/gate.o
  build/obj/src/block/net.o
  build/obj/src/block/bus.o
  build/obj/src/block/block.o
+ build/obj/src/pool/entity.o
 In file included from /usr/include/c++/12/map:60,
                  from 3rd_party/nlohmann/json_fwd.hpp:5,
-                 from src/block/net.hpp:2,
-                 from src/block/net.cpp:1:
+                 from src/block/bus.hpp:2,
+                 from src/block/bus.cpp:1:
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In file included from /usr/include/c++/12/map:60,
                  from 3rd_party/nlohmann/json_fwd.hpp:5,
-                 from src/block/bus.hpp:2,
-                 from src/block/bus.cpp:1:
+                 from src/block/net.hpp:2,
+                 from src/block/net.cpp:1:
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/pool/entity.o
  build/obj/src/block/component.o
+ build/obj/src/block/block_instance.o
 In file included from /usr/include/c++/12/map:60,
                  from 3rd_party/nlohmann/json_fwd.hpp:5,
                  from src/pool/gate.hpp:2,
@@ -47855,7 +47892,8 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/block/block_instance.o
+ build/obj/src/block/bom.o
+ build/obj/src/block/bom_export_settings.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -47865,7 +47903,6 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/block/bom.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -47876,22 +47913,21 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/block/bom_export_settings.o
  build/obj/src/schematic/schematic.o
+ build/obj/src/schematic/sheet.o
 In file included from /usr/include/c++/12/map:60,
-                 from 3rd_party/nlohmann/json_fwd.hpp:5,
-                 from src/block/bus.hpp:2,
-                 from src/block/block.hpp:2,
-                 from src/block/block.cpp:1:
+                 from src/common/lut.hpp:3,
+                 from src/block/bom_export_settings.hpp:2,
+                 from src/block/bom_export_settings.cpp:1:
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/schematic/sheet.o
 In file included from /usr/include/c++/12/map:60,
-                 from src/common/lut.hpp:3,
-                 from src/block/bom_export_settings.hpp:2,
-                 from src/block/bom_export_settings.cpp:1:
+                 from 3rd_party/nlohmann/json_fwd.hpp:5,
+                 from src/block/bus.hpp:2,
+                 from src/block/block.hpp:2,
+                 from src/block/block.cpp:1:
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
@@ -47899,6 +47935,7 @@
  build/obj/src/common/text.o
  build/obj/src/schematic/schematic_junction.o
  build/obj/src/schematic/line_net.o
+ build/obj/src/schematic/net_label.o
 In file included from /usr/include/c++/12/vector:70,
                  from 3rd_party/nlohmann/json_fwd.hpp:8,
                  from src/schematic/sheet.hpp:3,
@@ -47946,14 +47983,6 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In file included from /usr/include/c++/12/map:60,
-                 from 3rd_party/nlohmann/json_fwd.hpp:5,
-                 from src/schematic/schematic.hpp:3,
-                 from src/schematic/schematic.cpp:1:
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
-/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
- 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::SchematicJunction>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::SchematicJunction> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SchematicJunction> >]':
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::SchematicJunction>, std::_Select1st<std::pair<const horizon::UUID, horizon::SchematicJunction> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::SchematicJunction> > >::const_iterator' changed in GCC 7.1
  2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
@@ -47967,12 +47996,23 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/schematic/bus_label.o
+ build/obj/src/schematic/bus_ripper.o
+In file included from /usr/include/c++/12/map:60,
+                 from 3rd_party/nlohmann/json_fwd.hpp:5,
+                 from src/schematic/schematic.hpp:3,
+                 from src/schematic/schematic.cpp:1:
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
+/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
+ 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In file included from /usr/include/c++/12/vector:70,
                  from 3rd_party/nlohmann/json_fwd.hpp:8:
 /usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {horizon::Coord<long long int>&, const char (&)[11]}; _Tp = horizon::Warning; _Alloc = std::allocator<horizon::Warning>]':
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Warning>::iterator' changed in GCC 7.1
   439 |       vector<_Tp, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~
+ build/obj/src/schematic/schematic_symbol.o
 /usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {horizon::Coord<long long int>&, const char (&)[16]}; _Tp = horizon::Warning; _Alloc = std::allocator<horizon::Warning>]':
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Warning>::iterator' changed in GCC 7.1
 /usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {horizon::Coord<long long int>&, const char (&)[12]}; _Tp = horizon::Warning; _Alloc = std::allocator<horizon::Warning>]':
@@ -48017,7 +48057,6 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Warning*, std::vector<horizon::Warning> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/schematic/net_label.o
 /usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const horizon::Coord<long long int>&, const char (&)[19]}; _Tp = horizon::Warning; _Alloc = std::allocator<horizon::Warning>]':
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Warning>::iterator' changed in GCC 7.1
   439 |       vector<_Tp, _Alloc>::
@@ -48026,7 +48065,8 @@
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Warning>::iterator' changed in GCC 7.1
 /usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const horizon::Coord<long long int>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&}; _Tp = horizon::Warning; _Alloc = std::allocator<horizon::Warning>]':
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Warning>::iterator' changed in GCC 7.1
- build/obj/src/schematic/bus_label.o
+ build/obj/src/schematic/schematic_block_symbol.o
+ build/obj/src/schematic/power_symbol.o
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::SchematicJunction>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::SchematicJunction> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SchematicJunction> >]':
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::SchematicJunction>, std::_Select1st<std::pair<const horizon::UUID, horizon::SchematicJunction> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::SchematicJunction> > >::const_iterator' changed in GCC 7.1
  2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
@@ -48083,10 +48123,6 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Warning*, std::vector<horizon::Warning> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/schematic/bus_ripper.o
- build/obj/src/schematic/schematic_symbol.o
- build/obj/src/schematic/schematic_block_symbol.o
- build/obj/src/schematic/power_symbol.o
  build/obj/src/schematic/schematic_rules.o
  build/obj/src/schematic/rule_connectivity.o
 In file included from /usr/include/c++/12/map:60,
@@ -48097,6 +48133,7 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/common/pdf_export_settings.o
 In file included from src/canvas/canvas_patch.hpp:2,
                  from src/rules/cache.hpp:2,
                  from src/schematic/schematic_rules.cpp:4:
@@ -48104,9 +48141,10 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/common/pdf_export_settings.o
  build/obj/src/pool/padstack.o
  build/obj/src/common/polygon.o
+ build/obj/src/util/polygon_arc_removal_proxy.o
+ build/obj/src/common/hole.o
 In file included from /usr/include/c++/12/map:60,
                  from 3rd_party/nlohmann/json_fwd.hpp:5,
                  from src/common/pdf_export_settings.hpp:2,
@@ -48115,7 +48153,6 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/util/polygon_arc_removal_proxy.o
 In file included from /usr/include/c++/12/vector:70,
                  from 3rd_party/nlohmann/json_fwd.hpp:8,
                  from src/common/polygon.hpp:3,
@@ -48126,7 +48163,6 @@
       |       ^~~~~~~~~~~~~~~~~~~
 /usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]':
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Polygon::Vertex>::iterator' changed in GCC 7.1
- build/obj/src/common/hole.o
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
     inlined from 'horizon::Polygon::Vertex* horizon::Polygon::append_vertex(const horizon::Coordi&)' at src/common/polygon.cpp:133:26:
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
@@ -48149,38 +48185,13 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In file included from /usr/include/c++/12/map:60,
-                 from src/common/lut.hpp:3,
-                 from src/common/common.hpp:8,
-                 from src/pool/padstack.hpp:2,
-                 from src/pool/padstack.cpp:1:
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::Shape>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::Shape> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Shape> >]':
-/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Shape>, std::_Select1st<std::pair<const horizon::UUID, horizon::Shape> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Shape> > >::const_iterator' changed in GCC 7.1
- 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const horizon::UUID&, const horizon::Shape&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::Shape>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::Shape> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Shape> >]':
-/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Shape>, std::_Select1st<std::pair<const horizon::UUID, horizon::Shape> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Shape> > >::const_iterator' changed in GCC 7.1
- 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In file included from /usr/include/c++/12/map:61:
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {const horizon::UUID&, const horizon::Shape&}; _Key = horizon::UUID; _Tp = horizon::Shape; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Shape> >]',
-    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {const horizon::UUID&, const horizon::Shape&}; _Key = horizon::UUID; _Tp = horizon::Shape; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Shape> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
-    inlined from 'void horizon::Padstack::expand_inner(unsigned int)' at src/pool/padstack.cpp:376:46:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Shape>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Shape>, std::_Select1st<std::pair<const horizon::UUID, horizon::Shape> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Shape> > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/common/shape.o
 In file included from /usr/include/c++/12/map:60,
                  from 3rd_party/nlohmann/json_fwd.hpp:5:
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
-/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
- 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 /usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {long long int}; _Tp = long long int; _Alloc = std::allocator<long long int>]':
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<long long int, std::allocator<long long int> >::iterator' changed in GCC 7.1
   439 |       vector<_Tp, _Alloc>::
@@ -48203,8 +48214,33 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/common/shape.o
+In file included from /usr/include/c++/12/map:60,
+                 from src/common/lut.hpp:3,
+                 from src/common/common.hpp:8,
+                 from src/pool/padstack.hpp:2,
+                 from src/pool/padstack.cpp:1:
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::Shape>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::Shape> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Shape> >]':
+/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Shape>, std::_Select1st<std::pair<const horizon::UUID, horizon::Shape> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Shape> > >::const_iterator' changed in GCC 7.1
+ 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const horizon::UUID&, const horizon::Shape&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::Shape>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::Shape> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Shape> >]':
+/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Shape>, std::_Select1st<std::pair<const horizon::UUID, horizon::Shape> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Shape> > >::const_iterator' changed in GCC 7.1
+ 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In file included from /usr/include/c++/12/map:61:
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {const horizon::UUID&, const horizon::Shape&}; _Key = horizon::UUID; _Tp = horizon::Shape; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Shape> >]',
+    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {const horizon::UUID&, const horizon::Shape&}; _Key = horizon::UUID; _Tp = horizon::Shape; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Shape> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
+    inlined from 'void horizon::Padstack::expand_inner(unsigned int)' at src/pool/padstack.cpp:376:46:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Shape>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Shape>, std::_Select1st<std::pair<const horizon::UUID, horizon::Shape> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Shape> > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/common/patch_type_names.o
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
+/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
+ 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/pool/package.o
  build/obj/src/package/pad.o
 In file included from /usr/include/c++/12/vector:70,
@@ -48225,6 +48261,7 @@
   366 |         _M_realloc_insert(begin() + __n, std::move(__v));
       |         ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/package/package_rules.o
+ build/obj/src/package/rule_package_checks.o
 In file included from src/canvas/canvas_patch.hpp:2,
                  from src/rules/cache.hpp:2,
                  from src/package/package_rules.cpp:3:
@@ -48232,9 +48269,11 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/package/rule_package_checks.o
  build/obj/src/package/rule_clearance_package.o
  build/obj/src/board/board.o
+ build/obj/src/board/board_junction.o
+ build/obj/src/board/board_package.o
+ build/obj/src/board/track.o
 In file included from /usr/include/c++/12/vector:70,
                  from 3rd_party/nlohmann/json_fwd.hpp:8,
                  from src/common/arc.hpp:3,
@@ -48256,7 +48295,6 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Warning*, std::vector<horizon::Warning> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/board/board_junction.o
 In file included from /usr/include/c++/12/set:60,
                  from src/pool/ipool.hpp:3,
                  from src/pool/package.cpp:1:
@@ -48264,7 +48302,6 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/board/board_package.o
 In file included from /usr/include/c++/12/memory:66,
                  from 3rd_party/nlohmann/json_fwd.hpp:6:
 /usr/include/c++/12/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator<const horizon::Warning*, vector<horizon::Warning> >; _ForwardIterator = horizon::Warning*]':
@@ -48281,6 +48318,24 @@
 /usr/include/c++/12/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<const horizon::Warning*, std::vector<horizon::Warning> >' changed in GCC 7.1
   137 |         { return std::__do_uninit_copy(__first, __last, __result); }
       |                  ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
+In file included from /usr/include/c++/12/vector:70,
+                 from 3rd_party/nlohmann/json_fwd.hpp:8,
+                 from src/block/net.hpp:2,
+                 from src/board/track.hpp:2,
+                 from src/board/track.cpp:1:
+/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {long long int}; _Tp = long long int; _Alloc = std::allocator<long long int>]':
+/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<long long int, std::allocator<long long int> >::iterator' changed in GCC 7.1
+  439 |       vector<_Tp, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~
+In member function 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::_M_insert_rval(const_iterator, value_type&&) [with _Tp = long long int; _Alloc = std::allocator<long long int>]',
+    inlined from 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(const_iterator, value_type&&) [with _Tp = long long int; _Alloc = std::allocator<long long int>]' at /usr/include/c++/12/bits/stl_vector.h:1389:30,
+    inlined from 'std::insert_iterator<_Container>& std::insert_iterator<_Container>::operator=(typename _Container::value_type&&) [with _Container = std::vector<long long int, std::allocator<long long int> >]' at /usr/include/c++/12/bits/stl_iterator.h:973:26,
+    inlined from '_OIter std::transform(_IIter, _IIter, _OIter, _UnaryOperation) [with _IIter = nlohmann::detail::iter_impl<const nlohmann::basic_json<> >; _OIter = insert_iterator<vector<long long int, allocator<long long int> > >; _UnaryOperation = nlohmann::detail::from_json_array_impl<nlohmann::basic_json<>, std::vector<long long int, std::allocator<long long int> > >(const nlohmann::basic_json<>&, std::vector<long long int, std::allocator<long long int> >&, priority_tag<1>)::<lambda(const nlohmann::basic_json<>&)>]' at /usr/include/c++/12/bits/stl_algo.h:4263:12,
+    inlined from 'decltype (((arr.reserve(declval<typename ConstructibleArrayType::size_type>()), j.get<typename ConstructibleArrayType::value_type>()), void())) nlohmann::detail::from_json_array_impl(const BasicJsonType&, ConstructibleArrayType&, priority_tag<1>) [with BasicJsonType = nlohmann::basic_json<>; ConstructibleArrayType = std::vector<long long int, std::allocator<long long int> >; typename std::enable_if<std::is_assignable<ConstructibleArrayType&, ConstructibleArrayType>::value, int>::type <anonymous> = 0]' at 3rd_party/nlohmann/detail/conversions/from_json.hpp:212:19,
+    inlined from 'decltype (((nlohmann::detail::from_json_array_impl(j, arr, nlohmann::detail::priority_tag<3>{}), j.get<typename ConstructibleArrayType::value_type>()), void())) nlohmann::detail::from_json(const BasicJsonType&, ConstructibleArrayType&) [with BasicJsonType = nlohmann::basic_json<>; ConstructibleArrayType = std::vector<long long int, std::allocator<long long int> >; typename std::enable_if<((((is_constructible_array_type<BasicJsonType, ConstructibleArrayType>::value && (! is_constructible_object_type<BasicJsonType, ConstructibleObjectType>::value)) && (! is_constructible_string_type<BasicJsonType, ConstructibleStringType>::value)) && (! std::is_same<ConstructibleArrayType, typename BasicJsonType::binary_t>::value)) && (! is_basic_json<T>::value)), int>::type <anonymous> = 0]' at 3rd_party/nlohmann/detail/conversions/from_json.hpp:261:25:
+/usr/include/c++/12/bits/vector.tcc:366:26: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int, std::allocator<long long int> > >' changed in GCC 7.1
+  366 |         _M_realloc_insert(begin() + __n, std::move(__v));
+      |         ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator<const horizon::Warning*, std::vector<horizon::Warning> >; _ForwardIterator = horizon::Warning*; bool _TrivialValueTypes = false]',
     inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator<const horizon::Warning*, vector<horizon::Warning> >; _ForwardIterator = horizon::Warning*]' at /usr/include/c++/12/bits/stl_uninitialized.h:185:15,
     inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator<const horizon::Warning*, vector<horizon::Warning> >; _ForwardIterator = horizon::Warning*; _Tp = horizon::Warning]' at /usr/include/c++/12/bits/stl_uninitialized.h:372:37,
@@ -48289,7 +48344,8 @@
 /usr/include/c++/12/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<const horizon::Warning*, std::vector<horizon::Warning> >' changed in GCC 7.1
   137 |         { return std::__do_uninit_copy(__first, __last, __result); }
       |                  ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/board/track.o
+ build/obj/src/board/airwire.o
+ build/obj/src/board/via.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -48300,27 +48356,57 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/board/plane.o
+ build/obj/src/board/board_rules.o
+In file included from /usr/include/c++/12/map:60,
+                 from src/common/lut.hpp:3,
+                 from src/common/common.hpp:8,
+                 from src/board/via.hpp:2,
+                 from src/board/via.cpp:1:
+/usr/include/c++/12/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple<horizon::ParameterID&&>, std::tuple<>}; _Key = horizon::ParameterID; _Val = std::pair<const horizon::ParameterID, long long int>; _KeyOfValue = std::_Select1st<std::pair<const horizon::ParameterID, long long int> >; _Compare = std::less<horizon::ParameterID>; _Alloc = std::allocator<std::pair<const horizon::ParameterID, long long int> >]':
+/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::ParameterID, std::pair<const horizon::ParameterID, long long int>, std::_Select1st<std::pair<const horizon::ParameterID, long long int> >, std::less<horizon::ParameterID>, std::allocator<std::pair<const horizon::ParameterID, long long int> > >::const_iterator' changed in GCC 7.1
+ 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In file included from /usr/include/c++/12/map:61:
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = horizon::ParameterID; _Tp = long long int; _Compare = std::less<horizon::ParameterID>; _Alloc = std::allocator<std::pair<const horizon::ParameterID, long long int> >]',
+    inlined from 'horizon::Via::Via(const horizon::UUID&, const horizon::Padstack*)' at src/board/via.cpp:30:44:
+/usr/include/c++/12/bits/stl_map.h:530:44: note: parameter passing for argument of type 'std::_Rb_tree<horizon::ParameterID, std::pair<const horizon::ParameterID, long long int>, std::_Select1st<std::pair<const horizon::ParameterID, long long int> >, std::less<horizon::ParameterID>, std::allocator<std::pair<const horizon::ParameterID, long long int> > >::const_iterator' changed in GCC 7.1
+  530 |           __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
+      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  531 |                                         std::forward_as_tuple(std::move(__k)),
+      |                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  532 |                                         std::tuple<>());
+      |                                         ~~~~~~~~~~~~~~~
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = horizon::ParameterID; _Tp = long long int; _Compare = std::less<horizon::ParameterID>; _Alloc = std::allocator<std::pair<const horizon::ParameterID, long long int> >]',
+    inlined from 'horizon::Via::Via(const horizon::UUID&, const horizon::Padstack*)' at src/board/via.cpp:31:45:
+/usr/include/c++/12/bits/stl_map.h:530:44: note: parameter passing for argument of type 'std::_Rb_tree<horizon::ParameterID, std::pair<const horizon::ParameterID, long long int>, std::_Select1st<std::pair<const horizon::ParameterID, long long int> >, std::less<horizon::ParameterID>, std::allocator<std::pair<const horizon::ParameterID, long long int> > >::const_iterator' changed in GCC 7.1
+  530 |           __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
+      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  531 |                                         std::forward_as_tuple(std::move(__k)),
+      |                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  532 |                                         std::tuple<>());
+      |                                         ~~~~~~~~~~~~~~~
+In file included from src/canvas/canvas_patch.hpp:2,
+                 from src/rules/cache.hpp:2,
+                 from src/board/board_rules.cpp:4:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = horizon::ParameterID; _Val = std::pair<const horizon::ParameterID, long long int>; _KeyOfValue = std::_Select1st<std::pair<const horizon::ParameterID, long long int> >; _Compare = std::less<horizon::ParameterID>; _Alloc = std::allocator<std::pair<const horizon::ParameterID, long long int> >]':
+/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<horizon::ParameterID, std::pair<const horizon::ParameterID, long long int>, std::_Select1st<std::pair<const horizon::ParameterID, long long int> >, std::less<horizon::ParameterID>, std::allocator<std::pair<const horizon::ParameterID, long long int> > >::const_iterator' changed in GCC 7.1
+ 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/board/rule_hole_size.o
 In file included from /usr/include/c++/12/vector:70,
                  from 3rd_party/nlohmann/json_fwd.hpp:8,
                  from src/block/net.hpp:2,
-                 from src/board/track.hpp:2,
-                 from src/board/track.cpp:1:
-/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {long long int}; _Tp = long long int; _Alloc = std::allocator<long long int>]':
-/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<long long int, std::allocator<long long int> >::iterator' changed in GCC 7.1
+                 from src/board/plane.hpp:2,
+                 from src/board/plane.cpp:1:
+/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {long long int, long long int}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]':
+/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<ClipperLib::IntPoint>::iterator' changed in GCC 7.1
   439 |       vector<_Tp, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::_M_insert_rval(const_iterator, value_type&&) [with _Tp = long long int; _Alloc = std::allocator<long long int>]',
-    inlined from 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(const_iterator, value_type&&) [with _Tp = long long int; _Alloc = std::allocator<long long int>]' at /usr/include/c++/12/bits/stl_vector.h:1389:30,
-    inlined from 'std::insert_iterator<_Container>& std::insert_iterator<_Container>::operator=(typename _Container::value_type&&) [with _Container = std::vector<long long int, std::allocator<long long int> >]' at /usr/include/c++/12/bits/stl_iterator.h:973:26,
-    inlined from '_OIter std::transform(_IIter, _IIter, _OIter, _UnaryOperation) [with _IIter = nlohmann::detail::iter_impl<const nlohmann::basic_json<> >; _OIter = insert_iterator<vector<long long int, allocator<long long int> > >; _UnaryOperation = nlohmann::detail::from_json_array_impl<nlohmann::basic_json<>, std::vector<long long int, std::allocator<long long int> > >(const nlohmann::basic_json<>&, std::vector<long long int, std::allocator<long long int> >&, priority_tag<1>)::<lambda(const nlohmann::basic_json<>&)>]' at /usr/include/c++/12/bits/stl_algo.h:4263:12,
-    inlined from 'decltype (((arr.reserve(declval<typename ConstructibleArrayType::size_type>()), j.get<typename ConstructibleArrayType::value_type>()), void())) nlohmann::detail::from_json_array_impl(const BasicJsonType&, ConstructibleArrayType&, priority_tag<1>) [with BasicJsonType = nlohmann::basic_json<>; ConstructibleArrayType = std::vector<long long int, std::allocator<long long int> >; typename std::enable_if<std::is_assignable<ConstructibleArrayType&, ConstructibleArrayType>::value, int>::type <anonymous> = 0]' at 3rd_party/nlohmann/detail/conversions/from_json.hpp:212:19,
-    inlined from 'decltype (((nlohmann::detail::from_json_array_impl(j, arr, nlohmann::detail::priority_tag<3>{}), j.get<typename ConstructibleArrayType::value_type>()), void())) nlohmann::detail::from_json(const BasicJsonType&, ConstructibleArrayType&) [with BasicJsonType = nlohmann::basic_json<>; ConstructibleArrayType = std::vector<long long int, std::allocator<long long int> >; typename std::enable_if<((((is_constructible_array_type<BasicJsonType, ConstructibleArrayType>::value && (! is_constructible_object_type<BasicJsonType, ConstructibleObjectType>::value)) && (! is_constructible_string_type<BasicJsonType, ConstructibleStringType>::value)) && (! std::is_same<ConstructibleArrayType, typename BasicJsonType::binary_t>::value)) && (! is_basic_json<T>::value)), int>::type <anonymous> = 0]' at 3rd_party/nlohmann/detail/conversions/from_json.hpp:261:25:
-/usr/include/c++/12/bits/vector.tcc:366:26: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int, std::allocator<long long int> > >' changed in GCC 7.1
-  366 |         _M_realloc_insert(begin() + __n, std::move(__v));
-      |         ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/board/airwire.o
- build/obj/src/board/via.o
- build/obj/src/board/plane.o
 In file included from /usr/include/c++/12/vector:70,
                  from 3rd_party/nlohmann/json_fwd.hpp:8,
                  from src/block/bus.hpp:2,
@@ -48337,6 +48423,12 @@
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<ClipperLib::IntPoint>::iterator' changed in GCC 7.1
 In file included from /usr/include/c++/12/map:60,
                  from 3rd_party/nlohmann/json_fwd.hpp:5:
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
+/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
+ 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In file included from /usr/include/c++/12/map:60,
+                 from 3rd_party/nlohmann/json_fwd.hpp:5:
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::BoardJunction>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::BoardJunction> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::BoardJunction> >]':
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::BoardJunction>, std::_Select1st<std::pair<const horizon::UUID, horizon::BoardJunction> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::BoardJunction> > >::const_iterator' changed in GCC 7.1
  2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
@@ -48370,6 +48462,7 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/board/rule_clearance_silk_exp_copper.o
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::Line>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::Line> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Line> >]':
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Line>, std::_Select1st<std::pair<const horizon::UUID, horizon::Line> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Line> > >::const_iterator' changed in GCC 7.1
  2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
@@ -48392,15 +48485,6 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In file included from /usr/include/c++/12/map:60,
-                 from src/common/lut.hpp:3,
-                 from src/common/common.hpp:8,
-                 from src/board/via.hpp:2,
-                 from src/board/via.cpp:1:
-/usr/include/c++/12/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple<horizon::ParameterID&&>, std::tuple<>}; _Key = horizon::ParameterID; _Val = std::pair<const horizon::ParameterID, long long int>; _KeyOfValue = std::_Select1st<std::pair<const horizon::ParameterID, long long int> >; _Compare = std::less<horizon::ParameterID>; _Alloc = std::allocator<std::pair<const horizon::ParameterID, long long int> >]':
-/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::ParameterID, std::pair<const horizon::ParameterID, long long int>, std::_Select1st<std::pair<const horizon::ParameterID, long long int> >, std::less<horizon::ParameterID>, std::allocator<std::pair<const horizon::ParameterID, long long int> > >::const_iterator' changed in GCC 7.1
- 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
     inlined from 'void horizon::Board::smash_package_outline(horizon::BoardPackage&)' at src/board/board.cpp:983:47:
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
@@ -48411,25 +48495,6 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In file included from /usr/include/c++/12/map:61:
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = horizon::ParameterID; _Tp = long long int; _Compare = std::less<horizon::ParameterID>; _Alloc = std::allocator<std::pair<const horizon::ParameterID, long long int> >]',
-    inlined from 'horizon::Via::Via(const horizon::UUID&, const horizon::Padstack*)' at src/board/via.cpp:30:44:
-/usr/include/c++/12/bits/stl_map.h:530:44: note: parameter passing for argument of type 'std::_Rb_tree<horizon::ParameterID, std::pair<const horizon::ParameterID, long long int>, std::_Select1st<std::pair<const horizon::ParameterID, long long int> >, std::less<horizon::ParameterID>, std::allocator<std::pair<const horizon::ParameterID, long long int> > >::const_iterator' changed in GCC 7.1
-  530 |           __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
-      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  531 |                                         std::forward_as_tuple(std::move(__k)),
-      |                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  532 |                                         std::tuple<>());
-      |                                         ~~~~~~~~~~~~~~~
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = horizon::ParameterID; _Tp = long long int; _Compare = std::less<horizon::ParameterID>; _Alloc = std::allocator<std::pair<const horizon::ParameterID, long long int> >]',
-    inlined from 'horizon::Via::Via(const horizon::UUID&, const horizon::Padstack*)' at src/board/via.cpp:31:45:
-/usr/include/c++/12/bits/stl_map.h:530:44: note: parameter passing for argument of type 'std::_Rb_tree<horizon::ParameterID, std::pair<const horizon::ParameterID, long long int>, std::_Select1st<std::pair<const horizon::ParameterID, long long int> >, std::less<horizon::ParameterID>, std::allocator<std::pair<const horizon::ParameterID, long long int> > >::const_iterator' changed in GCC 7.1
-  530 |           __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
-      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  531 |                                         std::forward_as_tuple(std::move(__k)),
-      |                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  532 |                                         std::tuple<>());
-      |                                         ~~~~~~~~~~~~~~~
 /usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {ClipperLib::IntPoint}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]':
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<ClipperLib::IntPoint>::iterator' changed in GCC 7.1
   439 |       vector<_Tp, _Alloc>::
@@ -48446,14 +48511,15 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {long long int, long long int}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
+    inlined from 'horizon::Plane::Fragment::Fragment(const horizon::json&)' at src/board/plane.cpp:170:30:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const horizon::BoardPackage*, horizon::PnPRow&}; _Key = const horizon::BoardPackage*; _Val = std::pair<const horizon::BoardPackage* const, horizon::PnPRow>; _KeyOfValue = std::_Select1st<std::pair<const horizon::BoardPackage* const, horizon::PnPRow> >; _Compare = std::less<const horizon::BoardPackage*>; _Alloc = std::allocator<std::pair<const horizon::BoardPackage* const, horizon::PnPRow> >]':
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<const horizon::BoardPackage*, std::pair<const horizon::BoardPackage* const, horizon::PnPRow>, std::_Select1st<std::pair<const horizon::BoardPackage* const, horizon::PnPRow> >, std::less<const horizon::BoardPackage*>, std::allocator<std::pair<const horizon::BoardPackage* const, horizon::PnPRow> > >::const_iterator' changed in GCC 7.1
  2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = horizon::ParameterID; _Val = std::pair<const horizon::ParameterID, long long int>; _KeyOfValue = std::_Select1st<std::pair<const horizon::ParameterID, long long int> >; _Compare = std::less<horizon::ParameterID>; _Alloc = std::allocator<std::pair<const horizon::ParameterID, long long int> >]':
-/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<horizon::ParameterID, std::pair<const horizon::ParameterID, long long int>, std::_Select1st<std::pair<const horizon::ParameterID, long long int> >, std::less<horizon::ParameterID>, std::allocator<std::pair<const horizon::ParameterID, long long int> > >::const_iterator' changed in GCC 7.1
- 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {const horizon::BoardPackage*, horizon::PnPRow&}; _Key = const horizon::BoardPackage*; _Tp = horizon::PnPRow; _Compare = std::less<const horizon::BoardPackage*>; _Alloc = std::allocator<std::pair<const horizon::BoardPackage* const, horizon::PnPRow> >]',
     inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Alloc>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {const horizon::BoardPackage*, horizon::PnPRow&}; _Key = const horizon::BoardPackage*; _Tp = horizon::PnPRow; _Compare = std::less<const horizon::BoardPackage*>; _Alloc = std::allocator<std::pair<const horizon::BoardPackage* const, horizon::PnPRow> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
     inlined from 'std::map<const horizon::BoardPackage*, horizon::PnPRow> horizon::Board::get_PnP(const horizon::PnPExportSettings&) const' at src/board/board.cpp:1088:18:
@@ -48489,7 +48555,7 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<int, std::pair<const int, horizon::Board::StackupLayer>, std::_Select1st<std::pair<const int, horizon::Board::StackupLayer> >, std::less<int>, std::allocator<std::pair<const int, horizon::Board::StackupLayer> > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/board/board_rules.o
+ build/obj/src/board/rule_track_width.o
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = horizon::ParameterID; _Val = std::pair<const horizon::ParameterID, long long int>; _KeyOfValue = std::_Select1st<std::pair<const horizon::ParameterID, long long int> >; _Compare = std::less<horizon::ParameterID>; _Alloc = std::allocator<std::pair<const horizon::ParameterID, long long int> >]':
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<horizon::ParameterID, std::pair<const horizon::ParameterID, long long int>, std::_Select1st<std::pair<const horizon::ParameterID, long long int> >, std::less<horizon::ParameterID>, std::allocator<std::pair<const horizon::ParameterID, long long int> > >::const_iterator' changed in GCC 7.1
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>, const char (&)[18]}; _Tp = horizon::Warning; _Alloc = std::allocator<horizon::Warning>]',
@@ -48531,22 +48597,19 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In file included from src/canvas/canvas_patch.hpp:2,
-                 from src/rules/cache.hpp:2,
-                 from src/board/board_rules.cpp:4:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
-In file included from /usr/include/c++/12/vector:70,
-                 from 3rd_party/nlohmann/json_fwd.hpp:8,
-                 from src/block/net.hpp:2,
-                 from src/board/plane.hpp:2,
-                 from src/board/plane.cpp:1:
-/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {long long int, long long int}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]':
-/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<ClipperLib::IntPoint>::iterator' changed in GCC 7.1
-  439 |       vector<_Tp, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~
+In file included from /usr/include/c++/12/map:60,
+                 from 3rd_party/nlohmann/json_fwd.hpp:5,
+                 from src/board/board_rules.hpp:2,
+                 from src/board/board_rules.cpp:1:
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::RuleDiffpair>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::RuleDiffpair> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::RuleDiffpair> >]':
+/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::RuleDiffpair>, std::_Select1st<std::pair<const horizon::UUID, horizon::RuleDiffpair> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::RuleDiffpair> > >::const_iterator' changed in GCC 7.1
+ 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/board/rule_clearance_copper.o
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
+/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
+ 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {const long long int&, const long long int&}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
     inlined from 'ClipperLib::Path horizon::polygon_to_path(const Polygon&)' at src/board/board.cpp:1291:25,
     inlined from 'horizon::PolyInfo::PolyInfo(const horizon::Polygon&)' at src/board/board.cpp:1298:46,
@@ -48592,51 +48655,38 @@
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In file included from /usr/include/c++/12/map:60,
-                 from 3rd_party/nlohmann/json_fwd.hpp:5:
+                 from src/common/lut.hpp:3,
+                 from src/common/common.hpp:8,
+                 from src/board/rule_track_width.hpp:2,
+                 from src/board/rule_track_width.cpp:1:
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {long long int, long long int}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
-    inlined from 'horizon::Plane::Fragment::Fragment(const horizon::json&)' at src/board/plane.cpp:170:30:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/board/rule_hole_size.o
- build/obj/src/board/rule_clearance_silk_exp_copper.o
- build/obj/src/board/rule_track_width.o
-In file included from /usr/include/c++/12/map:60,
-                 from 3rd_party/nlohmann/json_fwd.hpp:5,
-                 from src/board/board_rules.hpp:2,
-                 from src/board/board_rules.cpp:1:
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::RuleDiffpair>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::RuleDiffpair> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::RuleDiffpair> >]':
-/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::RuleDiffpair>, std::_Select1st<std::pair<const horizon::UUID, horizon::RuleDiffpair> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::RuleDiffpair> > >::const_iterator' changed in GCC 7.1
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::RuleClearanceCopper>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::RuleClearanceCopper> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::RuleClearanceCopper> >]':
+/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::RuleClearanceCopper>, std::_Select1st<std::pair<const horizon::UUID, horizon::RuleClearanceCopper> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::RuleClearanceCopper> > >::const_iterator' changed in GCC 7.1
  2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
-/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
- 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/board/rule_clearance_copper.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
-                 from src/board/rule_track_width.hpp:2,
-                 from src/board/rule_track_width.cpp:1:
+                 from src/board/rule_clearance_copper.hpp:2,
+                 from src/board/rule_clearance_copper.cpp:1:
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::RuleClearanceCopper>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::RuleClearanceCopper> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::RuleClearanceCopper> >]':
-/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::RuleClearanceCopper>, std::_Select1st<std::pair<const horizon::UUID, horizon::RuleClearanceCopper> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::RuleClearanceCopper> > >::const_iterator' changed in GCC 7.1
- 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::RulePlane>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::RulePlane> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::RulePlane> >]':
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::RulePlane>, std::_Select1st<std::pair<const horizon::UUID, horizon::RulePlane> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::RulePlane> > >::const_iterator' changed in GCC 7.1
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::RuleHoleSize>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::RuleHoleSize> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::RuleHoleSize> >]':
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::RuleHoleSize>, std::_Select1st<std::pair<const horizon::UUID, horizon::RuleHoleSize> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::RuleHoleSize> > >::const_iterator' changed in GCC 7.1
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::RuleClearanceCopperOther>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::RuleClearanceCopperOther> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::RuleClearanceCopperOther> >]':
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::RuleClearanceCopperOther>, std::_Select1st<std::pair<const horizon::UUID, horizon::RuleClearanceCopperOther> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::RuleClearanceCopperOther> > >::const_iterator' changed in GCC 7.1
+ build/obj/src/board/rule_parameters.o
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
+/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
+ 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::RuleThermals>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::RuleThermals> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::RuleThermals> >]':
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::RuleThermals>, std::_Select1st<std::pair<const horizon::UUID, horizon::RuleThermals> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::RuleThermals> > >::const_iterator' changed in GCC 7.1
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::RuleClearanceCopperKeepout>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::RuleClearanceCopperKeepout> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::RuleClearanceCopperKeepout> >]':
@@ -48698,20 +48748,6 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/board/rule_parameters.o
-In file included from /usr/include/c++/12/map:60,
-                 from src/common/lut.hpp:3,
-                 from src/common/common.hpp:8,
-                 from src/board/rule_clearance_copper.hpp:2,
-                 from src/board/rule_clearance_copper.cpp:1:
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
-/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
- 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
-/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
- 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In file included from /usr/include/c++/12/map:61:
 In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]',
     inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
@@ -48724,7 +48760,6 @@
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/board/rule_via.o
  build/obj/src/board/rule_clearance_copper_other.o
- build/obj/src/board/rule_plane.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -48753,7 +48788,9 @@
       |                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   532 |                                         std::tuple<>());
       |                                         ~~~~~~~~~~~~~~~
+ build/obj/src/board/rule_plane.o
  build/obj/src/board/rule_diffpair.o
+ build/obj/src/board/rule_preflight_checks.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -48763,38 +48800,10 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/board/rule_preflight_checks.o
  build/obj/src/board/rule_clearance_copper_keepout.o
  build/obj/src/board/rule_layer_pair.o
  build/obj/src/board/rule_clearance_same_net.o
-In file included from /usr/include/c++/12/map:60,
-                 from src/common/lut.hpp:3,
-                 from src/common/common.hpp:8,
-                 from src/board/rule_clearance_copper_keepout.hpp:2,
-                 from src/board/rule_clearance_copper_keepout.cpp:1:
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
-/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
- 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/board/rule_board_connectivity.o
-In file included from /usr/include/c++/12/map:60,
-                 from src/common/lut.hpp:3,
-                 from src/common/common.hpp:8,
-                 from src/board/rule_layer_pair.hpp:2,
-                 from src/board/rule_layer_pair.cpp:1:
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
-/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
- 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In file included from /usr/include/c++/12/map:60,
-                 from src/common/lut.hpp:3,
-                 from src/common/common.hpp:8,
-                 from src/board/rule_clearance_same_net.hpp:2,
-                 from src/board/rule_clearance_same_net.cpp:1:
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
-/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
- 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/3rd_party/delaunator/delaunator.o
 3rd_party/delaunator/delaunator.cpp: In function 'bool delaunator::clockwise(const Point&, const Point&, const Point&)':
 3rd_party/delaunator/delaunator.cpp:97:12: warning: unused variable 'dist2' [-Wunused-variable]
@@ -48804,6 +48813,15 @@
 3rd_party/delaunator/delaunator.cpp:123:12: warning: unused variable 'dist2' [-Wunused-variable]
   123 |     double dist2 = Point::dist2(v0, v1);
       |            ^~~~~
+In file included from /usr/include/c++/12/map:60,
+                 from src/common/lut.hpp:3,
+                 from src/common/common.hpp:8,
+                 from src/board/rule_layer_pair.hpp:2,
+                 from src/board/rule_layer_pair.cpp:1:
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
+/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
+ 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In file included from /usr/include/c++/12/vector:70,
                  from 3rd_party/delaunator/delaunator.hpp:10,
                  from 3rd_party/delaunator/delaunator.cpp:2:
@@ -48821,13 +48839,31 @@
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<double>::iterator' changed in GCC 7.1
   439 |       vector<_Tp, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~
- build/obj/src/board/airwires.o
+In file included from /usr/include/c++/12/map:60,
+                 from src/common/lut.hpp:3,
+                 from src/common/common.hpp:8,
+                 from src/board/rule_clearance_copper_keepout.hpp:2,
+                 from src/board/rule_clearance_copper_keepout.cpp:1:
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
+/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
+ 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {double}; _Tp = double; _Alloc = std::allocator<double>]',
     inlined from 'void std::vector<_Tp, _Alloc>::push_back(value_type&&) [with _Tp = double; _Alloc = std::allocator<double>]' at /usr/include/c++/12/bits/stl_vector.h:1294:21,
     inlined from 'delaunator::Delaunator::Delaunator(const std::vector<double>&)' at 3rd_party/delaunator/delaunator.cpp:301:24:
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<double*, std::vector<double> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/board/airwires.o
+In file included from /usr/include/c++/12/map:60,
+                 from src/common/lut.hpp:3,
+                 from src/common/common.hpp:8,
+                 from src/board/rule_clearance_same_net.hpp:2,
+                 from src/board/rule_clearance_same_net.cpp:1:
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
+/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
+ 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {double}; _Tp = double; _Alloc = std::allocator<double>]',
     inlined from 'void std::vector<_Tp, _Alloc>::push_back(value_type&&) [with _Tp = double; _Alloc = std::allocator<double>]' at /usr/include/c++/12/bits/stl_vector.h:1294:21,
     inlined from 'double delaunator::Delaunator::get_hull_area()' at 3rd_party/delaunator/delaunator.cpp:477:28:
@@ -48836,6 +48872,7 @@
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/board/gerber_output_settings.o
  build/obj/src/board/odb_output_settings.o
+ build/obj/src/board/board_hole.o
 In file included from /usr/include/c++/12/bits/stl_algo.h:60,
                  from /usr/include/c++/12/algorithm:61,
                  from src/common/common.hpp:4,
@@ -49359,7 +49396,6 @@
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::Coord<long long int>, std::pair<const horizon::Coord<long long int>, std::vector<unsigned int> >, std::_Select1st<std::pair<const horizon::Coord<long long int>, std::vector<unsigned int> > >, std::less<horizon::Coord<long long int> >, std::allocator<std::pair<const horizon::Coord<long long int>, std::vector<unsigned int> > > >::const_iterator' changed in GCC 7.1
  2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/board/board_hole.o
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {long long int&}; _Tp = double; _Alloc = std::allocator<double>]',
     inlined from 'void horizon::Board::update_airwire(bool, const horizon::UUID&)' at src/board/airwires.cpp:153:47:
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >' changed in GCC 7.1
@@ -49471,6 +49507,8 @@
  1287 |           _M_realloc_insert(end(), __x);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
  build/obj/src/board/connection_line.o
+ build/obj/src/board/step_export_settings.o
+ build/obj/src/board/pnp_export_settings.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -49480,11 +49518,10 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/board/step_export_settings.o
- build/obj/src/board/pnp_export_settings.o
  build/obj/src/board/pnp.o
  build/obj/src/board/board_decal.o
  build/obj/src/pool/pool.o
+ build/obj/src/pool/ipool.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/board/pnp_export_settings.hpp:2,
@@ -49493,9 +49530,9 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/pool/ipool.o
  build/obj/src/pool/pool_info.o
  build/obj/src/util/placement.o
+ build/obj/src/util/util.o
 In file included from /usr/include/c++/12/vector:70,
                  from src/common/common.hpp:3,
                  from src/util/placement.hpp:2,
@@ -49521,6 +49558,8 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/util/geom_util.o
+ build/obj/src/util/csv.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -49530,6 +49569,7 @@
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Frame>, std::_Select1st<std::pair<const horizon::UUID, horizon::Frame> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Frame> > >::const_iterator' changed in GCC 7.1
  2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/common/object_descr.o
 In file included from /usr/include/c++/12/map:61:
 In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {std::pair<horizon::UUID, horizon::Frame>}; _Key = horizon::UUID; _Tp = horizon::Frame; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Frame> >]',
     inlined from 'std::__enable_if_t<std::is_constructible<std::pair<const _Key, _Tp>, _Pair>::value, std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> > std::map<_Key, _Tp, _Compare, _Alloc>::insert(_Pair&&) [with _Pair = std::pair<horizon::UUID, horizon::Frame>; _Key = horizon::UUID; _Tp = horizon::Frame; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Frame> >]' at /usr/include/c++/12/bits/stl_map.h:858:27,
@@ -49539,12 +49579,9 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/util/util.o
- build/obj/src/util/geom_util.o
- build/obj/src/util/csv.o
- build/obj/src/common/object_descr.o
  build/obj/src/block/net_class.o
  build/obj/src/project/project.o
+ build/obj/src/util/version.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -49576,18 +49613,8 @@
       |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   513 |                                             std::tuple<>());
       |                                             ~~~~~~~~~~~~~~~
- build/obj/src/util/version.o
  build/obj/src/rules/rules.o
  build/obj/src/rules/rule.o
-In file included from /usr/include/c++/12/map:60,
-                 from 3rd_party/nlohmann/json_fwd.hpp:5,
-                 from src/project/project.hpp:3,
-                 from src/project/project.cpp:1:
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
-/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
- 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/rules/rule_descr.o
 In file included from /usr/include/c++/12/set:60,
                  from 3rd_party/clipper/clipper.hpp:54,
                  from src/rules/rules.hpp:2,
@@ -49596,18 +49623,19 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/rules/rule_match.o
- build/obj/src/rules/rule_match_keepout.o
- build/obj/src/rules/rules_import_export.o
- build/obj/src/parameter/program.o
+ build/obj/src/rules/rule_descr.o
 In file included from /usr/include/c++/12/map:60,
                  from 3rd_party/nlohmann/json_fwd.hpp:5,
-                 from src/rules/rule_match.hpp:2,
-                 from src/rules/rule_match.cpp:1:
+                 from src/project/project.hpp:3,
+                 from src/project/project.cpp:1:
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/rules/rule_match.o
+ build/obj/src/rules/rule_match_keepout.o
+ build/obj/src/rules/rules_import_export.o
+ build/obj/src/parameter/program.o
  build/obj/src/parameter/set.o
 In file included from /usr/include/c++/12/vector:70,
                  from 3rd_party/nlohmann/json_fwd.hpp:8,
@@ -49727,8 +49755,17 @@
 /usr/include/c++/12/bits/stl_vector.h:1287:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >' changed in GCC 7.1
  1287 |           _M_realloc_insert(end(), __x);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
+In file included from /usr/include/c++/12/map:60,
+                 from 3rd_party/nlohmann/json_fwd.hpp:5,
+                 from src/rules/rule_match.hpp:2,
+                 from src/rules/rule_match.cpp:1:
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
+/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
+ 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/3rd_party/clipper/clipper.o
  build/obj/src/common/dimension.o
+ build/obj/src/logger/logger.o
 3rd_party/clipper/clipper.cpp: In function 'void ClipperLib::InitEdge(TEdge*, TEdge*, TEdge*, const IntPoint&)':
 3rd_party/clipper/clipper.cpp:721:14: warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct ClipperLib::TEdge'; use assignment or value-initialization instead [-Wclass-memaccess]
   721 |   std::memset(e, 0, sizeof(TEdge));
@@ -49743,6 +49780,7 @@
 3rd_party/clipper/clipper.cpp:3202:31: note: shadowed declaration is here
  3202 |   for (PolyOutList::size_type i = 0; i < m_PolyOuts.size(); ++i)
       |                               ^
+ build/obj/src/parameter/program_polygon.o
 In file included from /usr/include/c++/12/bits/stl_algo.h:60,
                  from /usr/include/c++/12/functional:64,
                  from 3rd_party/clipper/clipper.hpp:59,
@@ -49759,6 +49797,7 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/frame/frame.o
 In file included from /usr/include/c++/12/vector:70,
                  from 3rd_party/clipper/clipper.hpp:52:
 /usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const ClipperLib::IntPoint&}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]':
@@ -49776,18 +49815,65 @@
 /usr/include/c++/12/bits/stl_vector.h:1287:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
  1287 |           _M_realloc_insert(end(), __x);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
+In file included from /usr/include/c++/12/vector:70,
+                 from 3rd_party/nlohmann/json_fwd.hpp:8,
+                 from src/parameter/set.hpp:2,
+                 from src/parameter/program.hpp:2,
+                 from src/parameter/program_polygon.hpp:2,
+                 from src/parameter/program_polygon.cpp:1:
+/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]':
+/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Polygon::Vertex>::iterator' changed in GCC 7.1
+  439 |       vector<_Tp, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~
 In member function 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
     inlined from 'void ClipperLib::Clipper::BuildResult(ClipperLib::Paths&)' at 3rd_party/clipper/clipper.cpp:3212:19:
 /usr/include/c++/12/bits/stl_vector.h:1287:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
  1287 |           _M_realloc_insert(end(), __x);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
- build/obj/src/logger/logger.o
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
+    inlined from 'std::optional<std::__cxx11::basic_string<char> > horizon::ParameterProgramPolygon::set_polygon(const horizon::ParameterProgram::TokenCommand&)' at src/parameter/program_polygon.cpp:46:48:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
+    inlined from 'std::optional<std::__cxx11::basic_string<char> > horizon::ParameterProgramPolygon::set_polygon(const horizon::ParameterProgram::TokenCommand&)' at src/parameter/program_polygon.cpp:50:48:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
+    inlined from 'std::optional<std::__cxx11::basic_string<char> > horizon::ParameterProgramPolygon::set_polygon(const horizon::ParameterProgram::TokenCommand&)' at src/parameter/program_polygon.cpp:54:48:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {horizon::Coord<long long int>&}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]':
+/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Polygon::Vertex>::iterator' changed in GCC 7.1
+  439 |       vector<_Tp, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>&}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
+    inlined from 'std::optional<std::__cxx11::basic_string<char> > horizon::ParameterProgramPolygon::set_polygon_vertices(const horizon::ParameterProgram::TokenCommand&)' at src/parameter/program_polygon.cpp:90:48:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {ClipperLib::IntPoint}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]':
+/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<ClipperLib::IntPoint>::iterator' changed in GCC 7.1
+  439 |       vector<_Tp, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~
 In member function 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
     inlined from 'void ClipperLib::Clipper::BuildResult2(ClipperLib::PolyTree&)' at 3rd_party/clipper/clipper.cpp:3241:34:
 /usr/include/c++/12/bits/stl_vector.h:1287:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
  1287 |           _M_realloc_insert(end(), __x);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
- build/obj/src/parameter/program_polygon.o
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {ClipperLib::IntPoint}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
+    inlined from 'std::optional<std::__cxx11::basic_string<char> > horizon::ParameterProgramPolygon::expand_polygon(const horizon::ParameterProgram::TokenCommand&)' at src/parameter/program_polygon.cpp:113:26:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
+    inlined from 'std::optional<std::__cxx11::basic_string<char> > horizon::ParameterProgramPolygon::expand_polygon(const horizon::ParameterProgram::TokenCommand&)' at src/parameter/program_polygon.cpp:137:48:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/common/keepout.o
 In file included from /usr/include/c++/12/vector:70,
                  from 3rd_party/nlohmann/json_fwd.hpp:8,
                  from src/common/dimension.hpp:3,
@@ -49873,7 +49959,7 @@
 /usr/include/c++/12/bits/stl_vector.h:1287:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
  1287 |           _M_realloc_insert(end(), __x);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
- build/obj/src/frame/frame.o
+ build/obj/src/board/board_layers.o
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {ClipperLib::IntPoint}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
     inlined from 'void std::vector<_Tp, _Alloc>::push_back(value_type&&) [with _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]' at /usr/include/c++/12/bits/stl_vector.h:1294:21,
     inlined from 'void ClipperLib::Minkowski(const Path&, const Path&, Paths&, bool, bool)' at 3rd_party/clipper/clipper.cpp:4484:20:
@@ -50001,54 +50087,7 @@
 /usr/include/c++/12/bits/stl_vector.h:1287:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
  1287 |           _M_realloc_insert(end(), __x);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
-In file included from /usr/include/c++/12/vector:70,
-                 from 3rd_party/nlohmann/json_fwd.hpp:8,
-                 from src/parameter/set.hpp:2,
-                 from src/parameter/program.hpp:2,
-                 from src/parameter/program_polygon.hpp:2,
-                 from src/parameter/program_polygon.cpp:1:
-/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]':
-/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Polygon::Vertex>::iterator' changed in GCC 7.1
-  439 |       vector<_Tp, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
-    inlined from 'std::optional<std::__cxx11::basic_string<char> > horizon::ParameterProgramPolygon::set_polygon(const horizon::ParameterProgram::TokenCommand&)' at src/parameter/program_polygon.cpp:46:48:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
-    inlined from 'std::optional<std::__cxx11::basic_string<char> > horizon::ParameterProgramPolygon::set_polygon(const horizon::ParameterProgram::TokenCommand&)' at src/parameter/program_polygon.cpp:50:48:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
-    inlined from 'std::optional<std::__cxx11::basic_string<char> > horizon::ParameterProgramPolygon::set_polygon(const horizon::ParameterProgram::TokenCommand&)' at src/parameter/program_polygon.cpp:54:48:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {horizon::Coord<long long int>&}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]':
-/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Polygon::Vertex>::iterator' changed in GCC 7.1
-  439 |       vector<_Tp, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>&}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
-    inlined from 'std::optional<std::__cxx11::basic_string<char> > horizon::ParameterProgramPolygon::set_polygon_vertices(const horizon::ParameterProgram::TokenCommand&)' at src/parameter/program_polygon.cpp:90:48:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {ClipperLib::IntPoint}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]':
-/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<ClipperLib::IntPoint>::iterator' changed in GCC 7.1
-  439 |       vector<_Tp, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {ClipperLib::IntPoint}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
-    inlined from 'std::optional<std::__cxx11::basic_string<char> > horizon::ParameterProgramPolygon::expand_polygon(const horizon::ParameterProgram::TokenCommand&)' at src/parameter/program_polygon.cpp:113:26:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
-    inlined from 'std::optional<std::__cxx11::basic_string<char> > horizon::ParameterProgramPolygon::expand_polygon(const horizon::ParameterProgram::TokenCommand&)' at src/parameter/program_polygon.cpp:137:48:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/pool/pool_parametric.o
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {ClipperLib::IntPoint}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
     inlined from 'void std::vector<_Tp, _Alloc>::push_back(value_type&&) [with _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]' at /usr/include/c++/12/bits/stl_vector.h:1294:21,
     inlined from 'void ClipperLib::Minkowski(const Path&, const Path&, Paths&, bool, bool)' at 3rd_party/clipper/clipper.cpp:4493:20,
@@ -50062,9 +50101,7 @@
 /usr/include/c++/12/bits/stl_vector.h:1287:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
  1287 |           _M_realloc_insert(end(), __x);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
- build/obj/src/common/keepout.o
- build/obj/src/board/board_layers.o
- build/obj/src/pool/pool_parametric.o
+ build/obj/src/board/included_board.o
 In file included from /usr/include/c++/12/map:60,
                  from 3rd_party/nlohmann/json_fwd.hpp:5,
                  from src/common/polygon.hpp:3,
@@ -50083,7 +50120,6 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/board/included_board.o
  build/obj/src/board/board_panel.o
  build/obj/src/common/picture.o
  build/obj/src/util/picture_data.o
@@ -50093,6 +50129,7 @@
  build/obj/src/symbol/rule_symbol_checks.o
  build/obj/src/util/file_version.o
  build/obj/src/pool/project_pool.o
+ build/obj/src/util/fs_util.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -50102,7 +50139,6 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/util/fs_util.o
  build/obj/src/common/grid_settings.o
  build/obj/src/util/dependency_graph.o
  build/obj/src/blocks/blocks.o
@@ -50131,6 +50167,8 @@
   366 |         _M_realloc_insert(begin() + __n, std::move(__v));
       |         ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/block_symbol/block_symbol.o
+ build/obj/src/blocks/dependency_graph.o
+ build/obj/src/util/installation_uuid.o
 In file included from /usr/include/c++/12/map:60,
                  from 3rd_party/nlohmann/json_fwd.hpp:5,
                  from src/blocks/blocks.hpp:2,
@@ -50139,7 +50177,6 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/blocks/dependency_graph.o
 In file included from /usr/include/c++/12/map:60,
                  from 3rd_party/nlohmann/json_fwd.hpp:5,
                  from src/blocks/blocks.hpp:2,
@@ -50150,6 +50187,26 @@
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In file included from /usr/include/c++/12/map:60,
+                 from src/common/lut.hpp:3,
+                 from src/common/common.hpp:8,
+                 from src/util/util.hpp:2,
+                 from src/util/installation_uuid.cpp:2:
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
+/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
+ 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In file included from /usr/include/c++/12/map:61:
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]',
+    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
+    inlined from 'nlohmann::basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType>::basic_json(initializer_list_t, bool, value_t) [with ObjectType = std::map; ArrayType = std::vector; StringType = std::__cxx11::basic_string<char>; BooleanType = bool; NumberIntegerType = long long int; NumberUnsignedType = long long unsigned int; NumberFloatType = double; AllocatorType = std::allocator; JSONSerializer = nlohmann::adl_serializer; BinaryType = std::vector<unsigned char>]' at 3rd_party/nlohmann/json.hpp:1769:40:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<std::__cxx11::basic_string<char>, nlohmann::basic_json<>, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' {aka 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/rules/rule_match_component.o
+ build/obj/src/board/rule_shorted_pads.o
+In file included from /usr/include/c++/12/map:60,
                  from 3rd_party/nlohmann/json_fwd.hpp:5,
                  from src/common/arc.hpp:3,
                  from src/block_symbol/block_symbol.hpp:2,
@@ -50171,7 +50228,6 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/util/installation_uuid.o
 In file included from /usr/include/c++/12/vector:70,
                  from 3rd_party/nlohmann/json_fwd.hpp:8:
 /usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {long long int}; _Tp = long long int; _Alloc = std::allocator<long long int>]':
@@ -50187,30 +50243,11 @@
 /usr/include/c++/12/bits/vector.tcc:366:26: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int, std::allocator<long long int> > >' changed in GCC 7.1
   366 |         _M_realloc_insert(begin() + __n, std::move(__v));
       |         ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/rules/rule_match_component.o
- build/obj/src/board/rule_shorted_pads.o
-In file included from /usr/include/c++/12/map:60,
-                 from src/common/lut.hpp:3,
-                 from src/common/common.hpp:8,
-                 from src/util/util.hpp:2,
-                 from src/util/installation_uuid.cpp:2:
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
-/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
- 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In file included from /usr/include/c++/12/map:61:
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]',
-    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
-    inlined from 'nlohmann::basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType>::basic_json(initializer_list_t, bool, value_t) [with ObjectType = std::map; ArrayType = std::vector; StringType = std::__cxx11::basic_string<char>; BooleanType = bool; NumberIntegerType = long long int; NumberUnsignedType = long long unsigned int; NumberFloatType = double; AllocatorType = std::allocator; JSONSerializer = nlohmann::adl_serializer; BinaryType = std::vector<unsigned char>]' at 3rd_party/nlohmann/json.hpp:1769:40:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<std::__cxx11::basic_string<char>, nlohmann::basic_json<>, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' {aka 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/board/rule_thermals.o
  build/obj/src/common/pin_name_orientation.o
  build/obj/src/util/pin_direction_accumulator.o
  build/obj/src/block/net_tie.o
+ build/obj/src/schematic/schematic_net_tie.o
 In file included from /usr/include/c++/12/map:60,
                  from 3rd_party/nlohmann/json_fwd.hpp:5,
                  from src/rules/rule_match_component.hpp:2,
@@ -50219,7 +50256,7 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/schematic/schematic_net_tie.o
+ build/obj/src/board/board_net_tie.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -50229,7 +50266,6 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/board/board_net_tie.o
  build/obj/src/board/rule_net_ties.o
  build/obj/build/gen/resources.o
  build/obj/build/gen/version_gen.o
@@ -50237,11 +50273,11 @@
  build/obj/3rd_party/router/router/pns_router.o
  build/obj/3rd_party/router/router/pns_item.o
  build/obj/3rd_party/router/router/pns_node.o
- build/obj/3rd_party/router/router/pns_solid.o
 3rd_party/router/router/pns_node.cpp: In member function 'PNS::NODE::OPT_OBSTACLE PNS::NODE::NearestObstacle(const PNS::LINE*, int, const std::set<PNS::ITEM*>*)':
 3rd_party/router/router/pns_node.cpp:338:22: warning: unused variable 'debugDecorator' [-Wunused-variable]
   338 |     DEBUG_DECORATOR* debugDecorator = ROUTER::GetInstance()->GetInterface()->GetDebugDecorator();
       |                      ^~~~~~~~~~~~~~
+ build/obj/3rd_party/router/router/pns_solid.o
 3rd_party/router/router/pns_node.cpp: In member function 'const PNS::LINE PNS::NODE::AssembleLine(PNS::LINKED_ITEM*, int*, bool, bool)':
 3rd_party/router/router/pns_node.cpp:1000:26: warning: variable 'last' set but not used [-Wunused-but-set-variable]
  1000 |                 VECTOR2I last      = nSegs ? line.CPoint( -1 ) : VECTOR2I();
@@ -50261,20 +50297,20 @@
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<std::tuple<int, long long int, SHAPE_LINE_CHAIN> >::iterator' changed in GCC 7.1
   439 |       vector<_Tp, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~
- build/obj/3rd_party/router/router/pns_utils.o
 In file included from /usr/include/c++/12/vector:64:
 In member function 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = std::tuple<int, long long int, SHAPE_LINE_CHAIN>; _Alloc = std::allocator<std::tuple<int, long long int, SHAPE_LINE_CHAIN> >]',
     inlined from 'int PNS::OPTIMIZER::smartPadsSingle(PNS::LINE*, PNS::ITEM*, bool, int)' at 3rd_party/router/router/pns_optimizer.cpp:1004:39:
 /usr/include/c++/12/bits/stl_vector.h:1287:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::tuple<int, long long int, SHAPE_LINE_CHAIN>*, std::vector<std::tuple<int, long long int, SHAPE_LINE_CHAIN> > >' changed in GCC 7.1
  1287 |           _M_realloc_insert(end(), __x);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
+ build/obj/3rd_party/router/router/pns_utils.o
+ build/obj/3rd_party/router/router/pns_algo_base.o
+ build/obj/3rd_party/router/router/pns_diff_pair_placer.o
+ build/obj/3rd_party/router/router/pns_diff_pair.o
 3rd_party/router/router/pns_utils.cpp: In function 'const SHAPE_LINE_CHAIN PNS::ArcHull(const SHAPE_ARC&, int, int)':
 3rd_party/router/router/pns_utils.cpp:115:14: warning: variable 'lead' set but not used [-Wunused-but-set-variable]
   115 |         auto lead = ( pp + pp2 ) / 2;
       |              ^~~~
- build/obj/3rd_party/router/router/pns_algo_base.o
- build/obj/3rd_party/router/router/pns_diff_pair_placer.o
- build/obj/3rd_party/router/router/pns_diff_pair.o
  build/obj/3rd_party/router/router/pns_dp_meander_placer.o
 In file included from /usr/include/c++/12/bits/stl_algo.h:60,
                  from /usr/include/c++/12/functional:64,
@@ -50294,6 +50330,7 @@
  1802 |     __insertion_sort(_RandomAccessIterator __first,
       |     ^~~~~~~~~~~~~~~~
 /usr/include/c++/12/bits/stl_algo.h:1802:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int, std::allocator<long long int> > >' changed in GCC 7.1
+ build/obj/3rd_party/router/router/pns_dragger.o
 /usr/include/c++/12/bits/stl_algo.h: In function 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<long long int*, vector<long long int, allocator<long long int> > >; _Size = int; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
 /usr/include/c++/12/bits/stl_algo.h:1908:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int, std::allocator<long long int> > >' changed in GCC 7.1
  1908 |     __introsort_loop(_RandomAccessIterator __first,
@@ -50319,18 +50356,11 @@
 /usr/include/c++/12/bits/stl_algo.h:1854:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int, std::allocator<long long int> > >' changed in GCC 7.1
  1854 |         std::__insertion_sort(__first, __last, __comp);
       |         ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/3rd_party/router/router/pns_dragger.o
  build/obj/3rd_party/router/router/pns_itemset.o
  build/obj/3rd_party/router/router/pns_line_placer.o
-3rd_party/router/router/pns_line_placer.cpp: In function 'bool PNS::cursorDistMinimum(const SHAPE_LINE_CHAIN&, const VECTOR2I&, double, int&, VECTOR2I&)':
-3rd_party/router/router/pns_line_placer.cpp:469:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'unsigned int'} [-Wsign-compare]
-  469 |     for( int i = 0; i < dists.size(); i++ )
-      |                     ~~^~~~~~~~~~~~~~
-3rd_party/router/router/pns_line_placer.cpp:482:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'unsigned int'} [-Wsign-compare]
-  482 |         for( int i = 0; i < dists.size() - 3; i++ )
-      |                         ~~^~~~~~~~~~~~~~~~~~
  build/obj/3rd_party/router/router/pns_line.o
  build/obj/3rd_party/router/router/pns_via.o
+ build/obj/3rd_party/router/router/pns_logger.o
 3rd_party/router/router/pns_line.cpp: In member function 'bool PNS::LINE::Walkaround(const SHAPE_LINE_CHAIN&, SHAPE_LINE_CHAIN&, bool) const':
 3rd_party/router/router/pns_line.cpp:365:9: warning: unused variable 'i' [-Wunused-variable]
   365 |     int i = 0;
@@ -50339,7 +50369,13 @@
 3rd_party/router/router/pns_line.cpp:1100:9: warning: unused variable 'numPoints' [-Wunused-variable]
  1100 |     int numPoints = static_cast<int>( m_line.PointCount() );
       |         ^~~~~~~~~
- build/obj/3rd_party/router/router/pns_logger.o
+3rd_party/router/router/pns_line_placer.cpp: In function 'bool PNS::cursorDistMinimum(const SHAPE_LINE_CHAIN&, const VECTOR2I&, double, int&, VECTOR2I&)':
+3rd_party/router/router/pns_line_placer.cpp:469:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'unsigned int'} [-Wsign-compare]
+  469 |     for( int i = 0; i < dists.size(); i++ )
+      |                     ~~^~~~~~~~~~~~~~
+3rd_party/router/router/pns_line_placer.cpp:482:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'unsigned int'} [-Wsign-compare]
+  482 |         for( int i = 0; i < dists.size() - 3; i++ )
+      |                         ~~^~~~~~~~~~~~~~~~~~
 3rd_party/router/router/pns_logger.cpp: In member function 'void PNS::LOGGER::Save(const std::string&)':
 3rd_party/router/router/pns_logger.cpp:52:18: warning: unused variable 'id' [-Wunused-variable]
    52 |         uint64_t id = 0;
@@ -50383,6 +50419,17 @@
  build/obj/src/router/pns_horizon_iface.o
  build/obj/src/core/tools/tool_route_track_interactive.o
  build/obj/3rd_party/router/kimath/src/geometry/circle.o
+ build/obj/3rd_party/router/kimath/src/geometry/direction_45.o
+3rd_party/router/kimath/src/geometry/direction_45.cpp: In member function 'const SHAPE_LINE_CHAIN DIRECTION_45::BuildInitialTrace(const VECTOR2I&, const VECTOR2I&, bool, CORNER_MODE) const':
+3rd_party/router/kimath/src/geometry/direction_45.cpp:250:19: warning: declaration of 'arc' shadows a previous local [-Wshadow]
+  250 |         SHAPE_ARC arc;
+      |                   ^~~
+3rd_party/router/kimath/src/geometry/direction_45.cpp:82:15: note: shadowed declaration is here
+   82 |     SHAPE_ARC arc;
+      |               ^~~
+3rd_party/router/kimath/src/geometry/direction_45.cpp:254:70: warning: suggest parentheses around comparison in operand of '!=' [-Wparentheses]
+  254 |             arc.ConstructFromStartEndCenter( aP0, aP1, aP1 - mp0, sh == sw != startDiagonal );
+      |                                                                   ~~~^~~~~
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/core/tools/tool_route_track_interactive.cpp:4:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
@@ -50395,26 +50442,34 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/3rd_party/router/kimath/src/geometry/direction_45.o
-3rd_party/router/kimath/src/geometry/direction_45.cpp: In member function 'const SHAPE_LINE_CHAIN DIRECTION_45::BuildInitialTrace(const VECTOR2I&, const VECTOR2I&, bool, CORNER_MODE) const':
-3rd_party/router/kimath/src/geometry/direction_45.cpp:250:19: warning: declaration of 'arc' shadows a previous local [-Wshadow]
-  250 |         SHAPE_ARC arc;
-      |                   ^~~
-3rd_party/router/kimath/src/geometry/direction_45.cpp:82:15: note: shadowed declaration is here
-   82 |     SHAPE_ARC arc;
-      |               ^~~
-3rd_party/router/kimath/src/geometry/direction_45.cpp:254:70: warning: suggest parentheses around comparison in operand of '!=' [-Wparentheses]
-  254 |             arc.ConstructFromStartEndCenter( aP0, aP1, aP1 - mp0, sh == sw != startDiagonal );
-      |                                                                   ~~~^~~~~
+ build/obj/3rd_party/router/kimath/src/geometry/geometry_utils.o
 3rd_party/router/kimath/src/geometry/direction_45.cpp:158:47: warning: 'tangentLength' may be used uninitialized [-Wmaybe-uninitialized]
   158 |                 arcEndpoint = aP0 + mp1.Resize( std::abs( tangentLength ) );
       |                                     ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 3rd_party/router/kimath/src/geometry/direction_45.cpp:53:14: note: 'tangentLength' was declared here
    53 |     int      tangentLength;
       |              ^~~~~~~~~~~~~
- build/obj/3rd_party/router/kimath/src/geometry/geometry_utils.o
  build/obj/3rd_party/router/kimath/src/geometry/seg.o
  build/obj/3rd_party/router/kimath/src/geometry/shape_arc.o
+ build/obj/3rd_party/router/kimath/src/geometry/shape_collisions.o
+ build/obj/3rd_party/router/kimath/src/geometry/shape_compound.o
+3rd_party/router/kimath/src/geometry/shape_collisions.cpp: In function 'bool Collide(const SHAPE_CIRCLE&, const SHAPE_LINE_CHAIN_BASE&, int, int*, VECTOR2I*, VECTOR2I*)':
+3rd_party/router/kimath/src/geometry/shape_collisions.cpp:189:31: warning: comparison of integer expressions of different signedness: 'int' and 'size_t' {aka 'unsigned int'} [-Wsign-compare]
+  189 |             for( int s = 0; s < aB.GetSegmentCount(); s++ )
+      |                             ~~^~~~~~~~~~~~~~~~~~~~~~
+3rd_party/router/kimath/src/geometry/shape_collisions.cpp:254:31: warning: comparison of integer expressions of different signedness: 'int' and 'size_t' {aka 'unsigned int'} [-Wsign-compare]
+  254 |             for( int s = 0; s < aB.GetSegmentCount(); s++ )
+      |                             ~~^~~~~~~~~~~~~~~~~~~~~~
+3rd_party/router/kimath/src/geometry/shape_collisions.cpp:256:26: warning: declaration of 'f' shadows a previous local [-Wshadow]
+  256 |                 VECTOR2I f = pushoutForce( cmoved, aB.GetSegment( s ), aClearance );
+      |                          ^
+3rd_party/router/kimath/src/geometry/shape_collisions.cpp:242:22: note: shadowed declaration is here
+  242 |             VECTOR2I f;
+      |                      ^
+ build/obj/3rd_party/router/kimath/src/geometry/shape.o
+ build/obj/3rd_party/router/kimath/src/geometry/shape_file_io.o
+ build/obj/3rd_party/router/kimath/src/geometry/shape_line_chain.o
+ build/obj/3rd_party/router/kimath/src/geometry/shape_poly_set.o
 In file included from /usr/include/c++/12/vector:70,
                  from src/common/common.hpp:3,
                  from src/canvas/selectables.hpp:2,
@@ -50429,7 +50484,48 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/3rd_party/router/kimath/src/geometry/shape_collisions.o
+3rd_party/router/kimath/src/geometry/shape_line_chain.cpp: In member function 'long long int SHAPE_LINE_CHAIN::Length() const':
+3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:618:23: warning: comparison of integer expressions of different signedness: 'int' and 'size_t' {aka 'unsigned int'} [-Wsign-compare]
+  618 |     for( int i = 0; i < ArcCount(); i++ )
+      |                     ~~^~~~~~~~~~~~
+In file included from /usr/include/boost/assert.hpp:58,
+                 from /usr/include/boost/move/detail/type_traits.hpp:33,
+                 from /usr/include/boost/move/traits.hpp:31,
+                 from /usr/include/boost/move/utility.hpp:30,
+                 from /usr/include/boost/optional/optional.hpp:53,
+                 from /usr/include/boost/optional.hpp:15,
+                 from 3rd_party/router/include/core/optional.h:4,
+                 from 3rd_party/router/kimath/include/geometry/seg.h:35,
+                 from 3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:34:
+3rd_party/router/kimath/src/geometry/shape_line_chain.cpp: In member function 'void SHAPE_LINE_CHAIN::Replace(int, int, const SHAPE_LINE_CHAIN&)':
+3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:669:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<VECTOR2<int> >::size_type' {aka 'unsigned int'} [-Wsign-compare]
+  669 |     wxASSERT( aEndIndex < m_points.size() );
+      |               ~~~~~~~~~~^~~~~~~~~~~~~~~~~
+3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:669:5: note: in expansion of macro 'wxASSERT'
+  669 |     wxASSERT( aEndIndex < m_points.size() );
+      |     ^~~~~~~~
+3rd_party/router/kimath/src/geometry/shape_line_chain.cpp: In member function 'int SHAPE_LINE_CHAIN::ShapeCount() const':
+3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:912:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<VECTOR2<int> >::size_type' {aka 'unsigned int'} [-Wsign-compare]
+  912 |     for( int i = 0; i < m_points.size() - 1; i++ )
+      |                     ~~^~~~~~~~~~~~~~~~~~~~~
+3rd_party/router/kimath/src/geometry/shape_line_chain.cpp: In member function 'const SHAPE_LINE_CHAIN SHAPE_LINE_CHAIN::Slice(int, int) const':
+3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:1131:34: warning: declaration of 'currentArc' shadows a previous local [-Wshadow]
+ 1131 |                 const SHAPE_ARC& currentArc = Arc( arcIndex );
+      |                                  ^~~~~~~~~~
+3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:1115:30: note: shadowed declaration is here
+ 1115 |             const SHAPE_ARC &currentArc = Arc( ArcIndex( i ) );
+      |                              ^~~~~~~~~~
+3rd_party/router/kimath/src/geometry/shape_line_chain.cpp: In function 'void addIntersection(SHAPE_LINE_CHAIN::INTERSECTIONS&, int, const SHAPE_LINE_CHAIN::INTERSECTION&)':
+3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:1395:17: warning: unused variable 'last' [-Wunused-variable]
+ 1395 |     const auto& last = aIps.back();
+      |                 ^~~~
+3rd_party/router/kimath/src/geometry/shape_line_chain.cpp: In member function 'int SHAPE_LINE_CHAIN::Intersect(const SHAPE_LINE_CHAIN&, INTERSECTIONS&, bool) const':
+3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:1467:21: warning: unused variable 'distA' [-Wunused-variable]
+ 1467 |                 int distA = ( b.A - *p ).EuclideanNorm();
+      |                     ^~~~~
+3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:1468:21: warning: unused variable 'distB' [-Wunused-variable]
+ 1468 |                 int distB = ( b.B - *p ).EuclideanNorm();
+      |                     ^~~~~
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {long long int&, long long int&}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
     inlined from 'std::unique_ptr<PNS::SOLID> PNS::PNS_HORIZON_IFACE::syncPadstack(const horizon::Padstack*, const horizon::Placement&)' at src/router/pns_horizon_iface.cpp:661:34:
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
@@ -50481,19 +50577,6 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-3rd_party/router/kimath/src/geometry/shape_collisions.cpp: In function 'bool Collide(const SHAPE_CIRCLE&, const SHAPE_LINE_CHAIN_BASE&, int, int*, VECTOR2I*, VECTOR2I*)':
-3rd_party/router/kimath/src/geometry/shape_collisions.cpp:189:31: warning: comparison of integer expressions of different signedness: 'int' and 'size_t' {aka 'unsigned int'} [-Wsign-compare]
-  189 |             for( int s = 0; s < aB.GetSegmentCount(); s++ )
-      |                             ~~^~~~~~~~~~~~~~~~~~~~~~
-3rd_party/router/kimath/src/geometry/shape_collisions.cpp:254:31: warning: comparison of integer expressions of different signedness: 'int' and 'size_t' {aka 'unsigned int'} [-Wsign-compare]
-  254 |             for( int s = 0; s < aB.GetSegmentCount(); s++ )
-      |                             ~~^~~~~~~~~~~~~~~~~~~~~~
-3rd_party/router/kimath/src/geometry/shape_collisions.cpp:256:26: warning: declaration of 'f' shadows a previous local [-Wshadow]
-  256 |                 VECTOR2I f = pushoutForce( cmoved, aB.GetSegment( s ), aClearance );
-      |                          ^
-3rd_party/router/kimath/src/geometry/shape_collisions.cpp:242:22: note: shadowed declaration is here
-  242 |             VECTOR2I f;
-      |                      ^
 In file included from /usr/include/c++/12/vector:70,
                  from src/common/common.hpp:3,
                  from src/core/tool_pub.hpp:2,
@@ -50504,62 +50587,6 @@
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<ClipperLib::IntPoint>::iterator' changed in GCC 7.1
   439 |       vector<_Tp, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {ClipperLib::IntPoint}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
-    inlined from 'void std::vector<_Tp, _Alloc>::push_back(value_type&&) [with _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]' at /usr/include/c++/12/bits/stl_vector.h:1294:21,
-    inlined from 'bool horizon::keepout_hit(const Keepout&, Coordi, int)' at src/core/tools/tool_route_track_interactive.cpp:774:38,
-    inlined from 'virtual horizon::ToolResponse horizon::ToolRouteTrackInteractive::update(const horizon::ToolArgs&)' at src/core/tools/tool_route_track_interactive.cpp:876:40:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/3rd_party/router/kimath/src/geometry/shape_compound.o
- build/obj/3rd_party/router/kimath/src/geometry/shape.o
- build/obj/3rd_party/router/kimath/src/geometry/shape_file_io.o
- build/obj/3rd_party/router/kimath/src/geometry/shape_line_chain.o
- build/obj/3rd_party/router/kimath/src/geometry/shape_poly_set.o
- build/obj/3rd_party/router/kimath/src/geometry/shape_rect.o
-3rd_party/router/kimath/src/geometry/shape_line_chain.cpp: In member function 'long long int SHAPE_LINE_CHAIN::Length() const':
-3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:618:23: warning: comparison of integer expressions of different signedness: 'int' and 'size_t' {aka 'unsigned int'} [-Wsign-compare]
-  618 |     for( int i = 0; i < ArcCount(); i++ )
-      |                     ~~^~~~~~~~~~~~
-In file included from /usr/include/boost/assert.hpp:58,
-                 from /usr/include/boost/move/detail/type_traits.hpp:33,
-                 from /usr/include/boost/move/traits.hpp:31,
-                 from /usr/include/boost/move/utility.hpp:30,
-                 from /usr/include/boost/optional/optional.hpp:53,
-                 from /usr/include/boost/optional.hpp:15,
-                 from 3rd_party/router/include/core/optional.h:4,
-                 from 3rd_party/router/kimath/include/geometry/seg.h:35,
-                 from 3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:34:
-3rd_party/router/kimath/src/geometry/shape_line_chain.cpp: In member function 'void SHAPE_LINE_CHAIN::Replace(int, int, const SHAPE_LINE_CHAIN&)':
-3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:669:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<VECTOR2<int> >::size_type' {aka 'unsigned int'} [-Wsign-compare]
-  669 |     wxASSERT( aEndIndex < m_points.size() );
-      |               ~~~~~~~~~~^~~~~~~~~~~~~~~~~
-3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:669:5: note: in expansion of macro 'wxASSERT'
-  669 |     wxASSERT( aEndIndex < m_points.size() );
-      |     ^~~~~~~~
-3rd_party/router/kimath/src/geometry/shape_line_chain.cpp: In member function 'int SHAPE_LINE_CHAIN::ShapeCount() const':
-3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:912:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<VECTOR2<int> >::size_type' {aka 'unsigned int'} [-Wsign-compare]
-  912 |     for( int i = 0; i < m_points.size() - 1; i++ )
-      |                     ~~^~~~~~~~~~~~~~~~~~~~~
-3rd_party/router/kimath/src/geometry/shape_line_chain.cpp: In member function 'const SHAPE_LINE_CHAIN SHAPE_LINE_CHAIN::Slice(int, int) const':
-3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:1131:34: warning: declaration of 'currentArc' shadows a previous local [-Wshadow]
- 1131 |                 const SHAPE_ARC& currentArc = Arc( arcIndex );
-      |                                  ^~~~~~~~~~
-3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:1115:30: note: shadowed declaration is here
- 1115 |             const SHAPE_ARC &currentArc = Arc( ArcIndex( i ) );
-      |                              ^~~~~~~~~~
-3rd_party/router/kimath/src/geometry/shape_line_chain.cpp: In function 'void addIntersection(SHAPE_LINE_CHAIN::INTERSECTIONS&, int, const SHAPE_LINE_CHAIN::INTERSECTION&)':
-3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:1395:17: warning: unused variable 'last' [-Wunused-variable]
- 1395 |     const auto& last = aIps.back();
-      |                 ^~~~
-3rd_party/router/kimath/src/geometry/shape_line_chain.cpp: In member function 'int SHAPE_LINE_CHAIN::Intersect(const SHAPE_LINE_CHAIN&, INTERSECTIONS&, bool) const':
-3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:1467:21: warning: unused variable 'distA' [-Wunused-variable]
- 1467 |                 int distA = ( b.A - *p ).EuclideanNorm();
-      |                     ^~~~~
-3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:1468:21: warning: unused variable 'distB' [-Wunused-variable]
- 1468 |                 int distB = ( b.B - *p ).EuclideanNorm();
-      |                     ^~~~~
- build/obj/3rd_party/router/kimath/src/geometry/shape_segment.o
 In file included from 3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:36:
 In constructor 'SHAPE_LINE_CHAIN::INTERSECTION::INTERSECTION(SHAPE_LINE_CHAIN::INTERSECTION&&)',
     inlined from 'void boost::optional_detail::optional_base<T>::construct(rval_reference_type) [with T = SHAPE_LINE_CHAIN::INTERSECTION]' at /usr/include/boost/optional/optional.hpp:409:8,
@@ -50669,8 +50696,14 @@
 3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:1676:34: note: 'is.SHAPE_LINE_CHAIN::INTERSECTION::valid' was declared here
  1676 |                     INTERSECTION is;
       |                                  ^~
- build/obj/3rd_party/router/kimath/src/math/util.o
- build/obj/3rd_party/router/kimath/src/md5_hash.o
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {ClipperLib::IntPoint}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
+    inlined from 'void std::vector<_Tp, _Alloc>::push_back(value_type&&) [with _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]' at /usr/include/c++/12/bits/stl_vector.h:1294:21,
+    inlined from 'bool horizon::keepout_hit(const Keepout&, Coordi, int)' at src/core/tools/tool_route_track_interactive.cpp:774:38,
+    inlined from 'virtual horizon::ToolResponse horizon::ToolRouteTrackInteractive::update(const horizon::ToolArgs&)' at src/core/tools/tool_route_track_interactive.cpp:876:40:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/3rd_party/router/kimath/src/geometry/shape_rect.o
 In file included from /usr/include/c++/12/vector:70,
                  from /usr/include/c++/12/functional:62,
                  from 3rd_party/router/clipper_kicad/clipper.hpp:52,
@@ -50679,13 +50712,16 @@
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<ClipperLibKiCad::IntPoint>::iterator' changed in GCC 7.1
   439 |       vector<_Tp, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~
- build/obj/3rd_party/router/color4d.o
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {ClipperLibKiCad::IntPoint}; _Tp = ClipperLibKiCad::IntPoint; _Alloc = std::allocator<ClipperLibKiCad::IntPoint>]',
     inlined from 'void std::vector<_Tp, _Alloc>::push_back(value_type&&) [with _Tp = ClipperLibKiCad::IntPoint; _Alloc = std::allocator<ClipperLibKiCad::IntPoint>]' at /usr/include/c++/12/bits/stl_vector.h:1294:21,
     inlined from 'ClipperLibKiCad::Path SHAPE_LINE_CHAIN::convertToClipper(bool, std::vector<CLIPPER_Z_VALUE>&, std::vector<SHAPE_ARC>&) const' at 3rd_party/router/kimath/src/geometry/shape_line_chain.cpp:121:25:
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLibKiCad::IntPoint*, std::vector<ClipperLibKiCad::IntPoint> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/3rd_party/router/kimath/src/geometry/shape_segment.o
+ build/obj/3rd_party/router/kimath/src/math/util.o
+ build/obj/3rd_party/router/kimath/src/md5_hash.o
+ build/obj/3rd_party/router/color4d.o
 In file included from /usr/include/c++/12/vector:70,
                  from 3rd_party/router/kimath/src/geometry/shape_poly_set.cpp:43:
 /usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const int&, const int&}; _Tp = ClipperLibKiCad::IntPoint; _Alloc = std::allocator<ClipperLibKiCad::IntPoint>]':
@@ -50696,11 +50732,8 @@
  build/obj/3rd_party/router/base_units.o
  build/obj/3rd_party/router/clipper_kicad/clipper.o
  build/obj/3rd_party/router/kimath/src/math/vector2.o
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {const int&, const int&}; _Tp = ClipperLibKiCad::IntPoint; _Alloc = std::allocator<ClipperLibKiCad::IntPoint>]',
-    inlined from 'static const SHAPE_POLY_SET SHAPE_POLY_SET::BuildPolysetFromOrientedPaths(const std::vector<SHAPE_LINE_CHAIN>&, bool, bool)' at 3rd_party/router/kimath/src/geometry/shape_poly_set.cpp:2545:28:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLibKiCad::IntPoint*, std::vector<ClipperLibKiCad::IntPoint> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/import_step/step_importer.o
+ build/obj/src/export_step/export_step.o
 In file included from /usr/include/c++/12/bits/stl_algo.h:60,
                  from /usr/include/c++/12/functional:64,
                  from 3rd_party/router/clipper_kicad/clipper.hpp:52,
@@ -50709,14 +50742,17 @@
 /usr/include/c++/12/bits/stl_heap.h:224:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int, std::allocator<long long int> > >' changed in GCC 7.1
   224 |     __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
       |     ^~~~~~~~~~~~~
- build/obj/src/import_step/step_importer.o
- build/obj/src/export_step/export_step.o
 In file included from /usr/include/c++/12/vector:70,
                  from /usr/include/c++/12/functional:62:
 /usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const ClipperLibKiCad::IntPoint&}; _Tp = ClipperLibKiCad::IntPoint; _Alloc = std::allocator<ClipperLibKiCad::IntPoint>]':
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<ClipperLibKiCad::IntPoint>::iterator' changed in GCC 7.1
   439 |       vector<_Tp, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {const int&, const int&}; _Tp = ClipperLibKiCad::IntPoint; _Alloc = std::allocator<ClipperLibKiCad::IntPoint>]',
+    inlined from 'static const SHAPE_POLY_SET SHAPE_POLY_SET::BuildPolysetFromOrientedPaths(const std::vector<SHAPE_LINE_CHAIN>&, bool, bool)' at 3rd_party/router/kimath/src/geometry/shape_poly_set.cpp:2545:28:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLibKiCad::IntPoint*, std::vector<ClipperLibKiCad::IntPoint> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In file included from /usr/include/c++/12/vector:64:
 In member function 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = ClipperLibKiCad::IntPoint; _Alloc = std::allocator<ClipperLibKiCad::IntPoint>]',
     inlined from 'void ClipperLibKiCad::ClipperOffset::AddPath(const ClipperLibKiCad::Path&, ClipperLibKiCad::JoinType, ClipperLibKiCad::EndType)' at 3rd_party/router/clipper_kicad/clipper.cpp:4970:31:
@@ -50733,17 +50769,19 @@
 /usr/include/c++/12/bits/stl_vector.h:1287:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLibKiCad::IntPoint*, std::vector<ClipperLibKiCad::IntPoint> >' changed in GCC 7.1
  1287 |           _M_realloc_insert(end(), __x);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
-In member function 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = ClipperLibKiCad::IntPoint; _Alloc = std::allocator<ClipperLibKiCad::IntPoint>]',
-    inlined from 'void ClipperLibKiCad::Clipper::BuildResult2(ClipperLibKiCad::PolyTree&)' at 3rd_party/router/clipper_kicad/clipper.cpp:4221:34:
-/usr/include/c++/12/bits/stl_vector.h:1287:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLibKiCad::IntPoint*, std::vector<ClipperLibKiCad::IntPoint> >' changed in GCC 7.1
- 1287 |           _M_realloc_insert(end(), __x);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
 In file included from src/canvas/canvas_patch.hpp:2,
                  from src/export_step/export_step.cpp:4:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
+In member function 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = ClipperLibKiCad::IntPoint; _Alloc = std::allocator<ClipperLibKiCad::IntPoint>]',
+    inlined from 'void ClipperLibKiCad::Clipper::BuildResult2(ClipperLibKiCad::PolyTree&)' at 3rd_party/router/clipper_kicad/clipper.cpp:4221:34:
+/usr/include/c++/12/bits/stl_vector.h:1287:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLibKiCad::IntPoint*, std::vector<ClipperLibKiCad::IntPoint> >' changed in GCC 7.1
+ 1287 |           _M_realloc_insert(end(), __x);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
+ build/obj/src/imp/3d/imp_package_3d_occt.o
+ build/obj/src/imp/imp_main.o
 /usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {ClipperLibKiCad::DoublePoint&}; _Tp = ClipperLibKiCad::DoublePoint; _Alloc = std::allocator<ClipperLibKiCad::DoublePoint>]':
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<ClipperLibKiCad::DoublePoint>::iterator' changed in GCC 7.1
   439 |       vector<_Tp, _Alloc>::
@@ -50771,7 +50809,6 @@
 /usr/include/c++/12/bits/stl_vector.h:1287:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int, std::allocator<long long int> > >' changed in GCC 7.1
  1287 |           _M_realloc_insert(end(), __x);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
- build/obj/src/imp/3d/imp_package_3d_occt.o
 In member function 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = long long int; _Alloc = std::allocator<long long int>]',
     inlined from 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(const value_type&) [with _Tp = long long int; _Sequence = std::vector<long long int, std::allocator<long long int> >; _Compare = std::less<long long int>]' at /usr/include/c++/12/bits/stl_queue.h:740:13,
     inlined from 'void ClipperLibKiCad::ClipperBase::InsertScanbeam(ClipperLibKiCad::cInt)' at 3rd_party/router/clipper_kicad/clipper.cpp:1742:20,
@@ -50960,9 +50997,16 @@
 /usr/include/c++/12/bits/stl_vector.h:1287:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLibKiCad::IntPoint*, std::vector<ClipperLibKiCad::IntPoint> >' changed in GCC 7.1
  1287 |           _M_realloc_insert(end(), __x);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
- build/obj/src/imp/imp_main.o
  build/obj/src/imp/main_window.o
 In file included from src/canvas/canvas_gl.hpp:2,
+                 from src/imp/imp.hpp:17,
+                 from src/imp/imp_main.cpp:1:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
+ build/obj/src/imp/imp.o
+In file included from src/canvas/canvas_gl.hpp:2,
                  from src/imp/3d/../imp.hpp:17,
                  from src/imp/3d/../imp_layer.hpp:2,
                  from src/imp/3d/../imp_package.hpp:5,
@@ -50980,13 +51024,6 @@
       |                             ^~~~
       |                             &
 In file included from src/canvas/canvas_gl.hpp:2,
-                 from src/imp/imp.hpp:17,
-                 from src/imp/imp_main.cpp:1:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
-In file included from src/canvas/canvas_gl.hpp:2,
                  from src/imp/main_window.cpp:2:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
@@ -51016,14 +51053,6 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Coord<long long int>*, std::vector<horizon::Coord<long long int> > >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {const double&, const double&, const double&}; _Tp = horizon::Point3D; _Alloc = std::allocator<horizon::Point3D>]',
-    inlined from 'virtual horizon::STEPImporter::Faces horizon::ImpPackage::ImportCanvas3D::import_step(const std::string&, const std::string&)' at src/imp/3d/imp_package_3d_occt.cpp:34:36:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Point3D*, std::vector<horizon::Point3D> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/imp/imp.o
- build/obj/src/imp/imp_search.o
- build/obj/src/imp/imp_key.o
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/imp/imp.hpp:17,
                  from src/imp/imp.cpp:1:
@@ -51031,13 +51060,14 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
-In file included from src/canvas/canvas_gl.hpp:2,
-                 from src/imp/imp.hpp:17,
-                 from src/imp/imp_key.cpp:1:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
+ build/obj/src/imp/imp_search.o
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {const double&, const double&, const double&}; _Tp = horizon::Point3D; _Alloc = std::allocator<horizon::Point3D>]',
+    inlined from 'virtual horizon::STEPImporter::Faces horizon::ImpPackage::ImportCanvas3D::import_step(const std::string&, const std::string&)' at src/imp/3d/imp_package_3d_occt.cpp:34:36:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Point3D*, std::vector<horizon::Point3D> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/imp/imp_key.o
+ build/obj/src/imp/imp_hud.o
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/imp/imp.hpp:17,
                  from src/imp/imp_search.cpp:1:
@@ -51045,7 +51075,6 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/imp/imp_hud.o
 src/imp/imp.cpp: In lambda function:
 src/imp/imp.cpp:502:14: note: parameter passing for argument of type 'std::pair<float, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   502 |         auto [scale, offset] = canvas->get_scale_and_offset();
@@ -51054,21 +51083,47 @@
 src/imp/imp.cpp:580:14: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   580 |         auto bbox = canvas->get_bbox();
       |              ^~~~
- build/obj/src/imp/imp_action.o
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/imp/imp.hpp:17,
-                 from src/imp/imp_hud.cpp:1:
+                 from src/imp/imp_key.cpp:1:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/imp/imp.hpp:17,
-                 from src/imp/imp_action.cpp:1:
+                 from src/imp/imp_hud.cpp:1:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
+ build/obj/src/imp/imp_action.o
+ build/obj/src/imp/imp_layer.o
+In file included from /usr/include/c++/12/vector:70,
+                 from src/common/common.hpp:3,
+                 from src/canvas/selectables.hpp:2,
+                 from src/core/core.hpp:2,
+                 from src/imp/imp.hpp:2:
+/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const horizon::Coord<long long int>&}; _Tp = horizon::Coord<long long int>; _Alloc = std::allocator<horizon::Coord<long long int> >]':
+/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Coord<long long int> >::iterator' changed in GCC 7.1
+  439 |       vector<_Tp, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~
+In file included from /usr/include/c++/12/vector:64:
+In member function 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = horizon::Coord<long long int>; _Alloc = std::allocator<horizon::Coord<long long int> >]',
+    inlined from 'virtual std::string horizon::ImpBase::get_hud_text(std::set<horizon::SelectableRef>&)' at src/imp/imp_hud.cpp:158:44:
+/usr/include/c++/12/bits/stl_vector.h:1287:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Coord<long long int>*, std::vector<horizon::Coord<long long int> > >' changed in GCC 7.1
+ 1287 |           _M_realloc_insert(end(), __x);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
+In member function 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = horizon::Coord<long long int>; _Alloc = std::allocator<horizon::Coord<long long int> >]',
+    inlined from 'virtual std::string horizon::ImpBase::get_hud_text(std::set<horizon::SelectableRef>&)' at src/imp/imp_hud.cpp:162:44:
+/usr/include/c++/12/bits/stl_vector.h:1287:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Coord<long long int>*, std::vector<horizon::Coord<long long int> > >' changed in GCC 7.1
+ 1287 |           _M_realloc_insert(end(), __x);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
+In member function 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = horizon::Coord<long long int>; _Alloc = std::allocator<horizon::Coord<long long int> >]',
+    inlined from 'virtual std::string horizon::ImpBase::get_hud_text(std::set<horizon::SelectableRef>&)' at src/imp/imp_hud.cpp:166:44:
+/usr/include/c++/12/bits/stl_vector.h:1287:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Coord<long long int>*, std::vector<horizon::Coord<long long int> > >' changed in GCC 7.1
+ 1287 |           _M_realloc_insert(end(), __x);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
 In file included from /usr/include/c++/12/functional:59,
                  from /usr/include/sigc++-2.0/sigc++/reference_wrapper.h:22,
                  from /usr/include/sigc++-2.0/sigc++/adaptors/bound_argument.h:24,
@@ -51081,6 +51136,14 @@
 /usr/include/c++/12/bits/std_function.h:288:7: note: parameter passing for argument of type 'std::pair<float, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   288 |       _M_invoke(const _Any_data& __functor, _ArgTypes&&... __args)
       |       ^~~~~~~~~
+In file included from src/canvas/canvas_gl.hpp:2,
+                 from src/imp/imp.hpp:17,
+                 from src/imp/imp_action.cpp:1:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
+ build/obj/src/imp/imp_symbol.o
 src/imp/imp_action.cpp: In member function 'void horizon::ImpBase::handle_pan_action(const horizon::ActionConnection&)':
 src/imp/imp_action.cpp:294:54: note: parameter passing for argument of type 'std::pair<float, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   294 |     auto [sc, offset] = canvas->get_scale_and_offset();
@@ -51116,32 +51179,14 @@
       |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   513 |                                             std::tuple<>());
       |                                             ~~~~~~~~~~~~~~~
-In file included from /usr/include/c++/12/vector:70,
-                 from src/common/common.hpp:3,
-                 from src/canvas/selectables.hpp:2,
-                 from src/core/core.hpp:2,
-                 from src/imp/imp.hpp:2:
-/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const horizon::Coord<long long int>&}; _Tp = horizon::Coord<long long int>; _Alloc = std::allocator<horizon::Coord<long long int> >]':
-/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Coord<long long int> >::iterator' changed in GCC 7.1
-  439 |       vector<_Tp, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~
- build/obj/src/imp/imp_layer.o
-In file included from /usr/include/c++/12/vector:64:
-In member function 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = horizon::Coord<long long int>; _Alloc = std::allocator<horizon::Coord<long long int> >]',
-    inlined from 'virtual std::string horizon::ImpBase::get_hud_text(std::set<horizon::SelectableRef>&)' at src/imp/imp_hud.cpp:158:44:
-/usr/include/c++/12/bits/stl_vector.h:1287:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Coord<long long int>*, std::vector<horizon::Coord<long long int> > >' changed in GCC 7.1
- 1287 |           _M_realloc_insert(end(), __x);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
-In member function 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = horizon::Coord<long long int>; _Alloc = std::allocator<horizon::Coord<long long int> >]',
-    inlined from 'virtual std::string horizon::ImpBase::get_hud_text(std::set<horizon::SelectableRef>&)' at src/imp/imp_hud.cpp:162:44:
-/usr/include/c++/12/bits/stl_vector.h:1287:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Coord<long long int>*, std::vector<horizon::Coord<long long int> > >' changed in GCC 7.1
- 1287 |           _M_realloc_insert(end(), __x);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
-In member function 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = horizon::Coord<long long int>; _Alloc = std::allocator<horizon::Coord<long long int> >]',
-    inlined from 'virtual std::string horizon::ImpBase::get_hud_text(std::set<horizon::SelectableRef>&)' at src/imp/imp_hud.cpp:166:44:
-/usr/include/c++/12/bits/stl_vector.h:1287:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Coord<long long int>*, std::vector<horizon::Coord<long long int> > >' changed in GCC 7.1
- 1287 |           _M_realloc_insert(end(), __x);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
+In file included from src/canvas/canvas_gl.hpp:2,
+                 from src/imp/imp.hpp:17,
+                 from src/imp/imp_layer.hpp:2,
+                 from src/imp/imp_layer.cpp:1:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
 In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]',
     inlined from 'bool nlohmann::detail::json_sax_dom_parser<BasicJsonType>::key(string_t&) [with BasicJsonType = nlohmann::basic_json<>]' at 3rd_party/nlohmann/detail/input/json_sax.hpp:236:72,
     inlined from 'bool nlohmann::detail::parser<BasicJsonType, InputAdapterType>::sax_parse_internal(SAX*) [with SAX = nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<> >; BasicJsonType = nlohmann::basic_json<>; InputAdapterType = nlohmann::detail::iterator_input_adapter<const char*>]' at 3rd_party/nlohmann/detail/input/parser.hpp:410:21:
@@ -51152,15 +51197,6 @@
       |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   513 |                                             std::tuple<>());
       |                                             ~~~~~~~~~~~~~~~
- build/obj/src/imp/imp_symbol.o
-In file included from src/canvas/canvas_gl.hpp:2,
-                 from src/imp/imp.hpp:17,
-                 from src/imp/imp_layer.hpp:2,
-                 from src/imp/imp_layer.cpp:1:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/imp/imp.hpp:17,
                  from src/imp/imp_symbol.hpp:2,
@@ -51179,15 +51215,7 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
-In file included from src/canvas/canvas_gl.hpp:2,
-                 from src/imp/imp.hpp:17,
-                 from src/imp/imp_layer.hpp:2,
-                 from src/imp/imp_padstack.hpp:2,
-                 from src/imp/imp_padstack.cpp:1:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
+ build/obj/src/imp/imp_package.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -51198,7 +51226,16 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/imp/imp_package.o
+In file included from src/canvas/canvas_gl.hpp:2,
+                 from src/imp/imp.hpp:17,
+                 from src/imp/imp_layer.hpp:2,
+                 from src/imp/imp_padstack.hpp:2,
+                 from src/imp/imp_padstack.cpp:1:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
+ build/obj/src/imp/3d/imp_package_3d.o
 src/imp/imp_schematic.cpp: In member function 'void horizon::ImpSchematic::handle_select_sheet(const horizon::UUID&, const horizon::UUID&, const horizon::UUIDVec&)':
 src/imp/imp_schematic.cpp:53:58: note: parameter passing for argument of type 'std::pair<float, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
    53 |         auto [sc, offset] = canvas->get_scale_and_offset();
@@ -51206,7 +51243,6 @@
 src/imp/imp_schematic.cpp:83:38: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
    83 |         auto bbox = canvas->get_bbox();
       |                                      ^
- build/obj/src/imp/3d/imp_package_3d.o
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/imp/imp.hpp:17,
                  from src/imp/imp_layer.hpp:2,
@@ -51225,6 +51261,7 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
+ build/obj/src/imp/3d/model_editor.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -51248,64 +51285,6 @@
    46 | void ImpSchematic::handle_select_sheet(const UUID &sheet, const UUID &block, const UUIDVec &instance_path)
       |      ^~~~~~~~~~~~
 src/imp/imp_schematic.cpp:46:6: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-src/imp/imp_schematic.cpp:46:6: note: parameter passing for argument of type 'std::pair<float, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-src/imp/imp_schematic.cpp:83:37: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-   83 |         auto bbox = canvas->get_bbox();
-      |                     ~~~~~~~~~~~~~~~~^~
-In file included from /usr/include/c++/12/map:61:
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {std::pair<horizon::UUID, horizon::BusLabel>}; _Key = horizon::UUID; _Tp = horizon::BusLabel; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::BusLabel> >]',
-    inlined from 'std::__enable_if_t<std::is_constructible<std::pair<const _Key, _Tp>, _Pair>::value, std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> > std::map<_Key, _Tp, _Compare, _Alloc>::insert(_Pair&&) [with _Pair = std::pair<horizon::UUID, horizon::BusLabel>; _Key = horizon::UUID; _Tp = horizon::BusLabel; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::BusLabel> >]' at /usr/include/c++/12/bits/stl_map.h:858:27,
-    inlined from 'void horizon::ImpSchematic::handle_move_to_other_sheet(const horizon::ActionConnection&)' at src/imp/imp_schematic.cpp:1499:41:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::BusLabel>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::BusLabel>, std::_Select1st<std::pair<const horizon::UUID, horizon::BusLabel> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::BusLabel> > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {std::pair<horizon::UUID, horizon::Text>}; _Key = horizon::UUID; _Tp = horizon::Text; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Text> >]',
-    inlined from 'std::__enable_if_t<std::is_constructible<std::pair<const _Key, _Tp>, _Pair>::value, std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> > std::map<_Key, _Tp, _Compare, _Alloc>::insert(_Pair&&) [with _Pair = std::pair<horizon::UUID, horizon::Text>; _Key = horizon::UUID; _Tp = horizon::Text; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Text> >]' at /usr/include/c++/12/bits/stl_map.h:858:27,
-    inlined from 'void horizon::ImpSchematic::handle_move_to_other_sheet(const horizon::ActionConnection&)' at src/imp/imp_schematic.cpp:1527:36:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Text>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Text>, std::_Select1st<std::pair<const horizon::UUID, horizon::Text> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Text> > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {std::pair<horizon::UUID, horizon::Line>}; _Key = horizon::UUID; _Tp = horizon::Line; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Line> >]',
-    inlined from 'std::__enable_if_t<std::is_constructible<std::pair<const _Key, _Tp>, _Pair>::value, std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> > std::map<_Key, _Tp, _Compare, _Alloc>::insert(_Pair&&) [with _Pair = std::pair<horizon::UUID, horizon::Line>; _Key = horizon::UUID; _Tp = horizon::Line; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Line> >]' at /usr/include/c++/12/bits/stl_map.h:858:27,
-    inlined from 'void horizon::ImpSchematic::handle_move_to_other_sheet(const horizon::ActionConnection&)' at src/imp/imp_schematic.cpp:1531:36:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Line>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Line>, std::_Select1st<std::pair<const horizon::UUID, horizon::Line> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Line> > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {std::pair<horizon::UUID, horizon::Arc>}; _Key = horizon::UUID; _Tp = horizon::Arc; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Arc> >]',
-    inlined from 'std::__enable_if_t<std::is_constructible<std::pair<const _Key, _Tp>, _Pair>::value, std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> > std::map<_Key, _Tp, _Compare, _Alloc>::insert(_Pair&&) [with _Pair = std::pair<horizon::UUID, horizon::Arc>; _Key = horizon::UUID; _Tp = horizon::Arc; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Arc> >]' at /usr/include/c++/12/bits/stl_map.h:858:27,
-    inlined from 'void horizon::ImpSchematic::handle_move_to_other_sheet(const horizon::ActionConnection&)' at src/imp/imp_schematic.cpp:1539:35:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Arc>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Arc>, std::_Select1st<std::pair<const horizon::UUID, horizon::Arc> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Arc> > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {std::pair<horizon::UUID, horizon::Picture>}; _Key = horizon::UUID; _Tp = horizon::Picture; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Picture> >]',
-    inlined from 'std::__enable_if_t<std::is_constructible<std::pair<const _Key, _Tp>, _Pair>::value, std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> > std::map<_Key, _Tp, _Compare, _Alloc>::insert(_Pair&&) [with _Pair = std::pair<horizon::UUID, horizon::Picture>; _Key = horizon::UUID; _Tp = horizon::Picture; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Picture> >]' at /usr/include/c++/12/bits/stl_map.h:858:27,
-    inlined from 'void horizon::ImpSchematic::handle_move_to_other_sheet(const horizon::ActionConnection&)' at src/imp/imp_schematic.cpp:1543:39:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Picture>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Picture>, std::_Select1st<std::pair<const horizon::UUID, horizon::Picture> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Picture> > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In file included from /usr/include/c++/12/map:60,
-                 from src/common/lut.hpp:3,
-                 from src/common/common.hpp:8,
-                 from src/canvas/selectables.hpp:2,
-                 from src/core/core.hpp:2,
-                 from src/core/core_package.hpp:2,
-                 from src/imp/imp_package.hpp:2:
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Shape&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::Shape>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::Shape> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Shape> >]':
-/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Shape>, std::_Select1st<std::pair<const horizon::UUID, horizon::Shape> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Shape> > >::const_iterator' changed in GCC 7.1
- 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Pad}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::Pad>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::Pad> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Pad> >]':
-/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Pad>, std::_Select1st<std::pair<const horizon::UUID, horizon::Pad> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Pad> > >::const_iterator' changed in GCC 7.1
 In file included from /usr/include/c++/12/vector:70,
                  from src/common/common.hpp:3,
                  from src/canvas/selectables.hpp:2,
@@ -51316,12 +51295,12 @@
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Polygon::Vertex>::iterator' changed in GCC 7.1
   439 |       vector<_Tp, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~
+src/imp/imp_schematic.cpp:46:6: note: parameter passing for argument of type 'std::pair<float, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+src/imp/imp_schematic.cpp:83:37: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+   83 |         auto bbox = canvas->get_bbox();
+      |                     ~~~~~~~~~~~~~~~~^~
 /usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]':
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Polygon::Vertex>::iterator' changed in GCC 7.1
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
-/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
- 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8:
@@ -51358,6 +51337,33 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In file included from /usr/include/c++/12/map:60,
+                 from src/common/lut.hpp:3,
+                 from src/common/common.hpp:8,
+                 from src/canvas/selectables.hpp:2,
+                 from src/core/core.hpp:2,
+                 from src/core/core_package.hpp:2,
+                 from src/imp/imp_package.hpp:2:
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Shape&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::Shape>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::Shape> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Shape> >]':
+/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Shape>, std::_Select1st<std::pair<const horizon::UUID, horizon::Shape> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Shape> > >::const_iterator' changed in GCC 7.1
+ 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Pad}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::Pad>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::Pad> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Pad> >]':
+/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Pad>, std::_Select1st<std::pair<const horizon::UUID, horizon::Pad> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Pad> > >::const_iterator' changed in GCC 7.1
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
+/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
+ 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In file included from src/canvas/canvas_gl.hpp:2,
+                 from src/imp/imp.hpp:17,
+                 from src/imp/imp_layer.hpp:2,
+                 from src/imp/imp_package.hpp:5,
+                 from src/imp/3d/model_editor.cpp:2:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
+ build/obj/src/imp/3d/place_model_box.o
 In file included from /usr/include/c++/12/map:61:
 In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Shape&}; _Key = horizon::UUID; _Tp = horizon::Shape; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Shape> >]',
     inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::Shape&}; _Key = horizon::UUID; _Tp = horizon::Shape; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Shape> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
@@ -51367,6 +51373,47 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In file included from /usr/include/c++/12/map:61:
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {std::pair<horizon::UUID, horizon::BusLabel>}; _Key = horizon::UUID; _Tp = horizon::BusLabel; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::BusLabel> >]',
+    inlined from 'std::__enable_if_t<std::is_constructible<std::pair<const _Key, _Tp>, _Pair>::value, std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> > std::map<_Key, _Tp, _Compare, _Alloc>::insert(_Pair&&) [with _Pair = std::pair<horizon::UUID, horizon::BusLabel>; _Key = horizon::UUID; _Tp = horizon::BusLabel; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::BusLabel> >]' at /usr/include/c++/12/bits/stl_map.h:858:27,
+    inlined from 'void horizon::ImpSchematic::handle_move_to_other_sheet(const horizon::ActionConnection&)' at src/imp/imp_schematic.cpp:1499:41:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::BusLabel>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::BusLabel>, std::_Select1st<std::pair<const horizon::UUID, horizon::BusLabel> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::BusLabel> > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {std::pair<horizon::UUID, horizon::Text>}; _Key = horizon::UUID; _Tp = horizon::Text; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Text> >]',
+    inlined from 'std::__enable_if_t<std::is_constructible<std::pair<const _Key, _Tp>, _Pair>::value, std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> > std::map<_Key, _Tp, _Compare, _Alloc>::insert(_Pair&&) [with _Pair = std::pair<horizon::UUID, horizon::Text>; _Key = horizon::UUID; _Tp = horizon::Text; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Text> >]' at /usr/include/c++/12/bits/stl_map.h:858:27,
+    inlined from 'void horizon::ImpSchematic::handle_move_to_other_sheet(const horizon::ActionConnection&)' at src/imp/imp_schematic.cpp:1527:36:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Text>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Text>, std::_Select1st<std::pair<const horizon::UUID, horizon::Text> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Text> > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {std::pair<horizon::UUID, horizon::Line>}; _Key = horizon::UUID; _Tp = horizon::Line; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Line> >]',
+    inlined from 'std::__enable_if_t<std::is_constructible<std::pair<const _Key, _Tp>, _Pair>::value, std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> > std::map<_Key, _Tp, _Compare, _Alloc>::insert(_Pair&&) [with _Pair = std::pair<horizon::UUID, horizon::Line>; _Key = horizon::UUID; _Tp = horizon::Line; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Line> >]' at /usr/include/c++/12/bits/stl_map.h:858:27,
+    inlined from 'void horizon::ImpSchematic::handle_move_to_other_sheet(const horizon::ActionConnection&)' at src/imp/imp_schematic.cpp:1531:36:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Line>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Line>, std::_Select1st<std::pair<const horizon::UUID, horizon::Line> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Line> > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {std::pair<horizon::UUID, horizon::Arc>}; _Key = horizon::UUID; _Tp = horizon::Arc; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Arc> >]',
+    inlined from 'std::__enable_if_t<std::is_constructible<std::pair<const _Key, _Tp>, _Pair>::value, std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> > std::map<_Key, _Tp, _Compare, _Alloc>::insert(_Pair&&) [with _Pair = std::pair<horizon::UUID, horizon::Arc>; _Key = horizon::UUID; _Tp = horizon::Arc; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Arc> >]' at /usr/include/c++/12/bits/stl_map.h:858:27,
+    inlined from 'void horizon::ImpSchematic::handle_move_to_other_sheet(const horizon::ActionConnection&)' at src/imp/imp_schematic.cpp:1539:35:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Arc>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Arc>, std::_Select1st<std::pair<const horizon::UUID, horizon::Arc> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Arc> > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {std::pair<horizon::UUID, horizon::Picture>}; _Key = horizon::UUID; _Tp = horizon::Picture; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Picture> >]',
+    inlined from 'std::__enable_if_t<std::is_constructible<std::pair<const _Key, _Tp>, _Pair>::value, std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> > std::map<_Key, _Tp, _Compare, _Alloc>::insert(_Pair&&) [with _Pair = std::pair<horizon::UUID, horizon::Picture>; _Key = horizon::UUID; _Tp = horizon::Picture; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Picture> >]' at /usr/include/c++/12/bits/stl_map.h:858:27,
+    inlined from 'void horizon::ImpSchematic::handle_move_to_other_sheet(const horizon::ActionConnection&)' at src/imp/imp_schematic.cpp:1543:39:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Picture>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Picture>, std::_Select1st<std::pair<const horizon::UUID, horizon::Picture> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Picture> > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Pad}; _Key = horizon::UUID; _Tp = horizon::Pad; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Pad> >]',
     inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::Pad}; _Key = horizon::UUID; _Tp = horizon::Pad; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Pad> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
     inlined from 'virtual bool horizon::ImpPackage::handle_broadcast(const horizon::json&)' at src/imp/imp_package.cpp:515:49:
@@ -51375,18 +51422,8 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/imp/3d/model_editor.o
- build/obj/src/imp/3d/place_model_box.o
  build/obj/src/imp/imp_board.o
-In file included from src/canvas/canvas_gl.hpp:2,
-                 from src/imp/imp.hpp:17,
-                 from src/imp/imp_layer.hpp:2,
-                 from src/imp/imp_package.hpp:5,
-                 from src/imp/3d/model_editor.cpp:2:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
+ build/obj/src/imp/imp_frame.o
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/imp/3d/../imp.hpp:17,
                  from src/imp/3d/../imp_layer.hpp:2,
@@ -51396,6 +51433,7 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
+ build/obj/src/imp/imp_decal.o
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/imp/imp.hpp:17,
                  from src/imp/imp_layer.hpp:2,
@@ -51405,8 +51443,6 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/imp/imp_frame.o
- build/obj/src/imp/imp_decal.o
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/imp/imp.hpp:17,
                  from src/imp/imp_frame.hpp:2,
@@ -51415,6 +51451,7 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
+ build/obj/src/imp/tool_popover.o
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/imp/imp.hpp:17,
                  from src/imp/imp_layer.hpp:2,
@@ -51424,8 +51461,18 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/imp/tool_popover.o
  build/obj/src/imp/selection_filter_dialog.o
+ build/obj/src/imp/action.o
+ build/obj/src/imp/action_catalog.o
+ build/obj/src/imp/in_tool_action_catalog.o
+In file included from src/canvas/canvas_gl.hpp:2,
+                 from src/imp/imp.hpp:17,
+                 from src/imp/selection_filter_dialog.cpp:5:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
+ build/obj/src/imp/clipboard_handler.o
 In file included from /usr/include/c++/12/vector:70,
                  from 3rd_party/nlohmann/json_fwd.hpp:8,
                  from src/block/bus.hpp:2,
@@ -51452,23 +51499,15 @@
 /usr/include/c++/12/bits/stl_vector.h:1287:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Coord<long long int>*, std::vector<horizon::Coord<long long int> > >' changed in GCC 7.1
  1287 |           _M_realloc_insert(end(), __x);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
-In file included from src/canvas/canvas_gl.hpp:2,
-                 from src/imp/imp.hpp:17,
-                 from src/imp/selection_filter_dialog.cpp:5:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
- build/obj/src/imp/action.o
- build/obj/src/imp/action_catalog.o
- build/obj/src/imp/in_tool_action_catalog.o
- build/obj/src/imp/clipboard_handler.o
  build/obj/src/canvas/canvas.o
 In file included from src/canvas/canvas.cpp:1:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
+ build/obj/src/canvas/appearance.o
+ build/obj/src/canvas/render.o
+ build/obj/src/canvas/draw.o
 In file included from /usr/include/c++/12/vector:70,
                  from src/common/common.hpp:3,
                  from src/canvas/canvas.hpp:2:
@@ -51482,9 +51521,6 @@
 /usr/include/c++/12/bits/stl_vector.h:1287:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Placement*, std::vector<horizon::Placement> >' changed in GCC 7.1
  1287 |           _M_realloc_insert(end(), __x);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
- build/obj/src/canvas/appearance.o
- build/obj/src/canvas/render.o
- build/obj/src/canvas/draw.o
 In file included from src/canvas/render.cpp:4:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
@@ -51496,6 +51532,69 @@
   184 |     {
       |     ^
  build/obj/src/canvas/text.o
+ build/obj/src/canvas/hershey_fonts.o
+ build/obj/src/canvas/image.o
+In file included from src/canvas/image.cpp:1:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
+In file included from src/canvas/text.cpp:1:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
+In file included from /usr/include/c++/12/vector:70,
+                 from src/common/common.hpp:3,
+                 from src/canvas/canvas.hpp:2:
+/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]':
+/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Polygon::Vertex>::iterator' changed in GCC 7.1
+  439 |       vector<_Tp, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
+    inlined from 'virtual void horizon::Canvas::img_line(const horizon::Coordi&, const horizon::Coordi&, uint64_t, int, bool)' at src/canvas/image.cpp:26:31,
+    inlined from 'virtual void horizon::Canvas::img_arc(const horizon::Coordi&, const horizon::Coordi&, const horizon::Coordi&, uint64_t, int)' at src/canvas/image.cpp:59:17:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
+    inlined from 'virtual void horizon::Canvas::img_line(const horizon::Coordi&, const horizon::Coordi&, uint64_t, int, bool)' at src/canvas/image.cpp:30:31,
+    inlined from 'virtual void horizon::Canvas::img_arc(const horizon::Coordi&, const horizon::Coordi&, const horizon::Coordi&, uint64_t, int)' at src/canvas/image.cpp:59:17:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
+    inlined from 'virtual void horizon::Canvas::img_line(const horizon::Coordi&, const horizon::Coordi&, uint64_t, int, bool)' at src/canvas/image.cpp:32:31,
+    inlined from 'virtual void horizon::Canvas::img_arc(const horizon::Coordi&, const horizon::Coordi&, const horizon::Coordi&, uint64_t, int)' at src/canvas/image.cpp:59:17:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
+    inlined from 'virtual void horizon::Canvas::img_line(const horizon::Coordi&, const horizon::Coordi&, uint64_t, int, bool)' at src/canvas/image.cpp:36:31,
+    inlined from 'virtual void horizon::Canvas::img_arc(const horizon::Coordi&, const horizon::Coordi&, const horizon::Coordi&, uint64_t, int)' at src/canvas/image.cpp:59:17:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
+    inlined from 'virtual void horizon::Canvas::img_line(const horizon::Coordi&, const horizon::Coordi&, uint64_t, int, bool)' at src/canvas/image.cpp:26:31:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
+    inlined from 'virtual void horizon::Canvas::img_line(const horizon::Coordi&, const horizon::Coordi&, uint64_t, int, bool)' at src/canvas/image.cpp:30:31:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
+    inlined from 'virtual void horizon::Canvas::img_line(const horizon::Coordi&, const horizon::Coordi&, uint64_t, int, bool)' at src/canvas/image.cpp:32:31:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
+    inlined from 'virtual void horizon::Canvas::img_line(const horizon::Coordi&, const horizon::Coordi&, uint64_t, int, bool)' at src/canvas/image.cpp:36:31:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In file included from /usr/include/c++/12/vector:70,
                  from 3rd_party/nlohmann/json_fwd.hpp:8,
                  from src/block/bus.hpp:2,
@@ -51519,6 +51618,7 @@
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Target>::iterator' changed in GCC 7.1
   439 |       vector<_Tp, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~
+ build/obj/src/canvas/selectables.o
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {const horizon::UUID&, horizon::ObjectType, horizon::Coord<long long int>, int, const int&}; _Tp = horizon::Target; _Alloc = std::allocator<horizon::Target>]',
     inlined from 'void horizon::Canvas::render(const horizon::Text&, bool, horizon::ColorP)' at src/canvas/render.cpp:791:29:
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Target*, std::vector<horizon::Target> >' changed in GCC 7.1
@@ -51533,11 +51633,6 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Target*, std::vector<horizon::Target> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In file included from src/canvas/text.cpp:1:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
 /usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const horizon::UUID&, horizon::ObjectType, horizon::Coord<long long int>&, int&, const int&}; _Tp = horizon::Target; _Alloc = std::allocator<horizon::Target>]':
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Target>::iterator' changed in GCC 7.1
   439 |       vector<_Tp, _Alloc>::
@@ -51559,10 +51654,16 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Target*, std::vector<horizon::Target> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/canvas/fragment_cache.o
 /usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const horizon::UUID&, horizon::ObjectType, const horizon::Coord<long long int>&, int, const int&}; _Tp = horizon::Target; _Alloc = std::allocator<horizon::Target>]':
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Target>::iterator' changed in GCC 7.1
   439 |       vector<_Tp, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~
+In file included from src/canvas/selectables.cpp:2:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {const horizon::UUID&, horizon::ObjectType, const horizon::Coord<long long int>&, int, const int&}; _Tp = horizon::Target; _Alloc = std::allocator<horizon::Target>]',
     inlined from 'void horizon::Canvas::render(const horizon::Shape&, bool)' at src/canvas/render.cpp:1068:29:
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Target*, std::vector<horizon::Target> >' changed in GCC 7.1
@@ -51585,8 +51686,6 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Target*, std::vector<horizon::Target> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/canvas/hershey_fonts.o
- build/obj/src/canvas/image.o
 /usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const horizon::UUID&, horizon::ObjectType, const horizon::Coord<long long int>&, int, const horizon::LayerRange&}; _Tp = horizon::Target; _Alloc = std::allocator<horizon::Target>]':
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Target>::iterator' changed in GCC 7.1
   439 |       vector<_Tp, _Alloc>::
@@ -51612,6 +51711,7 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Target*, std::vector<horizon::Target> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/util/text_data.o
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {const horizon::UUID&, horizon::ObjectType, const horizon::Coord<long long int>&, int, const horizon::LayerRange&}; _Tp = horizon::Target; _Alloc = std::allocator<horizon::Target>]',
     inlined from 'void horizon::Canvas::render(const horizon::Package&, bool, bool, bool, bool, bool)' at src/canvas/render.cpp:1409:33:
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Target*, std::vector<horizon::Target> >' changed in GCC 7.1
@@ -51622,75 +51722,6 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Target*, std::vector<horizon::Target> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {const horizon::UUID&, horizon::ObjectType, const horizon::Coord<long long int>&}; _Tp = horizon::Target; _Alloc = std::allocator<horizon::Target>]',
-    inlined from 'void horizon::Canvas::render(const horizon::BoardPackage&, bool)' at src/canvas/render.cpp:1444:29:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Target*, std::vector<horizon::Target> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In file included from src/canvas/image.cpp:1:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
-In file included from /usr/include/c++/12/vector:70,
-                 from src/common/common.hpp:3,
-                 from src/canvas/canvas.hpp:2:
-/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]':
-/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Polygon::Vertex>::iterator' changed in GCC 7.1
-  439 |       vector<_Tp, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
-    inlined from 'virtual void horizon::Canvas::img_line(const horizon::Coordi&, const horizon::Coordi&, uint64_t, int, bool)' at src/canvas/image.cpp:26:31,
-    inlined from 'virtual void horizon::Canvas::img_arc(const horizon::Coordi&, const horizon::Coordi&, const horizon::Coordi&, uint64_t, int)' at src/canvas/image.cpp:59:17:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
-    inlined from 'virtual void horizon::Canvas::img_line(const horizon::Coordi&, const horizon::Coordi&, uint64_t, int, bool)' at src/canvas/image.cpp:30:31,
-    inlined from 'virtual void horizon::Canvas::img_arc(const horizon::Coordi&, const horizon::Coordi&, const horizon::Coordi&, uint64_t, int)' at src/canvas/image.cpp:59:17:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
-    inlined from 'virtual void horizon::Canvas::img_line(const horizon::Coordi&, const horizon::Coordi&, uint64_t, int, bool)' at src/canvas/image.cpp:32:31,
-    inlined from 'virtual void horizon::Canvas::img_arc(const horizon::Coordi&, const horizon::Coordi&, const horizon::Coordi&, uint64_t, int)' at src/canvas/image.cpp:59:17:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
-    inlined from 'virtual void horizon::Canvas::img_line(const horizon::Coordi&, const horizon::Coordi&, uint64_t, int, bool)' at src/canvas/image.cpp:36:31,
-    inlined from 'virtual void horizon::Canvas::img_arc(const horizon::Coordi&, const horizon::Coordi&, const horizon::Coordi&, uint64_t, int)' at src/canvas/image.cpp:59:17:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
-    inlined from 'virtual void horizon::Canvas::img_line(const horizon::Coordi&, const horizon::Coordi&, uint64_t, int, bool)' at src/canvas/image.cpp:26:31:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
-    inlined from 'virtual void horizon::Canvas::img_line(const horizon::Coordi&, const horizon::Coordi&, uint64_t, int, bool)' at src/canvas/image.cpp:30:31:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
-    inlined from 'virtual void horizon::Canvas::img_line(const horizon::Coordi&, const horizon::Coordi&, uint64_t, int, bool)' at src/canvas/image.cpp:32:31:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Polygon::Vertex; _Alloc = std::allocator<horizon::Polygon::Vertex>]',
-    inlined from 'virtual void horizon::Canvas::img_line(const horizon::Coordi&, const horizon::Coordi&, uint64_t, int, bool)' at src/canvas/image.cpp:36:31:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/canvas/selectables.o
- build/obj/src/canvas/fragment_cache.o
- build/obj/src/util/text_data.o
-In file included from src/canvas/selectables.cpp:2:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
 In file included from /usr/include/c++/12/vector:70,
                  from src/common/common.hpp:3,
                  from src/canvas/fragment_cache.hpp:2,
@@ -51699,6 +51730,11 @@
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<p2t::Point>::iterator' changed in GCC 7.1
   439 |       vector<_Tp, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {const horizon::UUID&, horizon::ObjectType, const horizon::Coord<long long int>&}; _Tp = horizon::Target; _Alloc = std::allocator<horizon::Target>]',
+    inlined from 'void horizon::Canvas::render(const horizon::BoardPackage&, bool)' at src/canvas/render.cpp:1444:29:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Target*, std::vector<horizon::Target> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {const long long int&, const long long int&}; _Tp = p2t::Point; _Alloc = std::allocator<p2t::Point>]',
     inlined from 'const std::vector<std::array<horizon::Coord<float>, 3> >& horizon::FragmentCache::get_triangles(const horizon::Plane&)' at src/canvas/fragment_cache.cpp:30:41:
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<p2t::Point*, std::vector<p2t::Point> >' changed in GCC 7.1
@@ -51716,6 +51752,11 @@
    11 |                                              TextOrigin origin, ColorP color, int layer, const Options &opts)
       |                                                                                                             ^
  build/obj/3rd_party/polypartition/polypartition.o
+In file included from src/canvas/text_renderer.cpp:2:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
 In file included from 3rd_party/polypartition/polypartition.cpp:24:
 3rd_party/polypartition/polypartition.h: In member function 'void TPPLPoly::SetHole(bool)':
 3rd_party/polypartition/polypartition.h:115:21: warning: declaration of 'hole' shadows a member of 'TPPLPoly' [-Wshadow]
@@ -51732,6 +51773,7 @@
 3rd_party/polypartition/polypartition.h:95:8: note: shadowed declaration is here
    95 |   long numpoints;
       |        ^~~~~~~~~
+ build/obj/3rd_party/poly2tri/sweep/cdt.o
 3rd_party/polypartition/polypartition.cpp: In member function 'bool TPPLPartition::ScanLineEdge::IsConvex(const TPPLPoint&, const TPPLPoint&, const TPPLPoint&) const':
 3rd_party/polypartition/polypartition.cpp:1634:82: warning: declaration of 'p2' shadows a member of 'TPPLPartition::ScanLineEdge' [-Wshadow]
  1634 | bool TPPLPartition::ScanLineEdge::IsConvex(const TPPLPoint &p1, const TPPLPoint &p2, const TPPLPoint &p3) const {
@@ -51745,11 +51787,6 @@
 3rd_party/polypartition/polypartition.h:234:15: note: shadowed declaration is here
   234 |     TPPLPoint p1;
       |               ^~
-In file included from src/canvas/text_renderer.cpp:2:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
 In file included from 3rd_party/poly2tri/common/shapes.cpp:31:
 3rd_party/poly2tri/common/shapes.h: In constructor 'p2t::Point::Point(double, double)':
 3rd_party/poly2tri/common/shapes.h:60:26: warning: declaration of 'y' shadows a member of 'p2t::Point' [-Wshadow]
@@ -51790,13 +51827,6 @@
 3rd_party/poly2tri/common/shapes.h:47:10: note: shadowed declaration is here
    47 |   double x, y;
       |          ^
- build/obj/3rd_party/poly2tri/sweep/cdt.o
- build/obj/3rd_party/poly2tri/sweep/sweep.o
-In file included from 3rd_party/poly2tri/sweep/sweep.cpp:34:
-3rd_party/poly2tri/sweep/../common/utils.h:36: warning: "_USE_MATH_DEFINES" redefined
-   36 | #define _USE_MATH_DEFINES
-      | 
-<command-line>: note: this is the location of the previous definition
 In file included from 3rd_party/poly2tri/sweep/advancing_front.h:35,
                  from 3rd_party/poly2tri/sweep/cdt.h:35,
                  from 3rd_party/poly2tri/sweep/cdt.cpp:31:
@@ -51839,6 +51869,13 @@
 3rd_party/poly2tri/sweep/../common/shapes.h:47:10: note: shadowed declaration is here
    47 |   double x, y;
       |          ^
+ build/obj/3rd_party/poly2tri/sweep/sweep.o
+In file included from 3rd_party/poly2tri/sweep/sweep.cpp:34:
+3rd_party/poly2tri/sweep/../common/utils.h:36: warning: "_USE_MATH_DEFINES" redefined
+   36 | #define _USE_MATH_DEFINES
+      | 
+<command-line>: note: this is the location of the previous definition
+ build/obj/3rd_party/poly2tri/sweep/sweep_context.o
 In file included from 3rd_party/poly2tri/sweep/advancing_front.h:35,
                  from 3rd_party/poly2tri/sweep/sweep.cpp:33:
 3rd_party/poly2tri/sweep/../common/shapes.h: In constructor 'p2t::Point::Point(double, double)':
@@ -51880,8 +51917,6 @@
 3rd_party/poly2tri/sweep/../common/shapes.h:47:10: note: shadowed declaration is here
    47 |   double x, y;
       |          ^
- build/obj/3rd_party/poly2tri/sweep/sweep_context.o
- build/obj/3rd_party/poly2tri/sweep/advancing_front.o
 In file included from 3rd_party/poly2tri/sweep/advancing_front.h:35,
                  from 3rd_party/poly2tri/sweep/sweep_context.cpp:33:
 3rd_party/poly2tri/sweep/../common/shapes.h: In constructor 'p2t::Point::Point(double, double)':
@@ -51923,6 +51958,8 @@
 3rd_party/poly2tri/sweep/../common/shapes.h:47:10: note: shadowed declaration is here
    47 |   double x, y;
       |          ^
+ build/obj/3rd_party/poly2tri/sweep/advancing_front.o
+ build/obj/src/canvas/layer_display.o
 In file included from 3rd_party/poly2tri/sweep/advancing_front.h:35,
                  from 3rd_party/poly2tri/sweep/advancing_front.cpp:31:
 3rd_party/poly2tri/sweep/../common/shapes.h: In constructor 'p2t::Point::Point(double, double)':
@@ -51964,23 +52001,29 @@
 3rd_party/poly2tri/sweep/../common/shapes.h:47:10: note: shadowed declaration is here
    47 |   double x, y;
       |          ^
- build/obj/src/canvas/layer_display.o
  build/obj/src/canvas/canvas_gl.o
  build/obj/src/canvas/grid.o
  build/obj/src/canvas/gl_util.o
+ build/obj/src/canvas/pan.o
+In file included from src/canvas/canvas_gl.hpp:2,
+                 from src/canvas/canvas_gl.cpp:1:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/canvas/grid.cpp:2:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
+ build/obj/src/canvas/drag_selection.o
 In file included from src/canvas/canvas_gl.hpp:2,
-                 from src/canvas/canvas_gl.cpp:1:
+                 from src/canvas/pan.cpp:1:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/canvas/pan.o
 src/canvas/canvas_gl.cpp: In member function 'std::pair<float, horizon::Coord<float> > horizon::CanvasGL::get_scale_and_offset() const':
 src/canvas/canvas_gl.cpp:14:59: note: parameter passing for argument of type 'std::pair<float, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
    14 | std::pair<float, Coordf> CanvasGL::get_scale_and_offset() const
@@ -52001,12 +52044,7 @@
 /usr/include/c++/12/bits/stl_pair.h: In instantiation of 'constexpr std::pair<typename std::__strip_reference_wrapper<typename std::decay<_Tp>::type>::__type, typename std::__strip_reference_wrapper<typename std::decay<_Tp2>::type>::__type> std::make_pair(_T1&&, _T2&&) [with _T1 = const horizon::Coord<float>&; _T2 = const horizon::Coord<float>&; typename __strip_reference_wrapper<typename decay<_Tp2>::type>::__type = horizon::Coord<float>; typename decay<_Tp2>::type = decay<const horizon::Coord<float>&>::type; typename __strip_reference_wrapper<typename decay<_Tp>::type>::__type = horizon::Coord<float>; typename decay<_Tp>::type = decay<const horizon::Coord<float>&>::type]':
 src/canvas/canvas_gl.cpp:463:49:   required from here
 /usr/include/c++/12/bits/stl_pair.h:741:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-In file included from src/canvas/canvas_gl.hpp:2,
-                 from src/canvas/pan.cpp:1:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
+ build/obj/src/canvas/selectables_renderer.o
 src/canvas/canvas_gl.cpp: In member function 'std::pair<float, horizon::Coord<float> > horizon::CanvasGL::get_scale_and_offset() const':
 src/canvas/canvas_gl.cpp:14:26: note: parameter passing for argument of type 'std::pair<float, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
    14 | std::pair<float, Coordf> CanvasGL::get_scale_and_offset() const
@@ -52015,28 +52053,18 @@
 src/canvas/canvas.hpp:183:39: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   183 |     virtual std::pair<Coordf, Coordf> measure_bitmap_text(const std::string &text) const
       |                                       ^~~~~~~~~~~~~~~~~~~
- build/obj/src/canvas/drag_selection.o
-src/canvas/canvas_gl.cpp: In member function 'std::pair<float, horizon::Coord<float> > horizon::CanvasGL::get_scale_and_offset() const':
-src/canvas/canvas_gl.cpp:14:26: note: parameter passing for argument of type 'std::pair<float, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-   14 | std::pair<float, Coordf> CanvasGL::get_scale_and_offset() const
-      |                          ^~~~~~~~
- build/obj/src/canvas/selectables_renderer.o
-In file included from /usr/include/c++/12/vector:70:
-/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const horizon::Target&}; _Tp = horizon::Target; _Alloc = std::allocator<horizon::Target>]':
-/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Target>::iterator' changed in GCC 7.1
-  439 |       vector<_Tp, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {const horizon::Target&}; _Tp = horizon::Target; _Alloc = std::allocator<horizon::Target>]',
-    inlined from 'void horizon::CanvasGL::append_target(const horizon::Target&)' at src/canvas/canvas_gl.cpp:532:25:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Target*, std::vector<horizon::Target> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/canvas/drag_selection.cpp:2:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
+In file included from src/canvas/canvas_gl.hpp:2,
+                 from src/canvas/selectables_renderer.cpp:5:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
 src/canvas/drag_selection.cpp: In member function 'void horizon::DragSelection::drag_end(GdkEventButton*)':
 src/canvas/drag_selection.cpp:310:37: warning: loop variable 'sr' creates a copy from type 'const horizon::SelectableRef' [-Wrange-loop-construct]
   310 |                     for (const auto sr : sel_from_canvas) {
@@ -52045,13 +52073,6 @@
   310 |                     for (const auto sr : sel_from_canvas) {
       |                                     ^~
       |                                     &
-In file included from src/canvas/canvas_gl.hpp:2,
-                 from src/canvas/selectables_renderer.cpp:5:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
- build/obj/src/canvas/hover_prelight.o
 In file included from /usr/include/c++/12/vector:70,
                  from 3rd_party/clipper/clipper.hpp:52,
                  from src/canvas/drag_selection.hpp:2,
@@ -52062,6 +52083,7 @@
       |       ^~~~~~~~~~~~~~~~~~~
 /usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const float&, const float&}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]':
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<ClipperLib::IntPoint>::iterator' changed in GCC 7.1
+ build/obj/src/canvas/hover_prelight.o
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {const float&, const float&}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
     inlined from 'ClipperLib::Path horizon::path_from_sel(const Selectable&)' at src/canvas/drag_selection.cpp:409:30:
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
@@ -52080,6 +52102,7 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/canvas/triangle_renderer.o
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {float&, float&}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
     inlined from 'void horizon::DragSelection::drag_begin(GdkEventButton*)' at src/canvas/drag_selection.cpp:214:35:
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
@@ -52090,14 +52113,27 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+src/canvas/canvas_gl.cpp: In member function 'std::pair<float, horizon::Coord<float> > horizon::CanvasGL::get_scale_and_offset() const':
+src/canvas/canvas_gl.cpp:14:26: note: parameter passing for argument of type 'std::pair<float, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+   14 | std::pair<float, Coordf> CanvasGL::get_scale_and_offset() const
+      |                          ^~~~~~~~
+ build/obj/src/canvas/selection_filter.o
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/canvas/hover_prelight.cpp:1:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/canvas/triangle_renderer.o
- build/obj/src/canvas/selection_filter.o
+In file included from /usr/include/c++/12/vector:70:
+/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const horizon::Target&}; _Tp = horizon::Target; _Alloc = std::allocator<horizon::Target>]':
+/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Target>::iterator' changed in GCC 7.1
+  439 |       vector<_Tp, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {const horizon::Target&}; _Tp = horizon::Target; _Alloc = std::allocator<horizon::Target>]',
+    inlined from 'void horizon::CanvasGL::append_target(const horizon::Target&)' at src/canvas/canvas_gl.cpp:532:25:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Target*, std::vector<horizon::Target> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/canvas/triangle_renderer.cpp:2:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
@@ -52128,13 +52164,13 @@
  build/obj/src/util/msd_animator.o
  build/obj/src/canvas/bitmap_font_util.o
  build/obj/src/canvas/picture_renderer.o
+ build/obj/src/util/warp_cursor.o
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/canvas/picture_renderer.cpp:2:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/util/warp_cursor.o
  build/obj/src/document/document.o
  build/obj/src/document/document_board.o
 In file included from /usr/include/c++/12/map:60,
@@ -52147,6 +52183,7 @@
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Text>, std::_Select1st<std::pair<const horizon::UUID, horizon::Text> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Text> > >::const_iterator' changed in GCC 7.1
  2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/core/core.o
 In file included from /usr/include/c++/12/map:61:
 In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {const horizon::UUID&, const horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::Text; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Text> >]',
     inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {const horizon::UUID&, const horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::Text; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Text> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
@@ -52156,7 +52193,6 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/core/core.o
  build/obj/src/core/tool.o
  build/obj/src/core/create_tool.o
  build/obj/src/core/core_properties.o
@@ -52188,13 +52224,14 @@
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/core/tools/tool_delete.o
  build/obj/src/core/tools/tool_draw_arc.o
+ build/obj/src/core/tools/tool_map_pin.o
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/core/tools/tool_delete.cpp:15:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/core/tools/tool_map_pin.o
+ build/obj/src/core/tools/tool_map_symbol.o
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/core/tools/tool_draw_arc.cpp:5:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
@@ -52207,10 +52244,8 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/core/tools/tool_map_symbol.o
  build/obj/src/core/tools/tool_draw_line_net.o
  build/obj/src/core/tools/tool_place_text.o
- build/obj/src/core/tools/tool_place_net_label.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -52235,6 +52270,7 @@
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::NetLabel>, std::_Select1st<std::pair<const horizon::UUID, horizon::NetLabel> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::NetLabel> > >::const_iterator' changed in GCC 7.1
  2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/core/tools/tool_place_net_label.o
 In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {const horizon::UUID&, const horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::SchematicJunction; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SchematicJunction> >]',
     inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {const horizon::UUID&, const horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::SchematicJunction; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SchematicJunction> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
     inlined from 'virtual horizon::ToolResponse horizon::ToolDrawLineNet::begin(const horizon::ToolArgs&)' at src/core/tools/tool_draw_line_net.cpp:23:60:
@@ -52259,6 +52295,8 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/core/tools/tool_disconnect.o
+ build/obj/src/core/tools/tool_bend_line_net.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -52279,8 +52317,18 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/core/tools/tool_disconnect.o
- build/obj/src/core/tools/tool_bend_line_net.o
+In file included from /usr/include/c++/12/map:60,
+                 from src/common/lut.hpp:3,
+                 from src/common/common.hpp:8,
+                 from src/core/tool_pub.hpp:2,
+                 from src/core/tool.hpp:2,
+                 from src/core/tools/tool_place_text.hpp:2,
+                 from src/core/tools/tool_place_text.cpp:1:
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
+/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
+ 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/core/tools/tool_move_net_segment.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -52301,18 +52349,6 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In file included from /usr/include/c++/12/map:60,
-                 from src/common/lut.hpp:3,
-                 from src/common/common.hpp:8,
-                 from src/core/tool_pub.hpp:2,
-                 from src/core/tool.hpp:2,
-                 from src/core/tools/tool_place_text.hpp:2,
-                 from src/core/tools/tool_place_text.cpp:1:
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
-/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
- 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/core/tools/tool_move_net_segment.o
  build/obj/src/core/tools/tool_place_power_symbol.o
  build/obj/src/core/tools/tool_edit_symbol_pin_names.o
  build/obj/src/core/tools/tool_place_bus_label.o
@@ -52342,6 +52378,7 @@
  build/obj/src/core/tools/tool_draw_plane.o
  build/obj/src/core/tools/tool_enter_datum.o
  build/obj/src/core/tools/tool_place_hole.o
+ build/obj/src/core/tools/tool_place_pad.o
 In file included from /usr/include/c++/12/map:60,
                  from 3rd_party/nlohmann/json_fwd.hpp:5,
                  from src/common/polygon.hpp:3,
@@ -52361,9 +52398,10 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/core/tools/tool_place_pad.o
  build/obj/src/core/tools/tool_paste.o
  build/obj/src/core/tools/tool_assign_part.o
+ build/obj/src/core/tools/tool_clear_part.o
+ build/obj/src/core/tools/tool_map_package.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -52384,9 +52422,8 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/core/tools/tool_clear_part.o
- build/obj/src/core/tools/tool_map_package.o
  build/obj/src/core/tools/tool_draw_track.o
+ build/obj/src/core/tools/tool_place_via.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -52417,7 +52454,6 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/core/tools/tool_place_via.o
  build/obj/src/core/tools/tool_drag_keep_slope.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
@@ -52440,131 +52476,8 @@
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/core/tools/tool_add_part.o
-In file included from /usr/include/c++/12/map:60,
-                 from src/common/lut.hpp:3,
-                 from src/common/common.hpp:8,
-                 from src/core/tool_pub.hpp:2,
-                 from src/core/tool.hpp:2,
-                 from src/core/tools/tool_paste.hpp:2,
-                 from src/core/tools/tool_paste.cpp:1:
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Pad}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::Pad>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::Pad> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Pad> >]':
-/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Pad>, std::_Select1st<std::pair<const horizon::UUID, horizon::Pad> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Pad> > >::const_iterator' changed in GCC 7.1
- 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/core/tools/tool_smash.o
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::SchematicBlockSymbol&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::SchematicBlockSymbol>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::SchematicBlockSymbol> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SchematicBlockSymbol> >]':
-/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::SchematicBlockSymbol>, std::_Select1st<std::pair<const horizon::UUID, horizon::SchematicBlockSymbol> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::SchematicBlockSymbol> > >::const_iterator' changed in GCC 7.1
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::NetLabel}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::NetLabel>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::NetLabel> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::NetLabel> >]':
-/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::NetLabel>, std::_Select1st<std::pair<const horizon::UUID, horizon::NetLabel> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::NetLabel> > >::const_iterator' changed in GCC 7.1
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::BusLabel&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::BusLabel>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::BusLabel> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::BusLabel> >]':
-/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::BusLabel>, std::_Select1st<std::pair<const horizon::UUID, horizon::BusLabel> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::BusLabel> > >::const_iterator' changed in GCC 7.1
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Shape}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::Shape>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::Shape> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Shape> >]':
-/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Shape>, std::_Select1st<std::pair<const horizon::UUID, horizon::Shape> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Shape> > >::const_iterator' changed in GCC 7.1
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
-/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
- 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-/usr/include/c++/12/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>, std::tuple<>}; _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
-/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
- 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In file included from /usr/include/c++/12/map:61:
-/usr/include/c++/12/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
-/usr/include/c++/12/bits/stl_map.h:511:44: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
-  511 |           __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
-      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  512 |                                             std::tuple<const key_type&>(__k),
-      |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  513 |                                             std::tuple<>());
-      |                                             ~~~~~~~~~~~~~~~
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]',
-    inlined from 'bool nlohmann::detail::json_sax_dom_callback_parser<BasicJsonType>::key(string_t&) [with BasicJsonType = nlohmann::basic_json<>]' at 3rd_party/nlohmann/detail/input/json_sax.hpp:425:76:
-/usr/include/c++/12/bits/stl_map.h:511:44: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
-  511 |           __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
-      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  512 |                                             std::tuple<const key_type&>(__k),
-      |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  513 |                                             std::tuple<>());
-      |                                             ~~~~~~~~~~~~~~~
-In file included from /usr/include/c++/12/vector:70,
-                 from src/common/common.hpp:3:
-/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {long long int}; _Tp = long long int; _Alloc = std::allocator<long long int>]':
-/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<long long int, std::allocator<long long int> >::iterator' changed in GCC 7.1
-  439 |       vector<_Tp, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::_M_insert_rval(const_iterator, value_type&&) [with _Tp = long long int; _Alloc = std::allocator<long long int>]',
-    inlined from 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(const_iterator, value_type&&) [with _Tp = long long int; _Alloc = std::allocator<long long int>]' at /usr/include/c++/12/bits/stl_vector.h:1389:30,
-    inlined from 'std::insert_iterator<_Container>& std::insert_iterator<_Container>::operator=(typename _Container::value_type&&) [with _Container = std::vector<long long int, std::allocator<long long int> >]' at /usr/include/c++/12/bits/stl_iterator.h:973:26,
-    inlined from '_OIter std::transform(_IIter, _IIter, _OIter, _UnaryOperation) [with _IIter = nlohmann::detail::iter_impl<const nlohmann::basic_json<> >; _OIter = insert_iterator<vector<long long int, allocator<long long int> > >; _UnaryOperation = nlohmann::detail::from_json_array_impl<nlohmann::basic_json<>, std::vector<long long int, std::allocator<long long int> > >(const nlohmann::basic_json<>&, std::vector<long long int, std::allocator<long long int> >&, priority_tag<1>)::<lambda(const nlohmann::basic_json<>&)>]' at /usr/include/c++/12/bits/stl_algo.h:4263:12,
-    inlined from 'decltype (((arr.reserve(declval<typename ConstructibleArrayType::size_type>()), j.get<typename ConstructibleArrayType::value_type>()), void())) nlohmann::detail::from_json_array_impl(const BasicJsonType&, ConstructibleArrayType&, priority_tag<1>) [with BasicJsonType = nlohmann::basic_json<>; ConstructibleArrayType = std::vector<long long int, std::allocator<long long int> >; typename std::enable_if<std::is_assignable<ConstructibleArrayType&, ConstructibleArrayType>::value, int>::type <anonymous> = 0]' at 3rd_party/nlohmann/detail/conversions/from_json.hpp:212:19,
-    inlined from 'decltype (((nlohmann::detail::from_json_array_impl(j, arr, nlohmann::detail::priority_tag<3>{}), j.get<typename ConstructibleArrayType::value_type>()), void())) nlohmann::detail::from_json(const BasicJsonType&, ConstructibleArrayType&) [with BasicJsonType = nlohmann::basic_json<>; ConstructibleArrayType = std::vector<long long int, std::allocator<long long int> >; typename std::enable_if<((((is_constructible_array_type<BasicJsonType, ConstructibleArrayType>::value && (! is_constructible_object_type<BasicJsonType, ConstructibleObjectType>::value)) && (! is_constructible_string_type<BasicJsonType, ConstructibleStringType>::value)) && (! std::is_same<ConstructibleArrayType, typename BasicJsonType::binary_t>::value)) && (! is_basic_json<T>::value)), int>::type <anonymous> = 0]' at 3rd_party/nlohmann/detail/conversions/from_json.hpp:261:25:
-/usr/include/c++/12/bits/vector.tcc:366:26: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int, std::allocator<long long int> > >' changed in GCC 7.1
-  366 |         _M_realloc_insert(begin() + __n, std::move(__v));
-      |         ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Plane&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::Plane>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::Plane> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Plane> >]':
-/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Plane>, std::_Select1st<std::pair<const horizon::UUID, horizon::Plane> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Plane> > >::const_iterator' changed in GCC 7.1
- 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::SchematicSymbol&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::SchematicSymbol>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::SchematicSymbol> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SchematicSymbol> >]':
-/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::SchematicSymbol>, std::_Select1st<std::pair<const horizon::UUID, horizon::SchematicSymbol> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::SchematicSymbol> > >::const_iterator' changed in GCC 7.1
  build/obj/src/core/tools/tool_place_shape.o
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Pad}; _Key = horizon::UUID; _Tp = horizon::Pad; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Pad> >]',
-    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::Pad}; _Key = horizon::UUID; _Tp = horizon::Pad; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Pad> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
-    inlined from 'horizon::ToolResponse horizon::ToolPaste::really_begin_paste(const horizon::json&, const horizon::Coordi&)' at src/core/tools/tool_paste.cpp:301:56:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Pad>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Pad>, std::_Select1st<std::pair<const horizon::UUID, horizon::Pad> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Pad> > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Plane&}; _Key = horizon::UUID; _Tp = horizon::Plane; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Plane> >]',
-    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::Plane&}; _Key = horizon::UUID; _Tp = horizon::Plane; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Plane> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
-    inlined from 'horizon::ToolResponse horizon::ToolPaste::really_begin_paste(const horizon::json&, const horizon::Coordi&)' at src/core/tools/tool_paste.cpp:351:61:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Plane>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Plane>, std::_Select1st<std::pair<const horizon::UUID, horizon::Plane> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Plane> > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::SchematicSymbol&}; _Key = horizon::UUID; _Tp = horizon::SchematicSymbol; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SchematicSymbol> >]',
-    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::SchematicSymbol&}; _Key = horizon::UUID; _Tp = horizon::SchematicSymbol; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SchematicSymbol> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
-    inlined from 'horizon::ToolResponse horizon::ToolPaste::really_begin_paste(const horizon::json&, const horizon::Coordi&)' at src/core/tools/tool_paste.cpp:432:45:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::SchematicSymbol>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::SchematicSymbol>, std::_Select1st<std::pair<const horizon::UUID, horizon::SchematicSymbol> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::SchematicSymbol> > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::SchematicBlockSymbol&}; _Key = horizon::UUID; _Tp = horizon::SchematicBlockSymbol; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SchematicBlockSymbol> >]',
-    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::SchematicBlockSymbol&}; _Key = horizon::UUID; _Tp = horizon::SchematicBlockSymbol; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SchematicBlockSymbol> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
-    inlined from 'horizon::ToolResponse horizon::ToolPaste::really_begin_paste(const horizon::json&, const horizon::Coordi&)' at src/core/tools/tool_paste.cpp:478:55:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::SchematicBlockSymbol>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::SchematicBlockSymbol>, std::_Select1st<std::pair<const horizon::UUID, horizon::SchematicBlockSymbol> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::SchematicBlockSymbol> > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::NetLabel}; _Key = horizon::UUID; _Tp = horizon::NetLabel; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::NetLabel> >]',
-    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::NetLabel}; _Key = horizon::UUID; _Tp = horizon::NetLabel; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::NetLabel> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
-    inlined from 'horizon::ToolResponse horizon::ToolPaste::really_begin_paste(const horizon::json&, const horizon::Coordi&)' at src/core/tools/tool_paste.cpp:556:61:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::NetLabel>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::NetLabel>, std::_Select1st<std::pair<const horizon::UUID, horizon::NetLabel> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::NetLabel> > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::BusLabel&}; _Key = horizon::UUID; _Tp = horizon::BusLabel; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::BusLabel> >]',
-    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::BusLabel&}; _Key = horizon::UUID; _Tp = horizon::BusLabel; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::BusLabel> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
-    inlined from 'horizon::ToolResponse horizon::ToolPaste::really_begin_paste(const horizon::json&, const horizon::Coordi&)' at src/core/tools/tool_paste.cpp:569:65:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::BusLabel>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::BusLabel>, std::_Select1st<std::pair<const horizon::UUID, horizon::BusLabel> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::BusLabel> > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Shape}; _Key = horizon::UUID; _Tp = horizon::Shape; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Shape> >]',
-    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::Shape}; _Key = horizon::UUID; _Tp = horizon::Shape; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Shape> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
-    inlined from 'horizon::ToolResponse horizon::ToolPaste::really_begin_paste(const horizon::json&, const horizon::Coordi&)' at src/core/tools/tool_paste.cpp:592:59:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Shape>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Shape>, std::_Select1st<std::pair<const horizon::UUID, horizon::Shape> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Shape> > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/core/tools/tool_edit_shape.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -52584,9 +52497,25 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/core/tools/tool_edit_shape.o
  build/obj/src/core/tools/tool_import_dxf.o
  build/obj/src/core/tools/tool_edit_pad_parameter_set.o
  build/obj/src/core/tools/tool_draw_polygon_rectangle.o
+ build/obj/src/core/tools/tool_draw_line_rectangle.o
+In file included from /usr/include/c++/12/map:60,
+                 from src/common/lut.hpp:3,
+                 from src/common/common.hpp:8,
+                 from src/core/tool_pub.hpp:2,
+                 from src/core/tool.hpp:2,
+                 from src/core/tools/tool_paste.hpp:2,
+                 from src/core/tools/tool_paste.cpp:1:
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Pad}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::Pad>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::Pad> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Pad> >]':
+/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Pad>, std::_Select1st<std::pair<const horizon::UUID, horizon::Pad> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Pad> > >::const_iterator' changed in GCC 7.1
+ 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/core/tools/tool_edit_line_rectangle.o
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::SchematicBlockSymbol&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::SchematicBlockSymbol>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::SchematicBlockSymbol> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SchematicBlockSymbol> >]':
+/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::SchematicBlockSymbol>, std::_Select1st<std::pair<const horizon::UUID, horizon::SchematicBlockSymbol> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::SchematicBlockSymbol> > >::const_iterator' changed in GCC 7.1
 In file included from /usr/include/c++/12/vector:70,
                  from src/common/common.hpp:3,
                  from src/core/tool_pub.hpp:2,
@@ -52859,11 +52788,62 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/core/tools/tool_draw_line_rectangle.o
- build/obj/src/core/tools/tool_edit_line_rectangle.o
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::NetLabel}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::NetLabel>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::NetLabel> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::NetLabel> >]':
+/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::NetLabel>, std::_Select1st<std::pair<const horizon::UUID, horizon::NetLabel> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::NetLabel> > >::const_iterator' changed in GCC 7.1
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::BusLabel&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::BusLabel>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::BusLabel> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::BusLabel> >]':
+/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::BusLabel>, std::_Select1st<std::pair<const horizon::UUID, horizon::BusLabel> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::BusLabel> > >::const_iterator' changed in GCC 7.1
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Shape}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::Shape>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::Shape> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Shape> >]':
+/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Shape>, std::_Select1st<std::pair<const horizon::UUID, horizon::Shape> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Shape> > >::const_iterator' changed in GCC 7.1
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
+/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
+ 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+/usr/include/c++/12/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>, std::tuple<>}; _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
+/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
+ 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In file included from /usr/include/c++/12/map:61:
+/usr/include/c++/12/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
+/usr/include/c++/12/bits/stl_map.h:511:44: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
+  511 |           __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
+      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  512 |                                             std::tuple<const key_type&>(__k),
+      |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  513 |                                             std::tuple<>());
+      |                                             ~~~~~~~~~~~~~~~
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]',
+    inlined from 'bool nlohmann::detail::json_sax_dom_callback_parser<BasicJsonType>::key(string_t&) [with BasicJsonType = nlohmann::basic_json<>]' at 3rd_party/nlohmann/detail/input/json_sax.hpp:425:76:
+/usr/include/c++/12/bits/stl_map.h:511:44: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
+  511 |           __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
+      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  512 |                                             std::tuple<const key_type&>(__k),
+      |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  513 |                                             std::tuple<>());
+      |                                             ~~~~~~~~~~~~~~~
  build/obj/src/core/tools/tool_draw_line_circle.o
  build/obj/src/core/tools/tool_helper_map_symbol.o
  build/obj/src/core/tools/tool_helper_move.o
+In file included from /usr/include/c++/12/vector:70,
+                 from src/common/common.hpp:3:
+/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {long long int}; _Tp = long long int; _Alloc = std::allocator<long long int>]':
+/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<long long int, std::allocator<long long int> >::iterator' changed in GCC 7.1
+  439 |       vector<_Tp, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~
+In member function 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::_M_insert_rval(const_iterator, value_type&&) [with _Tp = long long int; _Alloc = std::allocator<long long int>]',
+    inlined from 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(const_iterator, value_type&&) [with _Tp = long long int; _Alloc = std::allocator<long long int>]' at /usr/include/c++/12/bits/stl_vector.h:1389:30,
+    inlined from 'std::insert_iterator<_Container>& std::insert_iterator<_Container>::operator=(typename _Container::value_type&&) [with _Container = std::vector<long long int, std::allocator<long long int> >]' at /usr/include/c++/12/bits/stl_iterator.h:973:26,
+    inlined from '_OIter std::transform(_IIter, _IIter, _OIter, _UnaryOperation) [with _IIter = nlohmann::detail::iter_impl<const nlohmann::basic_json<> >; _OIter = insert_iterator<vector<long long int, allocator<long long int> > >; _UnaryOperation = nlohmann::detail::from_json_array_impl<nlohmann::basic_json<>, std::vector<long long int, std::allocator<long long int> > >(const nlohmann::basic_json<>&, std::vector<long long int, std::allocator<long long int> >&, priority_tag<1>)::<lambda(const nlohmann::basic_json<>&)>]' at /usr/include/c++/12/bits/stl_algo.h:4263:12,
+    inlined from 'decltype (((arr.reserve(declval<typename ConstructibleArrayType::size_type>()), j.get<typename ConstructibleArrayType::value_type>()), void())) nlohmann::detail::from_json_array_impl(const BasicJsonType&, ConstructibleArrayType&, priority_tag<1>) [with BasicJsonType = nlohmann::basic_json<>; ConstructibleArrayType = std::vector<long long int, std::allocator<long long int> >; typename std::enable_if<std::is_assignable<ConstructibleArrayType&, ConstructibleArrayType>::value, int>::type <anonymous> = 0]' at 3rd_party/nlohmann/detail/conversions/from_json.hpp:212:19,
+    inlined from 'decltype (((nlohmann::detail::from_json_array_impl(j, arr, nlohmann::detail::priority_tag<3>{}), j.get<typename ConstructibleArrayType::value_type>()), void())) nlohmann::detail::from_json(const BasicJsonType&, ConstructibleArrayType&) [with BasicJsonType = nlohmann::basic_json<>; ConstructibleArrayType = std::vector<long long int, std::allocator<long long int> >; typename std::enable_if<((((is_constructible_array_type<BasicJsonType, ConstructibleArrayType>::value && (! is_constructible_object_type<BasicJsonType, ConstructibleObjectType>::value)) && (! is_constructible_string_type<BasicJsonType, ConstructibleStringType>::value)) && (! std::is_same<ConstructibleArrayType, typename BasicJsonType::binary_t>::value)) && (! is_basic_json<T>::value)), int>::type <anonymous> = 0]' at 3rd_party/nlohmann/detail/conversions/from_json.hpp:261:25:
+/usr/include/c++/12/bits/vector.tcc:366:26: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int, std::allocator<long long int> > >' changed in GCC 7.1
+  366 |         _M_realloc_insert(begin() + __n, std::move(__v));
+      |         ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Plane&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::Plane>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::Plane> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Plane> >]':
+/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Plane>, std::_Select1st<std::pair<const horizon::UUID, horizon::Plane> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Plane> > >::const_iterator' changed in GCC 7.1
+ 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::SchematicSymbol&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::SchematicSymbol>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::SchematicSymbol> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SchematicSymbol> >]':
+/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::SchematicSymbol>, std::_Select1st<std::pair<const horizon::UUID, horizon::SchematicSymbol> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::SchematicSymbol> > >::const_iterator' changed in GCC 7.1
  build/obj/src/core/tools/tool_helper_merge.o
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/core/tools/tool_helper_map_symbol.cpp:4:
@@ -52871,10 +52851,64 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Pad}; _Key = horizon::UUID; _Tp = horizon::Pad; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Pad> >]',
+    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::Pad}; _Key = horizon::UUID; _Tp = horizon::Pad; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Pad> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
+    inlined from 'horizon::ToolResponse horizon::ToolPaste::really_begin_paste(const horizon::json&, const horizon::Coordi&)' at src/core/tools/tool_paste.cpp:301:56:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Pad>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Pad>, std::_Select1st<std::pair<const horizon::UUID, horizon::Pad> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Pad> > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Plane&}; _Key = horizon::UUID; _Tp = horizon::Plane; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Plane> >]',
+    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::Plane&}; _Key = horizon::UUID; _Tp = horizon::Plane; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Plane> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
+    inlined from 'horizon::ToolResponse horizon::ToolPaste::really_begin_paste(const horizon::json&, const horizon::Coordi&)' at src/core/tools/tool_paste.cpp:351:61:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Plane>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Plane>, std::_Select1st<std::pair<const horizon::UUID, horizon::Plane> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Plane> > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::SchematicSymbol&}; _Key = horizon::UUID; _Tp = horizon::SchematicSymbol; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SchematicSymbol> >]',
+    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::SchematicSymbol&}; _Key = horizon::UUID; _Tp = horizon::SchematicSymbol; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SchematicSymbol> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
+    inlined from 'horizon::ToolResponse horizon::ToolPaste::really_begin_paste(const horizon::json&, const horizon::Coordi&)' at src/core/tools/tool_paste.cpp:432:45:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::SchematicSymbol>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::SchematicSymbol>, std::_Select1st<std::pair<const horizon::UUID, horizon::SchematicSymbol> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::SchematicSymbol> > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::SchematicBlockSymbol&}; _Key = horizon::UUID; _Tp = horizon::SchematicBlockSymbol; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SchematicBlockSymbol> >]',
+    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::SchematicBlockSymbol&}; _Key = horizon::UUID; _Tp = horizon::SchematicBlockSymbol; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SchematicBlockSymbol> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
+    inlined from 'horizon::ToolResponse horizon::ToolPaste::really_begin_paste(const horizon::json&, const horizon::Coordi&)' at src/core/tools/tool_paste.cpp:478:55:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::SchematicBlockSymbol>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::SchematicBlockSymbol>, std::_Select1st<std::pair<const horizon::UUID, horizon::SchematicBlockSymbol> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::SchematicBlockSymbol> > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::NetLabel}; _Key = horizon::UUID; _Tp = horizon::NetLabel; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::NetLabel> >]',
+    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::NetLabel}; _Key = horizon::UUID; _Tp = horizon::NetLabel; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::NetLabel> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
+    inlined from 'horizon::ToolResponse horizon::ToolPaste::really_begin_paste(const horizon::json&, const horizon::Coordi&)' at src/core/tools/tool_paste.cpp:556:61:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::NetLabel>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::NetLabel>, std::_Select1st<std::pair<const horizon::UUID, horizon::NetLabel> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::NetLabel> > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::BusLabel&}; _Key = horizon::UUID; _Tp = horizon::BusLabel; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::BusLabel> >]',
+    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::BusLabel&}; _Key = horizon::UUID; _Tp = horizon::BusLabel; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::BusLabel> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
+    inlined from 'horizon::ToolResponse horizon::ToolPaste::really_begin_paste(const horizon::json&, const horizon::Coordi&)' at src/core/tools/tool_paste.cpp:569:65:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::BusLabel>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::BusLabel>, std::_Select1st<std::pair<const horizon::UUID, horizon::BusLabel> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::BusLabel> > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Shape}; _Key = horizon::UUID; _Tp = horizon::Shape; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Shape> >]',
+    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::Shape}; _Key = horizon::UUID; _Tp = horizon::Shape; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Shape> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
+    inlined from 'horizon::ToolResponse horizon::ToolPaste::really_begin_paste(const horizon::json&, const horizon::Coordi&)' at src/core/tools/tool_paste.cpp:592:59:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Shape>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Shape>, std::_Select1st<std::pair<const horizon::UUID, horizon::Shape> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Shape> > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/core/tools/tool_helper_collect_nets.o
  build/obj/src/core/tools/tool_helper_plane.o
- build/obj/src/core/tools/tool_edit_via.o
- build/obj/src/core/tools/tool_rotate_arbitrary.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -52886,15 +52920,24 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/core/tools/tool_edit_via.o
+ build/obj/src/core/tools/tool_rotate_arbitrary.o
+ build/obj/src/core/tools/tool_edit_plane.o
+ build/obj/src/core/tools/tool_update_all_planes.o
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/core/tools/tool_rotate_arbitrary.cpp:2:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/core/tools/tool_edit_plane.o
- build/obj/src/core/tools/tool_update_all_planes.o
  build/obj/src/core/tools/tool_draw_dimension.o
+ build/obj/src/core/tools/tool_select_connected_lines.o
+In file included from src/canvas/canvas_gl.hpp:2,
+                 from src/core/tools/tool_select_connected_lines.cpp:2:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -52916,14 +52959,7 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/core/tools/tool_select_connected_lines.o
  build/obj/src/core/tools/tool_set_diffpair.o
-In file included from src/canvas/canvas_gl.hpp:2,
-                 from src/core/tools/tool_select_connected_lines.cpp:2:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
  build/obj/src/core/tools/tool_set_via_net.o
  build/obj/src/core/tools/tool_lock.o
  build/obj/src/core/tools/tool_add_vertex.o
@@ -52958,7 +52994,12 @@
  build/obj/src/core/tools/tool_edit_board_hole.o
  build/obj/src/core/tools/tool_generate_courtyard.o
  build/obj/src/core/tools/tool_generate_silkscreen.o
- build/obj/src/core/tools/tool_set_group.o
+In file included from src/canvas/canvas_gl.hpp:2,
+                 from src/core/tools/tool_generate_silkscreen.cpp:2:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
 In file included from /usr/include/c++/12/vector:70,
                  from src/common/common.hpp:3,
                  from src/core/tool_pub.hpp:2,
@@ -52991,45 +53032,32 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/core/tools/tool_set_group.o
  build/obj/src/core/tools/tool_swap_nets.o
-In file included from src/canvas/canvas_gl.hpp:2,
-                 from src/core/tools/tool_generate_silkscreen.cpp:2:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
  build/obj/src/core/tools/tool_line_loop_to_polygon.o
  build/obj/src/core/tools/tool_lines_to_tracks.o
  build/obj/src/core/tools/tool_change_unit.o
+ build/obj/src/core/tools/tool_helper_line_width_setting.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
                  from src/core/tool_pub.hpp:2,
                  from src/core/tool.hpp:2,
-                 from src/core/tools/tool_lines_to_tracks.hpp:2,
-                 from src/core/tools/tool_lines_to_tracks.cpp:1:
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::Track>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::Track> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Track> >]':
-/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Track>, std::_Select1st<std::pair<const horizon::UUID, horizon::Track> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Track> > >::const_iterator' changed in GCC 7.1
+                 from src/core/tools/tool_change_unit.hpp:2,
+                 from src/core/tools/tool_change_unit.cpp:1:
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const horizon::UUID&, horizon::SymbolPin&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::SymbolPin>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::SymbolPin> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SymbolPin> >]':
+/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::SymbolPin>, std::_Select1st<std::pair<const horizon::UUID, horizon::SymbolPin> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::SymbolPin> > >::const_iterator' changed in GCC 7.1
  2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In file included from /usr/include/c++/12/map:61:
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::Track; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Track> >]',
-    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::Track; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Track> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
-    inlined from 'virtual horizon::ToolResponse horizon::ToolLinesToTracks::begin(const horizon::ToolArgs&)' at src/core/tools/tool_lines_to_tracks.cpp:32:46:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Track>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Track>, std::_Select1st<std::pair<const horizon::UUID, horizon::Track> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Track> > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::Track; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Track> >]',
-    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::Track; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Track> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
-    inlined from 'virtual horizon::ToolResponse horizon::ToolLinesToTracks::begin(const horizon::ToolArgs&)' at src/core/tools/tool_lines_to_tracks.cpp:56:46:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Track>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Track>, std::_Select1st<std::pair<const horizon::UUID, horizon::Track> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Track> > >::const_iterator'} changed in GCC 7.1
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {const horizon::UUID&, horizon::SymbolPin&}; _Key = horizon::UUID; _Tp = horizon::SymbolPin; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SymbolPin> >]',
+    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {const horizon::UUID&, horizon::SymbolPin&}; _Key = horizon::UUID; _Tp = horizon::SymbolPin; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SymbolPin> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
+    inlined from 'virtual horizon::ToolResponse horizon::ToolChangeUnit::begin(const horizon::ToolArgs&)' at src/core/tools/tool_change_unit.cpp:36:43:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::SymbolPin>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::SymbolPin>, std::_Select1st<std::pair<const horizon::UUID, horizon::SymbolPin> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::SymbolPin> > >::const_iterator'} changed in GCC 7.1
   638 |           return _M_t._M_emplace_hint_unique(__pos,
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/core/tools/tool_helper_line_width_setting.o
 In file included from /usr/include/c++/12/vector:70,
                  from src/board/board_layers.hpp:3,
                  from src/core/tools/tool_generate_silkscreen.cpp:1:
@@ -53044,12 +53072,30 @@
                  from src/common/common.hpp:8,
                  from src/core/tool_pub.hpp:2,
                  from src/core/tool.hpp:2,
-                 from src/core/tools/tool_change_unit.hpp:2,
-                 from src/core/tools/tool_change_unit.cpp:1:
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const horizon::UUID&, horizon::SymbolPin&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::SymbolPin>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::SymbolPin> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SymbolPin> >]':
-/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::SymbolPin>, std::_Select1st<std::pair<const horizon::UUID, horizon::SymbolPin> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::SymbolPin> > >::const_iterator' changed in GCC 7.1
+                 from src/core/tools/tool_lines_to_tracks.hpp:2,
+                 from src/core/tools/tool_lines_to_tracks.cpp:1:
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::Track>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::Track> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Track> >]':
+/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Track>, std::_Select1st<std::pair<const horizon::UUID, horizon::Track> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Track> > >::const_iterator' changed in GCC 7.1
  2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/core/tools/tool_set_nc_all.o
+In file included from /usr/include/c++/12/map:61:
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::Track; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Track> >]',
+    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::Track; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Track> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
+    inlined from 'virtual horizon::ToolResponse horizon::ToolLinesToTracks::begin(const horizon::ToolArgs&)' at src/core/tools/tool_lines_to_tracks.cpp:32:46:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Track>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Track>, std::_Select1st<std::pair<const horizon::UUID, horizon::Track> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Track> > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::Track; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Track> >]',
+    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::Track; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Track> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
+    inlined from 'virtual horizon::ToolResponse horizon::ToolLinesToTracks::begin(const horizon::ToolArgs&)' at src/core/tools/tool_lines_to_tracks.cpp:56:46:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Track>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Track>, std::_Select1st<std::pair<const horizon::UUID, horizon::Track> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Track> > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -53058,21 +53104,12 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In file included from /usr/include/c++/12/map:61:
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {const horizon::UUID&, horizon::SymbolPin&}; _Key = horizon::UUID; _Tp = horizon::SymbolPin; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SymbolPin> >]',
-    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {const horizon::UUID&, horizon::SymbolPin&}; _Key = horizon::UUID; _Tp = horizon::SymbolPin; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SymbolPin> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
-    inlined from 'virtual horizon::ToolResponse horizon::ToolChangeUnit::begin(const horizon::ToolArgs&)' at src/core/tools/tool_change_unit.cpp:36:43:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::SymbolPin>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::SymbolPin>, std::_Select1st<std::pair<const horizon::UUID, horizon::SymbolPin> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::SymbolPin> > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/core/tools/tool_set_nc.o
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {ClipperLib::IntPoint&}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
     inlined from 'horizon::ToolResponse horizon::ToolGenerateSilkscreen::redraw_silkscreen()' at src/core/tools/tool_generate_silkscreen.cpp:104:33:
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/core/tools/tool_set_nc_all.o
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {long long int&, long long int&}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
     inlined from 'virtual horizon::ToolResponse horizon::ToolGenerateSilkscreen::begin(const horizon::ToolArgs&)' at src/core/tools/tool_generate_silkscreen.cpp:171:42:
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
@@ -53088,7 +53125,6 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/core/tools/tool_set_nc.o
  build/obj/src/core/tools/tool_add_keepout.o
  build/obj/src/core/tools/tool_helper_draw_net_setting.o
  build/obj/src/core/tools/tool_helper_get_symbol.o
@@ -53119,6 +53155,9 @@
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/core/tools/tool_import_kicad_package.o
+ build/obj/src/core/tools/tool_smash_silkscreen_graphics.o
+ build/obj/src/core/tools/tool_renumber_pads.o
+ build/obj/src/core/tools/tool_fix.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -53130,35 +53169,8 @@
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::BoardJunction>, std::_Select1st<std::pair<const horizon::UUID, horizon::BoardJunction> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::BoardJunction> > >::const_iterator' changed in GCC 7.1
  2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/core/tools/tool_smash_silkscreen_graphics.o
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::ConnectionLine>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::ConnectionLine> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::ConnectionLine> >]':
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::ConnectionLine>, std::_Select1st<std::pair<const horizon::UUID, horizon::ConnectionLine> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::ConnectionLine> > >::const_iterator' changed in GCC 7.1
-In file included from /usr/include/c++/12/map:61:
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::ConnectionLine; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::ConnectionLine> >]',
-    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::ConnectionLine; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::ConnectionLine> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
-    inlined from 'virtual horizon::ToolResponse horizon::ToolDrawConnectionLine::update(const horizon::ToolArgs&)' at src/core/tools/tool_draw_connection_line.cpp:76:63:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::ConnectionLine>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::ConnectionLine>, std::_Select1st<std::pair<const horizon::UUID, horizon::ConnectionLine> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::ConnectionLine> > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::ConnectionLine; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::ConnectionLine> >]',
-    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::ConnectionLine; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::ConnectionLine> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
-    inlined from 'virtual horizon::ToolResponse horizon::ToolDrawConnectionLine::update(const horizon::ToolArgs&)' at src/core/tools/tool_draw_connection_line.cpp:100:67:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::ConnectionLine>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::ConnectionLine>, std::_Select1st<std::pair<const horizon::UUID, horizon::ConnectionLine> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::ConnectionLine> > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {const horizon::UUID&, const horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::BoardJunction; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::BoardJunction> >]',
-    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {const horizon::UUID&, const horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::BoardJunction; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::BoardJunction> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
-    inlined from 'virtual horizon::ToolResponse horizon::ToolDrawConnectionLine::begin(const horizon::ToolArgs&)' at src/core/tools/tool_draw_connection_line.cpp:19:55:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::BoardJunction>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::BoardJunction>, std::_Select1st<std::pair<const horizon::UUID, horizon::BoardJunction> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::BoardJunction> > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/core/tools/tool_renumber_pads.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -53189,23 +53201,48 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/core/tools/tool_fix.o
+In file included from /usr/include/c++/12/map:61:
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::ConnectionLine; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::ConnectionLine> >]',
+    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::ConnectionLine; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::ConnectionLine> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
+    inlined from 'virtual horizon::ToolResponse horizon::ToolDrawConnectionLine::update(const horizon::ToolArgs&)' at src/core/tools/tool_draw_connection_line.cpp:76:63:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::ConnectionLine>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::ConnectionLine>, std::_Select1st<std::pair<const horizon::UUID, horizon::ConnectionLine> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::ConnectionLine> > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::ConnectionLine; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::ConnectionLine> >]',
+    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::ConnectionLine; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::ConnectionLine> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
+    inlined from 'virtual horizon::ToolResponse horizon::ToolDrawConnectionLine::update(const horizon::ToolArgs&)' at src/core/tools/tool_draw_connection_line.cpp:100:67:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::ConnectionLine>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::ConnectionLine>, std::_Select1st<std::pair<const horizon::UUID, horizon::ConnectionLine> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::ConnectionLine> > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {const horizon::UUID&, const horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::BoardJunction; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::BoardJunction> >]',
+    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {const horizon::UUID&, const horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::BoardJunction; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::BoardJunction> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
+    inlined from 'virtual horizon::ToolResponse horizon::ToolDrawConnectionLine::begin(const horizon::ToolArgs&)' at src/core/tools/tool_draw_connection_line.cpp:19:55:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::BoardJunction>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::BoardJunction>, std::_Select1st<std::pair<const horizon::UUID, horizon::BoardJunction> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::BoardJunction> > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/core/tools/tool_nopopulate.o
  build/obj/src/core/tools/tool_polygon_to_line_loop.o
  build/obj/src/core/tools/tool_place_board_panel.o
+ build/obj/src/core/tools/tool_smash_panel_outline.o
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/core/tools/tool_renumber_pads.cpp:6:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/core/tools/tool_smash_panel_outline.o
  build/obj/src/core/tools/tool_smash_package_outline.o
  build/obj/src/core/tools/tool_resize_symbol.o
  build/obj/src/core/tools/tool_round_off_vertex.o
  build/obj/src/core/tools/tool_swap_gates.o
  build/obj/src/core/tools/tool_place_picture.o
  build/obj/src/core/tools/tool_place_decal.o
+ build/obj/src/core/tools/tool_drag_polygon_edge.o
 In file included from /usr/include/c++/12/vector:70,
                  from 3rd_party/nlohmann/json_fwd.hpp:8,
                  from src/common/polygon.hpp:3,
@@ -53226,17 +53263,16 @@
 /usr/include/c++/12/bits/vector.tcc:398:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Polygon::Vertex*, std::vector<horizon::Polygon::Vertex> >' changed in GCC 7.1
   398 |           _M_realloc_insert(begin() + __n, std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/core/tools/tool_drag_polygon_edge.o
  build/obj/src/core/tools/tool_measure.o
  build/obj/src/core/tools/tool_edit_custom_value.o
+ build/obj/src/core/tools/tool_place_dot.o
+ build/obj/src/core/tools/tool_set_track_width.o
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/core/tools/tool_measure.cpp:4:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/core/tools/tool_place_dot.o
- build/obj/src/core/tools/tool_set_track_width.o
 In file included from /usr/include/c++/12/vector:70,
                  from src/common/common.hpp:3,
                  from src/core/tool_pub.hpp:2,
@@ -53268,12 +53304,12 @@
   184 |     {
       |     ^
  build/obj/src/core/tools/tool_helper_save_placements.o
+ build/obj/src/core/tools/tool_align_and_distribute.o
+ build/obj/src/core/tools/tool_helper_edit_plane.o
 src/core/tools/tool_helper_save_placements.cpp: In member function 'void horizon::ToolHelperSavePlacements::save_placements()':
 src/core/tools/tool_helper_save_placements.cpp:60:87: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
    60 |             const auto extents = tr.render(*text, ColorP::FROM_LAYER, Placement(), rev);
       |                                                                                       ^
- build/obj/src/core/tools/tool_align_and_distribute.o
- build/obj/src/core/tools/tool_helper_edit_plane.o
  build/obj/src/core/tools/tool_manage_power_nets.o
  build/obj/src/core/tools/tool_edit_text.o
 In file included from /usr/include/c++/12/bits/stl_algo.h:60,
@@ -53371,16 +53407,17 @@
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/core/tools/tool_move_track_center.o
+ build/obj/src/core/tools/tool_paste_placement.o
 In file included from src/canvas/canvas_pads.hpp:2,
                  from src/core/tools/tool_move_track_connection.cpp:6:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/core/tools/tool_paste_placement.o
  build/obj/src/document/documents.o
  build/obj/src/core/clipboard/clipboard.o
  build/obj/src/core/clipboard/clipboard_padstack.o
+ build/obj/src/core/clipboard/clipboard_package.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -53391,6 +53428,7 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/core/clipboard/clipboard_schematic.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -53402,8 +53440,6 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/core/clipboard/clipboard_package.o
- build/obj/src/core/clipboard/clipboard_schematic.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -53416,6 +53452,8 @@
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/core/clipboard/clipboard_board.o
+ build/obj/src/dialogs/map_uuid_path.o
+ build/obj/src/dialogs/map_package.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -53435,6 +53473,21 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In file included from /usr/include/c++/12/map:60,
+                 from src/common/lut.hpp:3,
+                 from src/common/common.hpp:8,
+                 from src/canvas/selectables.hpp:2,
+                 from src/core/clipboard/clipboard.hpp:2,
+                 from src/core/clipboard/clipboard_board.hpp:2,
+                 from src/core/clipboard/clipboard_board.cpp:1:
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::BoardJunction>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::BoardJunction> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::BoardJunction> >]':
+/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::BoardJunction>, std::_Select1st<std::pair<const horizon::UUID, horizon::BoardJunction> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::BoardJunction> > >::const_iterator' changed in GCC 7.1
+ 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
+/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
+ 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
@@ -53459,6 +53512,15 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In file included from /usr/include/c++/12/map:61:
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::BoardJunction; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::BoardJunction> >]',
+    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::BoardJunction; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::BoardJunction> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
+    inlined from 'virtual void horizon::ClipboardBoard::serialize(horizon::json&)' at src/core/clipboard/clipboard_board.cpp:71:55:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::BoardJunction>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::BoardJunction>, std::_Select1st<std::pair<const horizon::UUID, horizon::BoardJunction> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::BoardJunction> > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 /usr/include/c++/12/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>, std::tuple<>}; _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
@@ -53480,32 +53542,6 @@
       |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   513 |                                             std::tuple<>());
       |                                             ~~~~~~~~~~~~~~~
- build/obj/src/dialogs/map_uuid_path.o
-In file included from /usr/include/c++/12/map:60,
-                 from src/common/lut.hpp:3,
-                 from src/common/common.hpp:8,
-                 from src/canvas/selectables.hpp:2,
-                 from src/core/clipboard/clipboard.hpp:2,
-                 from src/core/clipboard/clipboard_board.hpp:2,
-                 from src/core/clipboard/clipboard_board.cpp:1:
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::BoardJunction>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::BoardJunction> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::BoardJunction> >]':
-/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::BoardJunction>, std::_Select1st<std::pair<const horizon::UUID, horizon::BoardJunction> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::BoardJunction> > >::const_iterator' changed in GCC 7.1
- 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
-/usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
- 2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In file included from /usr/include/c++/12/map:61:
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::BoardJunction; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::BoardJunction> >]',
-    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::BoardJunction; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::BoardJunction> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
-    inlined from 'virtual void horizon::ClipboardBoard::serialize(horizon::json&)' at src/core/clipboard/clipboard_board.cpp:71:55:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::BoardJunction>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::BoardJunction>, std::_Select1st<std::pair<const horizon::UUID, horizon::BoardJunction> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::BoardJunction> > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/dialogs/map_package.o
  build/obj/src/dialogs/ask_net_merge.o
  build/obj/src/dialogs/select_net.o
  build/obj/src/dialogs/symbol_pin_names_window.o
@@ -53563,6 +53599,7 @@
  build/obj/src/widgets/net_button.o
  build/obj/src/widgets/layer_box.o
  build/obj/src/widgets/spin_button_dim.o
+ build/obj/src/widgets/cell_renderer_color_box.o
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/widgets/layer_box.hpp:4,
                  from src/widgets/layer_box.cpp:2:
@@ -53570,8 +53607,9 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/widgets/cell_renderer_color_box.o
  build/obj/src/widgets/net_class_button.o
+ build/obj/src/widgets/parameter_set_editor.o
+ build/obj/src/widgets/pool_browser.o
 In file included from /usr/include/c++/12/map:60,
                  from /usr/include/glibmm-2.4/glibmm/variant.h:32,
                  from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:23,
@@ -53584,14 +53622,13 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/widgets/parameter_set_editor.o
- build/obj/src/widgets/pool_browser.o
  build/obj/src/widgets/pool_selector.o
  build/obj/src/widgets/component_selector.o
  build/obj/src/widgets/component_button.o
  build/obj/src/widgets/preview_canvas.o
  build/obj/src/widgets/about_dialog.o
  build/obj/src/widgets/project_meta_editor.o
+ build/obj/src/imp/keyseq_dialog.o
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/widgets/preview_canvas.cpp:10:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
@@ -53606,7 +53643,14 @@
 src/widgets/preview_canvas.cpp:180:47: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   180 |     auto bb = pad_bbox(canvas->get_bbox(), pad);
       |                                               ^
- build/obj/src/imp/keyseq_dialog.o
+ build/obj/src/canvas/canvas_patch.o
+In file included from src/canvas/canvas_patch.hpp:2,
+                 from src/canvas/canvas_patch.cpp:1:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
+ build/obj/src/export_gerber/gerber_writer.o
 src/widgets/preview_canvas.cpp: In member function 'bool horizon::PreviewCanvas::update_scale()':
 src/widgets/preview_canvas.cpp:129:6: note: parameter passing for argument of type 'std::pair<float, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   129 | bool PreviewCanvas::update_scale()
@@ -53615,33 +53659,7 @@
 src/widgets/preview_canvas.cpp:156:6: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   156 | void PreviewCanvas::load_symbol(const UUID &uu, const Placement &pl, bool fit, const UUID &uu_part, const UUID &uu_gate)
       |      ^~~~~~~~~~~~~
- build/obj/src/canvas/canvas_patch.o
- build/obj/src/export_gerber/gerber_writer.o
  build/obj/src/export_gerber/excellon_writer.o
-In file included from src/canvas/canvas_patch.hpp:2,
-                 from src/canvas/canvas_patch.cpp:1:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
-In file included from /usr/include/c++/12/map:60,
-                 from src/common/lut.hpp:3,
-                 from src/common/common.hpp:8,
-                 from src/export_gerber/excellon_writer.hpp:2,
-                 from src/export_gerber/excellon_writer.cpp:1:
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {long long unsigned int&, unsigned int&}; _Key = long long unsigned int; _Val = std::pair<const long long unsigned int, unsigned int>; _KeyOfValue = std::_Select1st<std::pair<const long long unsigned int, unsigned int> >; _Compare = std::less<long long unsigned int>; _Alloc = std::allocator<std::pair<const long long unsigned int, unsigned int> >]':
-/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<long long unsigned int, std::pair<const long long unsigned int, unsigned int>, std::_Select1st<std::pair<const long long unsigned int, unsigned int> >, std::less<long long unsigned int>, std::allocator<std::pair<const long long unsigned int, unsigned int> > >::const_iterator' changed in GCC 7.1
- 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In file included from /usr/include/c++/12/map:61:
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {long long unsigned int&, unsigned int&}; _Key = long long unsigned int; _Tp = unsigned int; _Compare = std::less<long long unsigned int>; _Alloc = std::allocator<std::pair<const long long unsigned int, unsigned int> >]',
-    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {long long unsigned int&, unsigned int&}; _Key = long long unsigned int; _Tp = unsigned int; _Compare = std::less<long long unsigned int>; _Alloc = std::allocator<std::pair<const long long unsigned int, unsigned int> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
-    inlined from 'unsigned int horizon::ExcellonWriter::get_tool_for_diameter(uint64_t)' at src/export_gerber/excellon_writer.cpp:66:22:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<long long unsigned int, unsigned int>::const_iterator' {aka 'std::_Rb_tree<long long unsigned int, std::pair<const long long unsigned int, unsigned int>, std::_Select1st<std::pair<const long long unsigned int, unsigned int> >, std::less<long long unsigned int>, std::allocator<std::pair<const long long unsigned int, unsigned int> > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/export_gerber/gerber_export.o
 In file included from /usr/include/c++/12/vector:70,
                  from src/common/common.hpp:3,
@@ -53662,6 +53680,7 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/export_gerber/canvas_gerber.o
 In file included from /usr/include/c++/12/vector:70,
                  from src/common/common.hpp:3,
                  from src/export_gerber/gerber_writer.hpp:2,
@@ -53670,12 +53689,6 @@
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::Coord<long long int> >::iterator' changed in GCC 7.1
   439 |       vector<_Tp, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~
-In file included from src/export_gerber/canvas_gerber.hpp:2,
-                 from src/export_gerber/gerber_export.cpp:2:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Coord<long long int>; _Alloc = std::allocator<horizon::Coord<long long int> >]',
     inlined from 'void horizon::GerberWriter::write_apertures()' at src/export_gerber/gerber_writer.cpp:147:55:
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Coord<long long int>*, std::vector<horizon::Coord<long long int> > >' changed in GCC 7.1
@@ -53702,20 +53715,43 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/export_gerber/canvas_gerber.o
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Coord<long long int>; _Alloc = std::allocator<horizon::Coord<long long int> >]',
-    inlined from 'void std::vector<_Tp, _Alloc>::push_back(value_type&&) [with _Tp = horizon::Coord<long long int>; _Alloc = std::allocator<horizon::Coord<long long int> >]' at /usr/include/c++/12/bits/stl_vector.h:1294:21,
-    inlined from 'void horizon::GerberWriter::draw_padstack(const horizon::Padstack&, int, const horizon::Placement&)' at src/export_gerber/gerber_writer.cpp:331:49:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Coord<long long int>*, std::vector<horizon::Coord<long long int> > >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In file included from src/export_gerber/canvas_gerber.hpp:2,
+                 from src/export_gerber/gerber_export.cpp:2:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
 In file included from src/export_gerber/canvas_gerber.hpp:2,
                  from src/export_gerber/canvas_gerber.cpp:1:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
+In file included from /usr/include/c++/12/map:60,
+                 from src/common/lut.hpp:3,
+                 from src/common/common.hpp:8,
+                 from src/export_gerber/excellon_writer.hpp:2,
+                 from src/export_gerber/excellon_writer.cpp:1:
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {long long unsigned int&, unsigned int&}; _Key = long long unsigned int; _Val = std::pair<const long long unsigned int, unsigned int>; _KeyOfValue = std::_Select1st<std::pair<const long long unsigned int, unsigned int> >; _Compare = std::less<long long unsigned int>; _Alloc = std::allocator<std::pair<const long long unsigned int, unsigned int> >]':
+/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<long long unsigned int, std::pair<const long long unsigned int, unsigned int>, std::_Select1st<std::pair<const long long unsigned int, unsigned int> >, std::less<long long unsigned int>, std::allocator<std::pair<const long long unsigned int, unsigned int> > >::const_iterator' changed in GCC 7.1
+ 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In file included from /usr/include/c++/12/map:61:
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {long long unsigned int&, unsigned int&}; _Key = long long unsigned int; _Tp = unsigned int; _Compare = std::less<long long unsigned int>; _Alloc = std::allocator<std::pair<const long long unsigned int, unsigned int> >]',
+    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {long long unsigned int&, unsigned int&}; _Key = long long unsigned int; _Tp = unsigned int; _Compare = std::less<long long unsigned int>; _Alloc = std::allocator<std::pair<const long long unsigned int, unsigned int> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
+    inlined from 'unsigned int horizon::ExcellonWriter::get_tool_for_diameter(uint64_t)' at src/export_gerber/excellon_writer.cpp:66:22:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<long long unsigned int, unsigned int>::const_iterator' {aka 'std::_Rb_tree<long long unsigned int, std::pair<const long long unsigned int, unsigned int>, std::_Select1st<std::pair<const long long unsigned int, unsigned int> >, std::less<long long unsigned int>, std::allocator<std::pair<const long long unsigned int, unsigned int> > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/export_util/padstack_hash.o
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Coord<long long int>; _Alloc = std::allocator<horizon::Coord<long long int> >]',
+    inlined from 'void std::vector<_Tp, _Alloc>::push_back(value_type&&) [with _Tp = horizon::Coord<long long int>; _Alloc = std::allocator<horizon::Coord<long long int> >]' at /usr/include/c++/12/bits/stl_vector.h:1294:21,
+    inlined from 'void horizon::GerberWriter::draw_padstack(const horizon::Padstack&, int, const horizon::Placement&)' at src/export_gerber/gerber_writer.cpp:331:49:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Coord<long long int>*, std::vector<horizon::Coord<long long int> > >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In file included from /usr/include/c++/12/vector:70,
                  from src/common/common.hpp:3,
                  from src/canvas/canvas.hpp:2:
@@ -53743,6 +53779,7 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
+ build/obj/src/export_pdf/export_pdf_util.o
 In file included from src/export_pdf/canvas_pdf.hpp:2,
                  from src/export_pdf/export_pdf.cpp:2:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
@@ -53755,14 +53792,13 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/export_pdf/export_pdf_util.o
- build/obj/src/export_pnp/export_pnp.o
 In file included from src/export_pdf/canvas_pdf.hpp:2,
                  from src/export_pdf/export_pdf_util.cpp:1:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
+ build/obj/src/export_pnp/export_pnp.o
  build/obj/src/export_bom/export_bom.o
  build/obj/src/export_odb/odb_export.o
 In file included from /usr/include/c++/12/bits/stl_algo.h:60,
@@ -53782,6 +53818,12 @@
       |     ^~~~~~~~~~
 /usr/include/c++/12/bits/stl_heap.h:254:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::PnPRow*, std::vector<horizon::PnPRow> >' changed in GCC 7.1
 /usr/include/c++/12/bits/stl_heap.h:254:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::PnPRow*, std::vector<horizon::PnPRow> >' changed in GCC 7.1
+In file included from src/export_odb/canvas_odb.hpp:2,
+                 from src/export_odb/odb_export.cpp:5:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
 /usr/include/c++/12/bits/stl_heap.h: In function 'void std::__make_heap(_RandomAccessIterator, _RandomAccessIterator, _Compare&) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<horizon::PnPRow*, vector<horizon::PnPRow> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<horizon::export_PnP(const Board&, const PnPExportSettings&)::<lambda(const auto:8&, const auto:9&)> >]':
 /usr/include/c++/12/bits/stl_heap.h:340:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::PnPRow*, std::vector<horizon::PnPRow> >' changed in GCC 7.1
   340 |     __make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
@@ -53821,6 +53863,7 @@
 /usr/include/c++/12/bits/stl_algo.h:1629:23: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::PnPRow*, std::vector<horizon::PnPRow> >' changed in GCC 7.1
  1629 |       std::__make_heap(__first, __middle, __comp);
       |       ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/export_odb/canvas_odb.o
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::PnPRow}; _Tp = horizon::PnPRow; _Alloc = std::allocator<horizon::PnPRow>]',
     inlined from 'void std::vector<_Tp, _Alloc>::push_back(value_type&&) [with _Tp = horizon::PnPRow; _Alloc = std::allocator<horizon::PnPRow>]' at /usr/include/c++/12/bits/stl_vector.h:1294:21,
     inlined from 'std::back_insert_iterator<_Container>& std::back_insert_iterator<_Container>::operator=(typename _Container::value_type&&) [with _Container = std::vector<horizon::PnPRow>]' at /usr/include/c++/12/bits/stl_iterator.h:743:22,
@@ -53849,14 +53892,8 @@
 /usr/include/c++/12/bits/stl_algo.h:1854:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::PnPRow*, std::vector<horizon::PnPRow> >' changed in GCC 7.1
  1854 |         std::__insertion_sort(__first, __last, __comp);
       |         ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
-In file included from src/export_odb/canvas_odb.hpp:2,
-                 from src/export_odb/odb_export.cpp:5:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
- build/obj/src/export_odb/canvas_odb.o
  build/obj/src/export_odb/db.o
+ build/obj/src/export_odb/eda_data.o
 In file included from src/export_odb/canvas_odb.hpp:2,
                  from src/export_odb/canvas_odb.cpp:1:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
@@ -53875,7 +53912,6 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::ODB::SurfaceData::SurfaceLine*, std::vector<horizon::ODB::SurfaceData::SurfaceLine> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/export_odb/eda_data.o
  build/obj/src/export_odb/attribute_util.o
  build/obj/src/export_odb/surface_data.o
  build/obj/src/export_odb/features.o
@@ -53908,6 +53944,7 @@
  build/obj/src/imp/footprint_generator/footprint_generator_dual.o
  build/obj/src/imp/footprint_generator/footprint_generator_single.o
  build/obj/src/imp/footprint_generator/footprint_generator_quad.o
+ build/obj/src/imp/footprint_generator/footprint_generator_grid.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -53918,6 +53955,15 @@
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Pad>, std::_Select1st<std::pair<const horizon::UUID, horizon::Pad> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Pad> > >::const_iterator' changed in GCC 7.1
  2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In file included from /usr/include/c++/12/map:61:
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Pad}; _Key = horizon::UUID; _Tp = horizon::Pad; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Pad> >]',
+    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::Pad}; _Key = horizon::UUID; _Tp = horizon::Pad; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Pad> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
+    inlined from 'virtual bool horizon::FootprintGeneratorDual::generate()' at src/imp/footprint_generator/footprint_generator_dual.cpp:143:45:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Pad>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Pad>, std::_Select1st<std::pair<const horizon::UUID, horizon::Pad> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Pad> > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -53931,22 +53977,14 @@
 In file included from /usr/include/c++/12/map:61:
 In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Pad}; _Key = horizon::UUID; _Tp = horizon::Pad; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Pad> >]',
     inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::Pad}; _Key = horizon::UUID; _Tp = horizon::Pad; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Pad> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
-    inlined from 'virtual bool horizon::FootprintGeneratorDual::generate()' at src/imp/footprint_generator/footprint_generator_dual.cpp:143:45:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Pad>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Pad>, std::_Select1st<std::pair<const horizon::UUID, horizon::Pad> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Pad> > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In file included from /usr/include/c++/12/map:61:
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Pad}; _Key = horizon::UUID; _Tp = horizon::Pad; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Pad> >]',
-    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::Pad}; _Key = horizon::UUID; _Tp = horizon::Pad; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Pad> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
     inlined from 'virtual bool horizon::FootprintGeneratorSingle::generate()' at src/imp/footprint_generator/footprint_generator_single.cpp:74:41:
 /usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, horizon::Pad>::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Pad>, std::_Select1st<std::pair<const horizon::UUID, horizon::Pad> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Pad> > >::const_iterator'} changed in GCC 7.1
   638 |           return _M_t._M_emplace_hint_unique(__pos,
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/imp/footprint_generator/footprint_generator_grid.o
+ build/obj/src/imp/footprint_generator/svg_overlay.o
+ build/obj/src/imp/footprint_generator/footprint_generator_footag.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -53974,25 +54012,6 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/imp/footprint_generator/svg_overlay.o
-src/imp/footprint_generator/svg_overlay.cpp: In member function 'bool horizon::SVGOverlay::draw(const Cairo::RefPtr<Cairo::Context>&)':
-src/imp/footprint_generator/svg_overlay.cpp:46:29: warning: 'gboolean rsvg_handle_render_cairo(RsvgHandle*, cairo_t*)' is deprecated: Use 'rsvg_handle_render_document' instead [-Wdeprecated-declarations]
-   46 |     rsvg_handle_render_cairo(handle, cr->cobj());
-      |     ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
-In file included from /usr/include/librsvg-2.0/librsvg/rsvg.h:1452,
-                 from src/imp/footprint_generator/svg_overlay.hpp:3,
-                 from src/imp/footprint_generator/svg_overlay.cpp:1:
-/usr/include/librsvg-2.0/librsvg/rsvg-cairo.h:88:10: note: declared here
-   88 | gboolean rsvg_handle_render_cairo (RsvgHandle *handle, cairo_t *cr);
-      |          ^~~~~~~~~~~~~~~~~~~~~~~~
-src/imp/footprint_generator/svg_overlay.cpp: In member function 'void horizon::SVGOverlay::init(const guint8*, gsize)':
-src/imp/footprint_generator/svg_overlay.cpp:87:31: warning: 'void rsvg_handle_get_dimensions(RsvgHandle*, RsvgDimensionData*)' is deprecated: Use 'rsvg_handle_get_intrinsic_size_in_pixels' instead [-Wdeprecated-declarations]
-   87 |     rsvg_handle_get_dimensions(handle, &dim);
-      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
-/usr/include/librsvg-2.0/librsvg/rsvg.h:708:6: note: declared here
-  708 | void rsvg_handle_get_dimensions (RsvgHandle *handle, RsvgDimensionData *dimension_data);
-      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/imp/footprint_generator/footprint_generator_footag.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -54013,6 +54032,31 @@
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/imp/footprint_generator/footag/display.o
+src/imp/footprint_generator/svg_overlay.cpp: In member function 'bool horizon::SVGOverlay::draw(const Cairo::RefPtr<Cairo::Context>&)':
+src/imp/footprint_generator/svg_overlay.cpp:46:29: warning: 'gboolean rsvg_handle_render_cairo(RsvgHandle*, cairo_t*)' is deprecated: Use 'rsvg_handle_render_document' instead [-Wdeprecated-declarations]
+   46 |     rsvg_handle_render_cairo(handle, cr->cobj());
+      |     ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
+In file included from /usr/include/librsvg-2.0/librsvg/rsvg.h:1452,
+                 from src/imp/footprint_generator/svg_overlay.hpp:3,
+                 from src/imp/footprint_generator/svg_overlay.cpp:1:
+/usr/include/librsvg-2.0/librsvg/rsvg-cairo.h:88:10: note: declared here
+   88 | gboolean rsvg_handle_render_cairo (RsvgHandle *handle, cairo_t *cr);
+      |          ^~~~~~~~~~~~~~~~~~~~~~~~
+src/imp/footprint_generator/svg_overlay.cpp: In member function 'void horizon::SVGOverlay::init(const guint8*, gsize)':
+src/imp/footprint_generator/svg_overlay.cpp:87:31: warning: 'void rsvg_handle_get_dimensions(RsvgHandle*, RsvgDimensionData*)' is deprecated: Use 'rsvg_handle_get_intrinsic_size_in_pixels' instead [-Wdeprecated-declarations]
+   87 |     rsvg_handle_get_dimensions(handle, &dim);
+      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
+/usr/include/librsvg-2.0/librsvg/rsvg.h:708:6: note: declared here
+  708 | void rsvg_handle_get_dimensions (RsvgHandle *handle, RsvgDimensionData *dimension_data);
+      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/imp/imp_interface.o
+ build/obj/src/imp/parameter_window.o
+In file included from src/canvas/canvas_gl.hpp:2,
+                 from src/imp/imp_interface.cpp:2:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
 In file included from /usr/include/c++/12/map:60,
                  from /usr/include/glibmm-2.4/glibmm/variant.h:32,
                  from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:23,
@@ -54026,6 +54070,12 @@
       |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 /usr/include/c++/12/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>, std::tuple<>}; _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
+In file included from src/canvas/canvas_gl.hpp:2,
+                 from src/imp/footprint_generator/footag/display.cpp:10:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
 In file included from /usr/include/c++/12/map:61:
 /usr/include/c++/12/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
 /usr/include/c++/12/bits/stl_map.h:511:44: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
@@ -54044,7 +54094,6 @@
       |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   513 |                                             std::tuple<>());
       |                                             ~~~~~~~~~~~~~~~
- build/obj/src/imp/imp_interface.o
 In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]',
     inlined from 'bool nlohmann::detail::json_sax_dom_parser<BasicJsonType>::key(string_t&) [with BasicJsonType = nlohmann::basic_json<>]' at 3rd_party/nlohmann/detail/input/json_sax.hpp:236:72,
     inlined from 'bool nlohmann::detail::parser<BasicJsonType, InputAdapterType>::sax_parse_internal(SAX*) [with SAX = nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<> >; BasicJsonType = nlohmann::basic_json<>; InputAdapterType = nlohmann::detail::iterator_input_adapter<const char*>]' at 3rd_party/nlohmann/detail/input/parser.hpp:410:21:
@@ -54055,6 +54104,7 @@
       |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   513 |                                             std::tuple<>());
       |                                             ~~~~~~~~~~~~~~~
+ build/obj/src/widgets/pool_browser_part.o
 In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, horizon::SVGOverlay::SubInfo&}; _Key = std::__cxx11::basic_string<char>; _Tp = horizon::SVGOverlay::SubInfo; _Compare = std::less<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, horizon::SVGOverlay::SubInfo> >]',
     inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Val>, std::_Select1st<std::pair<const _Key, _Val> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Val> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, horizon::SVGOverlay::SubInfo&}; _Key = std::__cxx11::basic_string<char>; _Tp = horizon::SVGOverlay::SubInfo; _Compare = std::less<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, horizon::SVGOverlay::SubInfo> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
     inlined from 'horizon::SVGOverlay::SVGOverlay(const char*)' at src/imp/footprint_generator/svg_overlay.cpp:33:25:
@@ -54071,28 +54121,15 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In file included from src/canvas/canvas_gl.hpp:2,
-                 from src/imp/imp_interface.cpp:2:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
-In file included from src/canvas/canvas_gl.hpp:2,
-                 from src/imp/footprint_generator/footag/display.cpp:10:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
- build/obj/src/imp/parameter_window.o
 In file included from /usr/include/c++/12/regex:53,
                  from src/imp/footprint_generator/footag/display.cpp:1:
 /usr/include/c++/12/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple<horizon::ParameterID&&>, std::tuple<>}; _Key = horizon::ParameterID; _Val = std::pair<const horizon::ParameterID, long long int>; _KeyOfValue = std::_Select1st<std::pair<const horizon::ParameterID, long long int> >; _Compare = std::less<horizon::ParameterID>; _Alloc = std::allocator<std::pair<const horizon::ParameterID, long long int> >]':
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::ParameterID, std::pair<const horizon::ParameterID, long long int>, std::_Select1st<std::pair<const horizon::ParameterID, long long int> >, std::less<horizon::ParameterID>, std::allocator<std::pair<const horizon::ParameterID, long long int> > >::const_iterator' changed in GCC 7.1
  2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/widgets/pool_browser_entity.o
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Pad}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::Pad>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::Pad> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Pad> >]':
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Pad>, std::_Select1st<std::pair<const horizon::UUID, horizon::Pad> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Pad> > >::const_iterator' changed in GCC 7.1
- build/obj/src/widgets/pool_browser_part.o
 In file included from /usr/include/c++/12/regex:54:
 In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::Pad}; _Key = horizon::UUID; _Tp = horizon::Pad; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Pad> >]',
     inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::Pad}; _Key = horizon::UUID; _Tp = horizon::Pad; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Pad> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
@@ -54157,7 +54194,6 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/widgets/pool_browser_entity.o
  build/obj/src/widgets/pool_browser_padstack.o
  build/obj/src/widgets/pool_browser_package.o
  build/obj/src/widgets/pool_browser_unit.o
@@ -54199,6 +54235,8 @@
  build/obj/src/widgets/location_entry.o
  build/obj/src/rules/rules_with_core.o
  build/obj/src/rules/cache.o
+ build/obj/src/board/board_rules_check.o
+ build/obj/src/board/board_rules_check_clearance_copper.o
 In file included from src/canvas/canvas_patch.hpp:2,
                  from src/rules/cache.hpp:2,
                  from src/rules/cache.cpp:1:
@@ -54206,8 +54244,7 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/board/board_rules_check.o
- build/obj/src/board/board_rules_check_clearance_copper.o
+ build/obj/src/board/board_rules_check_clearance_copper_non_copper.o
 In file included from src/canvas/canvas_patch.hpp:2,
                  from src/rules/cache.hpp:2,
                  from src/board/board_rules_check.cpp:5:
@@ -54222,6 +54259,13 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
+In file included from src/canvas/canvas_patch.hpp:2,
+                 from src/rules/cache.hpp:2,
+                 from src/board/board_rules_check_clearance_copper_non_copper.cpp:4:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
 In file included from /usr/include/c++/12/vector:70,
                  from src/common/common.hpp:3,
                  from src/canvas/canvas.hpp:2:
@@ -54235,7 +54279,6 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::RulesCheckCacheNetPins::NetPin*, std::vector<horizon::RulesCheckCacheNetPins::NetPin> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/board/board_rules_check_clearance_copper_non_copper.o
 In file included from /usr/include/c++/12/map:60,
                  from 3rd_party/nlohmann/json_fwd.hpp:5,
                  from src/block/bus.hpp:2,
@@ -54256,13 +54299,7 @@
       |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   513 |                                             std::tuple<>());
       |                                             ~~~~~~~~~~~~~~~
-In file included from src/canvas/canvas_patch.hpp:2,
-                 from src/rules/cache.hpp:2,
-                 from src/board/board_rules_check_clearance_copper_non_copper.cpp:4:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
+ build/obj/src/board/board_rules_check_net_ties.o
 In file included from /usr/include/c++/12/vector:70,
                  from 3rd_party/nlohmann/json_fwd.hpp:8:
 /usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const horizon::PatchInfo&}; _Tp = horizon::PatchInfo; _Alloc = std::allocator<horizon::PatchInfo>]':
@@ -54273,6 +54310,7 @@
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::PatchPair>::iterator' changed in GCC 7.1
 /usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const horizon::PatchExpanded&}; _Tp = horizon::PatchExpanded; _Alloc = std::allocator<horizon::PatchExpanded>]':
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::PatchExpanded, std::allocator<horizon::PatchExpanded> >::iterator' changed in GCC 7.1
+ build/obj/src/board/board_rules_check_plane_priorities.o
 In file included from /usr/include/c++/12/vector:64:
 In member function 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = horizon::PatchInfo; _Alloc = std::allocator<horizon::PatchInfo>]',
     inlined from 'void horizon::NamedVector<T, Name>::push_back(const T&) [with T = horizon::PatchInfo; Name = horizon::PatchInfo]' at src/util/named_vector.hpp:76:22,
@@ -54318,9 +54356,6 @@
 /usr/include/c++/12/bits/stl_vector.h:1287:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::PatchExpanded*, std::vector<horizon::PatchExpanded, std::allocator<horizon::PatchExpanded> > >' changed in GCC 7.1
  1287 |           _M_realloc_insert(end(), __x);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
- build/obj/src/board/board_rules_check_net_ties.o
- build/obj/src/board/board_rules_check_plane_priorities.o
- build/obj/src/board/board_rules_check_board_connectivity.o
 In file included from src/canvas/canvas_patch.hpp:2,
                  from src/rules/cache.hpp:2,
                  from src/board/board_rules_check_net_ties.cpp:4:
@@ -54335,13 +54370,18 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
-In file included from src/canvas/canvas_patch.hpp:2,
-                 from src/rules/cache.hpp:2,
-                 from src/board/board_rules_check_board_connectivity.cpp:3:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
+ build/obj/src/board/board_rules_check_board_connectivity.o
+ build/obj/src/board/board_rules_check_util.o
+In file included from /usr/include/c++/12/vector:70,
+                 from 3rd_party/nlohmann/json_fwd.hpp:8,
+                 from src/block/bus.hpp:2,
+                 from src/block/block.hpp:2,
+                 from src/board/board.hpp:2,
+                 from src/board/board_rules_check_plane_priorities.cpp:1:
+/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const long long int&, const long long int&}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]':
+/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<ClipperLib::IntPoint>::iterator' changed in GCC 7.1
+  439 |       vector<_Tp, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~
 In file included from /usr/include/c++/12/vector:70,
                  from 3rd_party/nlohmann/json_fwd.hpp:8,
                  from src/block/bus.hpp:2,
@@ -54364,48 +54404,21 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In file included from /usr/include/c++/12/vector:70,
-                 from 3rd_party/nlohmann/json_fwd.hpp:8,
-                 from src/block/bus.hpp:2,
-                 from src/block/block.hpp:2,
-                 from src/board/board.hpp:2,
-                 from src/board/board_rules_check_plane_priorities.cpp:1:
-/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const long long int&, const long long int&}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]':
-/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<ClipperLib::IntPoint>::iterator' changed in GCC 7.1
-  439 |       vector<_Tp, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {const long long int&, const long long int&}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
     inlined from 'horizon::RulesCheckResult horizon::BoardRules::check_plane_priorities(const horizon::Board&) const' at src/board/board_rules_check_plane_priorities.cpp:40:34:
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/board/board_rules_check_util.o
  build/obj/src/board/board_rules_import.o
-In file included from /usr/include/c++/12/vector:70,
-                 from 3rd_party/nlohmann/json_fwd.hpp:8,
-                 from src/block/bus.hpp:2,
-                 from src/block/block.hpp:2,
-                 from src/board/board.hpp:2,
-                 from src/board/board_rules_check_board_connectivity.cpp:1:
-/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const std::vector<ClipperLib::IntPoint, std::allocator<ClipperLib::IntPoint> >&}; _Tp = horizon::HoleInfo; _Alloc = std::allocator<horizon::HoleInfo>]':
-/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::HoleInfo>::iterator' changed in GCC 7.1
-  439 |       vector<_Tp, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~
- build/obj/src/schematic/schematic_rules_check.o
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {const std::vector<ClipperLib::IntPoint, std::allocator<ClipperLib::IntPoint> >&}; _Tp = horizon::HoleInfo; _Alloc = std::allocator<horizon::HoleInfo>]',
-    inlined from 'horizon::RulesCheckResult horizon::BoardRules::check_board_connectivity(const horizon::Board&, horizon::RulesCheckCache&, horizon::check_status_cb_t, const std::atomic_bool&) const' at src/board/board_rules_check_board_connectivity.cpp:201:39:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::HoleInfo*, std::vector<horizon::HoleInfo> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/package/package_rules_check.o
 In file included from src/canvas/canvas_patch.hpp:2,
                  from src/rules/cache.hpp:2,
-                 from src/schematic/schematic_rules_check.cpp:3:
+                 from src/board/board_rules_check_board_connectivity.cpp:3:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/symbol/symbol_rules_check.o
+ build/obj/src/schematic/schematic_rules_check.o
+ build/obj/src/package/package_rules_check.o
 In file included from src/canvas/canvas_patch.hpp:2,
                  from src/rules/cache.hpp:2,
                  from src/package/package_rules_check.cpp:3:
@@ -54423,58 +54436,73 @@
       |                     &
 In file included from src/canvas/canvas_patch.hpp:2,
                  from src/rules/cache.hpp:2,
-                 from src/symbol/symbol_rules_check.cpp:2:
+                 from src/schematic/schematic_rules_check.cpp:3:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/board/plane_update.o
-In file included from src/canvas/canvas_pads.hpp:2,
-                 from src/board/plane_update.cpp:3:
+ build/obj/src/symbol/symbol_rules_check.o
+In file included from src/canvas/canvas_patch.hpp:2,
+                 from src/rules/cache.hpp:2,
+                 from src/symbol/symbol_rules_check.cpp:2:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/imp/symbol_preview/symbol_preview_window.o
- build/obj/src/imp/symbol_preview/symbol_preview_expand_window.o
 In file included from /usr/include/c++/12/vector:70,
                  from 3rd_party/nlohmann/json_fwd.hpp:8,
                  from src/block/bus.hpp:2,
                  from src/block/block.hpp:2,
                  from src/board/board.hpp:2,
-                 from src/board/plane_update.cpp:1:
-/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {ClipperLib::IntPoint}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]':
-/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<ClipperLib::IntPoint>::iterator' changed in GCC 7.1
+                 from src/board/board_rules_check_board_connectivity.cpp:1:
+/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const std::vector<ClipperLib::IntPoint, std::allocator<ClipperLib::IntPoint> >&}; _Tp = horizon::HoleInfo; _Alloc = std::allocator<horizon::HoleInfo>]':
+/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::HoleInfo>::iterator' changed in GCC 7.1
   439 |       vector<_Tp, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~
-/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {long long int, long long int}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]':
-/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<ClipperLib::IntPoint>::iterator' changed in GCC 7.1
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {const std::vector<ClipperLib::IntPoint, std::allocator<ClipperLib::IntPoint> >&}; _Tp = horizon::HoleInfo; _Alloc = std::allocator<horizon::HoleInfo>]',
+    inlined from 'horizon::RulesCheckResult horizon::BoardRules::check_board_connectivity(const horizon::Board&, horizon::RulesCheckCache&, horizon::check_status_cb_t, const std::atomic_bool&) const' at src/board/board_rules_check_board_connectivity.cpp:201:39:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::HoleInfo*, std::vector<horizon::HoleInfo> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/board/plane_update.o
+ build/obj/src/imp/symbol_preview/symbol_preview_window.o
+ build/obj/src/imp/symbol_preview/symbol_preview_expand_window.o
+ build/obj/src/imp/symbol_preview/preview_box.o
+In file included from src/canvas/canvas_pads.hpp:2,
+                 from src/board/plane_update.cpp:3:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/imp/symbol_preview/symbol_preview_expand_window.cpp:4:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {long long int, long long int}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
-    inlined from 'ClipperLib::Paths horizon::Board::get_thermals(horizon::Plane*, const horizon::CanvasPads*) const' at src/board/plane_update.cpp:633:27:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {long long int, long long int}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
-    inlined from 'ClipperLib::Paths horizon::Board::get_thermals(horizon::Plane*, const horizon::CanvasPads*) const' at src/board/plane_update.cpp:634:27:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/imp/symbol_preview/preview_box.o
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {ClipperLib::IntPoint}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
-    inlined from 'void horizon::Board::update_plane(horizon::Plane*, const horizon::CanvasPatch*, const horizon::CanvasPads*, horizon::plane_update_status_cb_t, const std::atomic_bool&)' at src/board/plane_update.cpp:144:35:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In file included from src/canvas/canvas_gl.hpp:2,
+                 from src/imp/symbol_preview/preview_box.cpp:2:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
+ build/obj/src/util/gtk_util.o
 src/imp/symbol_preview/symbol_preview_expand_window.cpp: In member function 'void horizon::SymbolPreviewExpandWindow::zoom_to_fit()':
 src/imp/symbol_preview/symbol_preview_expand_window.cpp:79:61: note: parameter passing for argument of type 'std::pair<float, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
    79 |         auto [scale, offset] = canvas->get_scale_and_offset();
       |                                                             ^
+In file included from /usr/include/c++/12/vector:70,
+                 from 3rd_party/nlohmann/json_fwd.hpp:8,
+                 from src/block/bus.hpp:2,
+                 from src/block/block.hpp:2,
+                 from src/board/board.hpp:2,
+                 from src/board/plane_update.cpp:1:
+/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {ClipperLib::IntPoint}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]':
+/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<ClipperLib::IntPoint>::iterator' changed in GCC 7.1
+  439 |       vector<_Tp, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~
+/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {long long int, long long int}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]':
+/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<ClipperLib::IntPoint>::iterator' changed in GCC 7.1
 src/imp/symbol_preview/symbol_preview_expand_window.cpp:72:6: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
    72 | void SymbolPreviewExpandWindow::zoom_to_fit()
       |      ^~~~~~~~~~~~~~~~~~~~~~~~~
@@ -54487,14 +54515,17 @@
 src/imp/symbol_preview/symbol_preview_expand_window.cpp:79:60: note: parameter passing for argument of type 'std::pair<float, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
    79 |         auto [scale, offset] = canvas->get_scale_and_offset();
       |                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
- build/obj/src/util/gtk_util.o
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {long long int, long long int}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
+    inlined from 'ClipperLib::Paths horizon::Board::get_thermals(horizon::Plane*, const horizon::CanvasPads*) const' at src/board/plane_update.cpp:633:27:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {long long int, long long int}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
+    inlined from 'ClipperLib::Paths horizon::Board::get_thermals(horizon::Plane*, const horizon::CanvasPads*) const' at src/board/plane_update.cpp:634:27:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/imp/fab_output_window.o
-In file included from src/canvas/canvas_gl.hpp:2,
-                 from src/imp/symbol_preview/preview_box.cpp:2:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
 In file included from /usr/include/c++/12/map:60,
                  from 3rd_party/nlohmann/json_fwd.hpp:5,
                  from src/common/arc.hpp:3,
@@ -54524,7 +54555,14 @@
       |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   513 |                                             std::tuple<>());
       |                                             ~~~~~~~~~~~~~~~
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {ClipperLib::IntPoint}; _Tp = ClipperLib::IntPoint; _Alloc = std::allocator<ClipperLib::IntPoint>]',
+    inlined from 'void horizon::Board::update_plane(horizon::Plane*, const horizon::CanvasPatch*, const horizon::CanvasPads*, horizon::plane_update_status_cb_t, const std::atomic_bool&)' at src/board/plane_update.cpp:144:35:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/imp/bom_export_window.o
+ build/obj/src/imp/pdf_export_window.o
+ build/obj/src/imp/3d/3d_view.o
 In file included from src/canvas/canvas_patch.hpp:2,
                  from src/rules/cache.hpp:2,
                  from src/imp/fab_output_window.cpp:9:
@@ -54532,9 +54570,6 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/imp/pdf_export_window.o
- build/obj/src/imp/3d/3d_view.o
- build/obj/src/imp/3d/axes_lollipop.o
 In file included from src/canvas/canvas_patch.hpp:2,
                  from src/canvas3d/canvas_mesh.hpp:2,
                  from src/canvas3d/canvas3d.hpp:2,
@@ -54543,6 +54578,8 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
+ build/obj/src/imp/3d/axes_lollipop.o
+ build/obj/src/imp/step_export_window.o
 In file included from src/canvas/canvas_patch.hpp:2,
                  from src/canvas3d/canvas_mesh.hpp:2,
                  from src/canvas3d/canvas3d.hpp:2,
@@ -54551,9 +54588,9 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/imp/step_export_window.o
  build/obj/src/imp/tuning_window.o
  build/obj/src/canvas3d/canvas_mesh.o
+ build/obj/src/canvas3d/canvas3d.o
 In file included from src/canvas/canvas_patch.hpp:2,
                  from src/canvas3d/canvas_mesh.hpp:2,
                  from src/canvas3d/canvas_mesh.cpp:1:
@@ -54561,20 +54598,7 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/canvas3d/canvas3d.o
  build/obj/src/canvas3d/canvas3d_base.o
-In file included from /usr/include/c++/12/vector:70,
-                 from src/common/common.hpp:3,
-                 from src/canvas/canvas.hpp:2:
-/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {long long int&, long long int&}; _Tp = p2t::Point; _Alloc = std::allocator<p2t::Point>]':
-/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<p2t::Point>::iterator' changed in GCC 7.1
-  439 |       vector<_Tp, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {long long int&, long long int&}; _Tp = p2t::Point; _Alloc = std::allocator<p2t::Point>]',
-    inlined from 'void horizon::append_path(std::vector<p2t::Point>&, std::vector<p2t::Point*>&, std::set<std::pair<long long int, long long int> >&, const ClipperLib::Path&)' at src/canvas3d/canvas_mesh.cpp:369:27:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<p2t::Point*, std::vector<p2t::Point> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In file included from src/canvas/canvas_patch.hpp:2,
                  from src/canvas3d/canvas_mesh.hpp:2,
                  from src/canvas3d/canvas3d.hpp:2,
@@ -54591,7 +54615,20 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
+In file included from /usr/include/c++/12/vector:70,
+                 from src/common/common.hpp:3,
+                 from src/canvas/canvas.hpp:2:
+/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {long long int&, long long int&}; _Tp = p2t::Point; _Alloc = std::allocator<p2t::Point>]':
+/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<p2t::Point>::iterator' changed in GCC 7.1
+  439 |       vector<_Tp, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {long long int&, long long int&}; _Tp = p2t::Point; _Alloc = std::allocator<p2t::Point>]',
+    inlined from 'void horizon::append_path(std::vector<p2t::Point>&, std::vector<p2t::Point*>&, std::set<std::pair<long long int, long long int> >&, const ClipperLib::Path&)' at src/canvas3d/canvas_mesh.cpp:369:27:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<p2t::Point*, std::vector<p2t::Point> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/canvas3d/cover_renderer.o
+ build/obj/src/canvas3d/wall_renderer.o
 In file included from src/canvas/canvas_patch.hpp:2,
                  from src/canvas3d/canvas_mesh.hpp:2,
                  from src/canvas3d/canvas3d_base.hpp:4,
@@ -54600,7 +54637,6 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/canvas3d/wall_renderer.o
 In file included from src/canvas/canvas_patch.hpp:2,
                  from src/canvas3d/canvas_mesh.hpp:2,
                  from src/canvas3d/canvas3d_base.hpp:4,
@@ -54616,6 +54652,7 @@
 /usr/include/c++/12/bits/stl_algo.h:1782:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Canvas3D::load_models_thread(std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >)::FilenameItem*, std::vector<horizon::Canvas3D::load_models_thread(std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >)::FilenameItem> >' changed in GCC 7.1
  1782 |     __unguarded_linear_insert(_RandomAccessIterator __last,
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/canvas3d/face_renderer.o
 /usr/include/c++/12/bits/stl_algo.h: In function 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<horizon::Canvas3D::load_models_thread(std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >)::FilenameItem*, vector<horizon::Canvas3D::load_models_thread(std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >)::FilenameItem> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<horizon::Canvas3D::load_models_thread(std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >)::<lambda(const auto:41&, const auto:42&)> >]':
 /usr/include/c++/12/bits/stl_algo.h:1802:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Canvas3D::load_models_thread(std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >)::FilenameItem*, std::vector<horizon::Canvas3D::load_models_thread(std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >)::FilenameItem> >' changed in GCC 7.1
  1802 |     __insertion_sort(_RandomAccessIterator __first,
@@ -54634,7 +54671,7 @@
 /usr/include/c++/12/bits/stl_algo.h:1922:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Canvas3D::load_models_thread(std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >)::FilenameItem*, std::vector<horizon::Canvas3D::load_models_thread(std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >)::FilenameItem> >' changed in GCC 7.1
  1922 |           std::__introsort_loop(__cut, __last, __depth_limit, __comp);
       |           ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/canvas3d/face_renderer.o
+ build/obj/src/canvas3d/point_renderer.o
 In function 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<horizon::Canvas3D::load_models_thread(std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >)::FilenameItem*, vector<horizon::Canvas3D::load_models_thread(std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >)::FilenameItem> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<horizon::Canvas3D::load_models_thread(std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >)::<lambda(const auto:41&, const auto:42&)> >]',
     inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator<horizon::Canvas3D::load_models_thread(std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >)::FilenameItem*, vector<horizon::Canvas3D::load_models_thread(std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >)::FilenameItem> >; _Compare = horizon::Canvas3D::load_models_thread(std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >)::<lambda(const auto:41&, const auto:42&)>]' at /usr/include/c++/12/bits/stl_algo.h:4853:18,
     inlined from 'void horizon::Canvas3D::load_models_thread(std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >)' at src/canvas3d/canvas3d.cpp:585:14:
@@ -54663,9 +54700,7 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/canvas3d/point_renderer.o
  build/obj/src/canvas3d/background_renderer.o
- build/obj/src/imp/header_button.o
 In file included from src/canvas/canvas_patch.hpp:2,
                  from src/canvas3d/canvas_mesh.hpp:2,
                  from src/canvas3d/canvas3d_base.hpp:4,
@@ -54674,6 +54709,8 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
+ build/obj/src/imp/header_button.o
+ build/obj/src/preferences/preferences.o
 In file included from src/canvas/canvas_patch.hpp:2,
                  from src/canvas3d/canvas_mesh.hpp:2,
                  from src/canvas3d/canvas3d_base.hpp:4,
@@ -54682,15 +54719,14 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/preferences/preferences.o
  build/obj/src/canvas/canvas_pads.o
+ build/obj/src/util/window_state_store.o
 In file included from src/canvas/canvas_pads.hpp:2,
                  from src/canvas/canvas_pads.cpp:1:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/util/window_state_store.o
 In file included from /usr/include/c++/12/vector:70,
                  from src/common/common.hpp:3,
                  from src/canvas/canvas.hpp:2:
@@ -54712,13 +54748,15 @@
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/widgets/board_display_options.o
  build/obj/src/widgets/log_window.o
+ build/obj/src/widgets/log_view.o
 In file included from src/widgets/board_display_options.hpp:4,
                  from src/widgets/board_display_options.cpp:1:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/widgets/log_view.o
+ build/obj/src/logger/log_dispatcher.o
+ build/obj/src/util/selection_util.o
 In file included from /usr/include/c++/12/map:60,
                  from src/common/lut.hpp:3,
                  from src/common/common.hpp:8,
@@ -54729,6 +54767,8 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/util/pool_completion.o
+ build/obj/src/widgets/unplaced_box.o
 In file included from /usr/include/c++/12/map:60,
                  from /usr/include/glibmm-2.4/glibmm/variant.h:32,
                  from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:23,
@@ -54740,20 +54780,16 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/logger/log_dispatcher.o
- build/obj/src/util/selection_util.o
- build/obj/src/util/pool_completion.o
- build/obj/src/widgets/unplaced_box.o
  build/obj/src/widgets/tag_entry.o
  build/obj/src/widgets/layer_help_box.o
  build/obj/src/preferences/preferences_util.o
+ build/obj/src/preferences/preferences_provider.o
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/preferences/preferences_util.cpp:3:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/preferences/preferences_provider.o
  build/obj/src/widgets/spin_button_angle.o
  build/obj/src/util/exception_util.o
  build/obj/src/util/status_dispatcher.o
@@ -54763,6 +54799,7 @@
  build/obj/src/util/kicad_package_parser.o
  build/obj/src/widgets/pool_browser_button.o
  build/obj/src/widgets/pool_browser_parametric.o
+ build/obj/src/util/stock_info_provider.o
 In file included from /usr/include/c++/12/vector:70,
                  from src/common/common.hpp:3,
                  from src/util/kicad_package_parser.hpp:2,
@@ -54800,25 +54837,20 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/util/stock_info_provider.o
  build/obj/src/util/stock_info_provider_partinfo.o
  build/obj/src/util/stock_info_provider_digikey.o
  build/obj/src/util/http_client.o
+ build/obj/src/widgets/column_chooser.o
 In file included from /usr/include/c++/12/map:60,
-                 from /usr/include/glibmm-2.4/glibmm/variant.h:32,
-                 from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:23,
-                 from /usr/include/glibmm-2.4/glibmm/arrayhandle.h:21,
-                 from /usr/include/glibmm-2.4/glibmm.h:107,
-                 from /usr/include/gtkmm-3.0/gtkmm.h:100,
-                 from src/util/stock_info_provider.hpp:2,
-                 from src/util/stock_info_provider_partinfo.hpp:2,
-                 from src/util/stock_info_provider_partinfo.cpp:1:
-/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const horizon::UUID&, const nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, nlohmann::basic_json<> > >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, nlohmann::basic_json<> > >]':
-/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, nlohmann::basic_json<> >, std::_Select1st<std::pair<const horizon::UUID, nlohmann::basic_json<> > >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
- 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                 from 3rd_party/nlohmann/detail/conversions/from_json.hpp:7,
+                 from 3rd_party/nlohmann/adl_serializer.hpp:6,
+                 from 3rd_party/nlohmann/json.hpp:51,
+                 from src/util/http_client.hpp:2,
+                 from src/util/http_client.cpp:1:
 /usr/include/c++/12/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>, std::tuple<>}; _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
+ 2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In file included from /usr/include/c++/12/map:61:
 /usr/include/c++/12/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
 /usr/include/c++/12/bits/stl_map.h:511:44: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
@@ -54847,24 +54879,21 @@
       |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   513 |                                             std::tuple<>());
       |                                             ~~~~~~~~~~~~~~~
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {const horizon::UUID&, const nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >&}; _Key = horizon::UUID; _Tp = nlohmann::basic_json<>; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, nlohmann::basic_json<> > >]',
-    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Val>, std::_Select1st<std::pair<const _Key, _Val> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Val> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {const horizon::UUID&, const nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >&}; _Key = horizon::UUID; _Tp = nlohmann::basic_json<>; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, nlohmann::basic_json<> > >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
-    inlined from 'std::map<horizon::UUID, nlohmann::basic_json<> > horizon::PartInfoCacheManager::query(const std::map<horizon::UUID, std::pair<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >&)' at src/util/stock_info_provider_partinfo.cpp:92:26:
-/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, nlohmann::basic_json<> >::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, nlohmann::basic_json<> >, std::_Select1st<std::pair<const horizon::UUID, nlohmann::basic_json<> > >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, nlohmann::basic_json<> > > >::const_iterator'} changed in GCC 7.1
-  638 |           return _M_t._M_emplace_hint_unique(__pos,
-      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-  639 |                                              std::forward<_Args>(__args)...);
-      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In file included from /usr/include/c++/12/map:60,
-                 from 3rd_party/nlohmann/detail/conversions/from_json.hpp:7,
-                 from 3rd_party/nlohmann/adl_serializer.hpp:6,
-                 from 3rd_party/nlohmann/json.hpp:51,
-                 from src/util/http_client.hpp:2,
-                 from src/util/http_client.cpp:1:
-/usr/include/c++/12/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>, std::tuple<>}; _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
-/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
+                 from /usr/include/glibmm-2.4/glibmm/variant.h:32,
+                 from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:23,
+                 from /usr/include/glibmm-2.4/glibmm/arrayhandle.h:21,
+                 from /usr/include/glibmm-2.4/glibmm.h:107,
+                 from /usr/include/gtkmm-3.0/gtkmm.h:100,
+                 from src/util/stock_info_provider.hpp:2,
+                 from src/util/stock_info_provider_partinfo.hpp:2,
+                 from src/util/stock_info_provider_partinfo.cpp:1:
+/usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const horizon::UUID&, const nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, nlohmann::basic_json<> > >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, nlohmann::basic_json<> > >]':
+/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, nlohmann::basic_json<> >, std::_Select1st<std::pair<const horizon::UUID, nlohmann::basic_json<> > >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+/usr/include/c++/12/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>, std::tuple<>}; _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
+/usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
 In file included from /usr/include/c++/12/map:61:
 /usr/include/c++/12/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
 /usr/include/c++/12/bits/stl_map.h:511:44: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
@@ -54883,6 +54912,9 @@
       |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   513 |                                             std::tuple<>());
       |                                             ~~~~~~~~~~~~~~~
+ build/obj/src/util/csv_util.o
+ build/obj/src/imp/pnp_export_window.o
+ build/obj/src/imp/airwire_filter_window.o
 In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]',
     inlined from 'bool nlohmann::detail::json_sax_dom_parser<BasicJsonType>::key(string_t&) [with BasicJsonType = nlohmann::basic_json<>]' at 3rd_party/nlohmann/detail/input/json_sax.hpp:236:72,
     inlined from 'bool nlohmann::detail::parser<BasicJsonType, InputAdapterType>::sax_parse_internal(SAX*) [with SAX = nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<> >; BasicJsonType = nlohmann::basic_json<>; InputAdapterType = nlohmann::detail::iterator_input_adapter<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > >]' at 3rd_party/nlohmann/detail/input/parser.hpp:410:21:
@@ -54893,9 +54925,14 @@
       |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   513 |                                             std::tuple<>());
       |                                             ~~~~~~~~~~~~~~~
- build/obj/src/widgets/column_chooser.o
- build/obj/src/util/csv_util.o
- build/obj/src/imp/pnp_export_window.o
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {const horizon::UUID&, const nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >&}; _Key = horizon::UUID; _Tp = nlohmann::basic_json<>; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, nlohmann::basic_json<> > >]',
+    inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Val>, std::_Select1st<std::pair<const _Key, _Val> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Val> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {const horizon::UUID&, const nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >&}; _Key = horizon::UUID; _Tp = nlohmann::basic_json<>; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, nlohmann::basic_json<> > >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
+    inlined from 'std::map<horizon::UUID, nlohmann::basic_json<> > horizon::PartInfoCacheManager::query(const std::map<horizon::UUID, std::pair<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >&)' at src/util/stock_info_provider_partinfo.cpp:92:26:
+/usr/include/c++/12/bits/stl_map.h:638:45: note: parameter passing for argument of type 'std::map<horizon::UUID, nlohmann::basic_json<> >::const_iterator' {aka 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, nlohmann::basic_json<> >, std::_Select1st<std::pair<const horizon::UUID, nlohmann::basic_json<> > >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, nlohmann::basic_json<> > > >::const_iterator'} changed in GCC 7.1
+  638 |           return _M_t._M_emplace_hint_unique(__pos,
+      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+  639 |                                              std::forward<_Args>(__args)...);
+      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In file included from /usr/include/c++/12/map:60,
                  from /usr/include/glibmm-2.4/glibmm/variant.h:32,
                  from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:23,
@@ -54931,7 +54968,7 @@
       |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   513 |                                             std::tuple<>());
       |                                             ~~~~~~~~~~~~~~~
- build/obj/src/imp/airwire_filter_window.o
+ build/obj/src/imp/search/searcher.o
 In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]',
     inlined from 'bool nlohmann::detail::json_sax_dom_parser<BasicJsonType>::key(string_t&) [with BasicJsonType = nlohmann::basic_json<>]' at 3rd_party/nlohmann/detail/input/json_sax.hpp:236:72,
     inlined from 'bool nlohmann::detail::parser<BasicJsonType, InputAdapterType>::sax_parse_internal(SAX*) [with SAX = nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<> >; BasicJsonType = nlohmann::basic_json<>; InputAdapterType = nlohmann::detail::iterator_input_adapter<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > >]' at 3rd_party/nlohmann/detail/input/parser.hpp:410:21:
@@ -54942,6 +54979,7 @@
       |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   513 |                                             std::tuple<>());
       |                                             ~~~~~~~~~~~~~~~
+ build/obj/src/imp/search/searcher_symbol.o
 In file included from /usr/include/c++/12/bits/stl_algo.h:60,
                  from /usr/include/c++/12/functional:64,
                  from /usr/include/sigc++-2.0/sigc++/reference_wrapper.h:22,
@@ -55031,9 +55069,6 @@
 /usr/include/c++/12/bits/stl_algo.h:1854:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::PnPRow*, std::vector<horizon::PnPRow> >' changed in GCC 7.1
  1854 |         std::__insertion_sort(__first, __last, __comp);
       |         ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/imp/search/searcher.o
- build/obj/src/imp/search/searcher_symbol.o
- build/obj/src/imp/search/searcher_schematic.o
 In file included from /usr/include/c++/12/map:60,
                  from /usr/include/glibmm-2.4/glibmm/variant.h:32,
                  from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:23,
@@ -55046,9 +55081,11 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/imp/search/searcher_schematic.o
  build/obj/src/imp/search/searcher_package.o
  build/obj/src/imp/search/searcher_board.o
  build/obj/src/util/clipper_util.o
+ build/obj/src/widgets/action_button.o
 In file included from /usr/include/c++/12/vector:70,
                  from 3rd_party/clipper/clipper.hpp:52,
                  from src/util/clipper_util.hpp:2,
@@ -55065,19 +55102,18 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<ClipperLib::IntPoint*, std::vector<ClipperLib::IntPoint> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/widgets/action_button.o
  build/obj/src/util/picture_util.o
  build/obj/src/imp/grid_controller.o
  build/obj/src/imp/parts_window.o
  build/obj/src/util/zmq_helper.o
+ build/obj/src/widgets/help_button.o
+ build/obj/src/util/keep_slope_util.o
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/imp/grid_controller.cpp:2:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/widgets/help_button.o
- build/obj/src/util/keep_slope_util.o
  build/obj/src/imp/view_angle_window.o
  build/obj/src/imp/action_icon.o
  build/obj/src/util/automatic_prefs.o
@@ -55090,6 +55126,7 @@
  build/obj/src/widgets/multi_net_button.o
  build/obj/src/widgets/multi_net_selector.o
  build/obj/src/widgets/multi_item_selector.o
+ build/obj/src/widgets/multi_item_button.o
 In file included from /usr/include/c++/12/map:60,
                  from /usr/include/glibmm-2.4/glibmm/variant.h:32,
                  from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:23,
@@ -55113,7 +55150,6 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/widgets/multi_item_button.o
  build/obj/src/widgets/multi_component_button.o
  build/obj/src/widgets/multi_component_selector.o
  build/obj/src/widgets/multi_pad_button.o
@@ -55149,6 +55185,13 @@
  build/obj/src/pool-prj-mgr/pool-prj-mgr-app.o
  build/obj/src/pool-prj-mgr/pool-prj-mgr-app_win.o
  build/obj/src/pool-prj-mgr/pool-prj-mgr-process.o
+ build/obj/src/pool-prj-mgr/pool-mgr/pool_notebook.o
+In file included from src/pool-prj-mgr/pool-mgr/pool_notebook.cpp:1:
+src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
+src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
+  184 |     {
+      |     ^
+ build/obj/src/pool-prj-mgr/pool-mgr/pool_notebook_units.o
 In file included from /usr/include/c++/12/map:60,
                  from /usr/include/glibmm-2.4/glibmm/variant.h:32,
                  from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:23,
@@ -55161,14 +55204,9 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/pool-prj-mgr/pool-mgr/pool_notebook.o
-In file included from src/pool-prj-mgr/pool-mgr/pool_notebook.cpp:1:
-src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
-src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
-  184 |     {
-      |     ^
- build/obj/src/pool-prj-mgr/pool-mgr/pool_notebook_units.o
  build/obj/src/pool-prj-mgr/pool-mgr/pool_notebook_symbols.o
+ build/obj/src/pool-prj-mgr/pool-mgr/pool_notebook_entities.o
+ build/obj/src/pool-prj-mgr/pool-mgr/pool_notebook_padstacks.o
 In file included from /usr/include/c++/12/map:60,
                  from /usr/include/glibmm-2.4/glibmm/variant.h:32,
                  from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:23,
@@ -55185,7 +55223,7 @@
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2457 |       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/pool-prj-mgr/pool-mgr/pool_notebook_entities.o
+ build/obj/src/pool-prj-mgr/pool-mgr/pool_notebook_packages.o
 In file included from /usr/include/c++/12/map:61:
 In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]',
     inlined from 'bool nlohmann::detail::json_sax_dom_callback_parser<BasicJsonType>::key(string_t&) [with BasicJsonType = nlohmann::basic_json<>]' at 3rd_party/nlohmann/detail/input/json_sax.hpp:425:76:
@@ -55204,8 +55242,6 @@
       |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   513 |                                             std::tuple<>());
       |                                             ~~~~~~~~~~~~~~~
- build/obj/src/pool-prj-mgr/pool-mgr/pool_notebook_padstacks.o
- build/obj/src/pool-prj-mgr/pool-mgr/pool_notebook_packages.o
  build/obj/src/pool-prj-mgr/pool-mgr/pool_notebook_parts.o
  build/obj/src/pool-prj-mgr/pool-mgr/pool_notebook_frames.o
  build/obj/src/pool-prj-mgr/pool-mgr/pool_notebook_decals.o
@@ -55219,15 +55255,18 @@
  build/obj/src/pool-prj-mgr/pool-mgr/part_wizard/part_wizard.o
  build/obj/src/pool-prj-mgr/pool-mgr/part_wizard/pad_editor.o
  build/obj/src/pool-prj-mgr/pool-mgr/part_wizard/gate_editor.o
+ build/obj/src/pool-prj-mgr/pool-mgr/duplicate/duplicate_unit.o
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/pool-prj-mgr/pool-mgr/part_wizard/part_wizard.cpp:17:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/pool-prj-mgr/pool-mgr/duplicate/duplicate_unit.o
  build/obj/src/pool-prj-mgr/pool-mgr/duplicate/duplicate_entity.o
  build/obj/src/pool-prj-mgr/pool-mgr/duplicate/duplicate_part.o
+ build/obj/src/pool-prj-mgr/pool-mgr/duplicate/duplicate_window.o
+ build/obj/src/pool-prj-mgr/pool-mgr/pool_remote_box.o
+ build/obj/src/pool-prj-mgr/pool-mgr/pool_settings_box.o
 In file included from /usr/include/c++/12/map:60,
                  from /usr/include/glibmm-2.4/glibmm/variant.h:32,
                  from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:23,
@@ -55258,19 +55297,6 @@
       |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   513 |                                             std::tuple<>());
       |                                             ~~~~~~~~~~~~~~~
-In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]',
-    inlined from 'bool nlohmann::detail::json_sax_dom_parser<BasicJsonType>::key(string_t&) [with BasicJsonType = nlohmann::basic_json<>]' at 3rd_party/nlohmann/detail/input/json_sax.hpp:236:72,
-    inlined from 'bool nlohmann::detail::parser<BasicJsonType, InputAdapterType>::sax_parse_internal(SAX*) [with SAX = nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<> >; BasicJsonType = nlohmann::basic_json<>; InputAdapterType = nlohmann::detail::input_stream_adapter]' at 3rd_party/nlohmann/detail/input/parser.hpp:410:21:
-/usr/include/c++/12/bits/stl_map.h:511:44: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
-  511 |           __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
-      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  512 |                                             std::tuple<const key_type&>(__k),
-      |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  513 |                                             std::tuple<>());
-      |                                             ~~~~~~~~~~~~~~~
- build/obj/src/pool-prj-mgr/pool-mgr/duplicate/duplicate_window.o
- build/obj/src/pool-prj-mgr/pool-mgr/pool_remote_box.o
- build/obj/src/pool-prj-mgr/pool-mgr/pool_settings_box.o
 In file included from /usr/include/c++/12/map:60,
                  from /usr/include/glibmm-2.4/glibmm/variant.h:32,
                  from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:23,
@@ -55283,6 +55309,16 @@
 /usr/include/c++/12/bits/stl_tree.h:2209:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
  2209 |     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]',
+    inlined from 'bool nlohmann::detail::json_sax_dom_parser<BasicJsonType>::key(string_t&) [with BasicJsonType = nlohmann::basic_json<>]' at 3rd_party/nlohmann/detail/input/json_sax.hpp:236:72,
+    inlined from 'bool nlohmann::detail::parser<BasicJsonType, InputAdapterType>::sax_parse_internal(SAX*) [with SAX = nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<> >; BasicJsonType = nlohmann::basic_json<>; InputAdapterType = nlohmann::detail::input_stream_adapter]' at 3rd_party/nlohmann/detail/input/parser.hpp:410:21:
+/usr/include/c++/12/bits/stl_map.h:511:44: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
+  511 |           __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
+      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  512 |                                             std::tuple<const key_type&>(__k),
+      |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  513 |                                             std::tuple<>());
+      |                                             ~~~~~~~~~~~~~~~
  build/obj/src/pool-prj-mgr/pool-mgr/pool_cache_box.o
  build/obj/src/pool-prj-mgr/pool_update_error_dialog.o
  build/obj/src/pool-prj-mgr/pool-mgr/pool_git_box.o
@@ -55308,6 +55344,7 @@
  build/obj/src/widgets/part_preview.o
  build/obj/src/widgets/entity_preview.o
  build/obj/src/widgets/preview_base.o
+ build/obj/src/widgets/unit_preview.o
 In file included from src/widgets/part_preview.cpp:4:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
@@ -55318,21 +55355,20 @@
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/widgets/unit_preview.o
  build/obj/src/widgets/symbol_preview.o
  build/obj/src/pool/pool_cache_status.o
+ build/obj/src/pool-prj-mgr/prj-mgr/prj-mgr_views.o
 In file included from src/widgets/unit_preview.cpp:3:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
+ build/obj/src/pool-prj-mgr/prj-mgr/part_browser/part_browser_window.o
 In file included from src/widgets/symbol_preview.cpp:4:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/pool-prj-mgr/prj-mgr/prj-mgr_views.o
- build/obj/src/pool-prj-mgr/prj-mgr/part_browser/part_browser_window.o
  build/obj/src/pool-prj-mgr/close_utils.o
 In file included from /usr/include/c++/12/map:60,
                  from /usr/include/glibmm-2.4/glibmm/variant.h:32,
@@ -55366,6 +55402,10 @@
  build/obj/src/pool-prj-mgr/preferences/preferences_window_stock_info_digikey.o
  build/obj/src/pool-prj-mgr/preferences/digikey_auth_window.o
  build/obj/src/pool-prj-mgr/preferences/preferences_window_misc.o
+ build/obj/src/pool-prj-mgr/preferences/preferences_row.o
+ build/obj/src/pool-prj-mgr/preferences/preferences_window_spacenav.o
+ build/obj/src/pool-prj-mgr/preferences/preferences_window_input_devices.o
+ build/obj/src/pool-prj-mgr/preferences/action_editor.o
 In file included from /usr/include/c++/12/map:60,
                  from /usr/include/glibmm-2.4/glibmm/variant.h:32,
                  from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:23,
@@ -55396,8 +55436,6 @@
       |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   513 |                                             std::tuple<>());
       |                                             ~~~~~~~~~~~~~~~
- build/obj/src/pool-prj-mgr/preferences/preferences_row.o
- build/obj/src/pool-prj-mgr/preferences/preferences_window_spacenav.o
 In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]',
     inlined from 'bool nlohmann::detail::json_sax_dom_parser<BasicJsonType>::key(string_t&) [with BasicJsonType = nlohmann::basic_json<>]' at 3rd_party/nlohmann/detail/input/json_sax.hpp:236:72,
     inlined from 'bool nlohmann::detail::parser<BasicJsonType, InputAdapterType>::sax_parse_internal(SAX*) [with SAX = nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<> >; BasicJsonType = nlohmann::basic_json<>; InputAdapterType = nlohmann::detail::iterator_input_adapter<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > >]' at 3rd_party/nlohmann/detail/input/parser.hpp:410:21:
@@ -55408,29 +55446,29 @@
       |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   513 |                                             std::tuple<>());
       |                                             ~~~~~~~~~~~~~~~
- build/obj/src/pool-prj-mgr/preferences/preferences_window_input_devices.o
- build/obj/src/pool-prj-mgr/preferences/action_editor.o
  build/obj/src/widgets/unit_info_box.o
  build/obj/src/widgets/entity_info_box.o
  build/obj/src/widgets/padstack_preview.o
  build/obj/src/widgets/package_info_box.o
+ build/obj/src/pool-prj-mgr/welcome_window.o
 In file included from src/widgets/padstack_preview.cpp:4:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
- build/obj/src/pool-prj-mgr/welcome_window.o
  build/obj/src/pool-prj-mgr/output_window.o
  build/obj/src/pool-prj-mgr/autosave_recovery_dialog.o
  build/obj/src/pool-prj-mgr/pool-mgr/kicad_symbol_import_wizard/kicad_symbol_import_wizard.o
  build/obj/src/pool-prj-mgr/pool-mgr/kicad_symbol_import_wizard/gate_editor.o
  build/obj/src/util/kicad_lib_parser.o
+ build/obj/src/widgets/capture_dialog.o
 In file included from src/canvas/canvas_gl.hpp:2,
                  from src/pool-prj-mgr/pool-mgr/kicad_symbol_import_wizard/kicad_symbol_import_wizard.cpp:12:
 src/canvas/canvas.hpp: In member function 'virtual std::pair<horizon::Coord<float>, horizon::Coord<float> > horizon::Canvas::measure_bitmap_text(const std::string&) const':
 src/canvas/canvas.hpp:184:5: note: parameter passing for argument of type 'std::pair<horizon::Coord<float>, horizon::Coord<float> >' when C++17 is enabled changed to match C++14 in GCC 10.1
   184 |     {
       |     ^
+ build/obj/src/checks/check_util.o
 In file included from /usr/include/c++/12/vector:70,
                  from src/util/kicad_lib_parser.hpp:4,
                  from src/util/kicad_lib_parser.cpp:1:
@@ -55450,6 +55488,7 @@
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Junction>, std::_Select1st<std::pair<const horizon::UUID, horizon::Junction> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Junction> > >::const_iterator' changed in GCC 7.1
 /usr/include/c++/12/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Val = std::pair<const horizon::UUID, horizon::Line>; _KeyOfValue = std::_Select1st<std::pair<const horizon::UUID, horizon::Line> >; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::Line> >]':
 /usr/include/c++/12/bits/stl_tree.h:2457:7: note: parameter passing for argument of type 'std::_Rb_tree<horizon::UUID, std::pair<const horizon::UUID, horizon::Line>, std::_Select1st<std::pair<const horizon::UUID, horizon::Line> >, std::less<horizon::UUID>, std::allocator<std::pair<const horizon::UUID, horizon::Line> > >::const_iterator' changed in GCC 7.1
+ build/obj/src/checks/check_entity.o
 In file included from /usr/include/c++/12/map:61:
 In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::SymbolPin; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SymbolPin> >]',
     inlined from 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {horizon::UUID&, horizon::UUID&}; _Key = horizon::UUID; _Tp = horizon::SymbolPin; _Compare = std::less<horizon::UUID>; _Alloc = std::allocator<std::pair<const horizon::UUID, horizon::SymbolPin> >]' at /usr/include/c++/12/bits/stl_map.h:599:22,
@@ -55515,7 +55554,7 @@
       |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
   639 |                                              std::forward<_Args>(__args)...);
       |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/widgets/capture_dialog.o
+ build/obj/src/checks/check_unit.o
 In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {horizon::Coord<long long int>}; _Tp = horizon::Coord<long long int>; _Alloc = std::allocator<horizon::Coord<long long int> >]',
     inlined from 'void std::vector<_Tp, _Alloc>::push_back(value_type&&) [with _Tp = horizon::Coord<long long int>; _Alloc = std::allocator<horizon::Coord<long long int> >]' at /usr/include/c++/12/bits/stl_vector.h:1294:21,
     inlined from 'std::__cxx11::list<horizon::KiCadSymbol> horizon::parse_kicad_library_old(const std::string&)' at src/util/kicad_lib_parser.cpp:186:49:
@@ -55529,9 +55568,6 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::Coord<long long int>*, std::vector<horizon::Coord<long long int> > >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/checks/check_util.o
- build/obj/src/checks/check_entity.o
- build/obj/src/checks/check_unit.o
  build/obj/src/checks/check_part.o
  build/obj/src/checks/check_item.o
  build/obj/src/pool-prj-mgr/pool-mgr/check_column.o
@@ -55541,6 +55577,9 @@
  build/obj/src/pool-prj-mgr/pools_window/pools_window.o
  build/obj/src/pool-prj-mgr/pools_window/pools_window_available.o
  build/obj/src/pool-prj-mgr/pools_window/pool_index.o
+ build/obj/src/pool-prj-mgr/pools_window/pool_status_provider.o
+ build/obj/src/pool-prj-mgr/pools_window/pool_merge_box.o
+ build/obj/src/pool-prj-mgr/pools_window/pool_download_window.o
 In file included from /usr/include/c++/12/map:60,
                  from /usr/include/glibmm-2.4/glibmm/variant.h:32,
                  from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:23,
@@ -55571,7 +55610,6 @@
       |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   513 |                                             std::tuple<>());
       |                                             ~~~~~~~~~~~~~~~
- build/obj/src/pool-prj-mgr/pools_window/pool_status_provider.o
 In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]',
     inlined from 'bool nlohmann::detail::json_sax_dom_parser<BasicJsonType>::key(string_t&) [with BasicJsonType = nlohmann::basic_json<>]' at 3rd_party/nlohmann/detail/input/json_sax.hpp:236:72,
     inlined from 'bool nlohmann::detail::parser<BasicJsonType, InputAdapterType>::sax_parse_internal(SAX*) [with SAX = nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<> >; BasicJsonType = nlohmann::basic_json<>; InputAdapterType = nlohmann::detail::iterator_input_adapter<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > >]' at 3rd_party/nlohmann/detail/input/parser.hpp:410:21:
@@ -55582,8 +55620,6 @@
       |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   513 |                                             std::tuple<>());
       |                                             ~~~~~~~~~~~~~~~
- build/obj/src/pool-prj-mgr/pools_window/pool_merge_box.o
- build/obj/src/pool-prj-mgr/pools_window/pool_download_window.o
 In file included from /usr/include/c++/12/vector:70,
                  from src/common/common.hpp:3,
                  from src/pool-prj-mgr/pools_window/pool_status_provider.hpp:4,
@@ -55592,25 +55628,7 @@
 /usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::PoolStatusPoolManager::ItemInfo>::iterator' changed in GCC 7.1
   439 |       vector<_Tp, _Alloc>::
       |       ^~~~~~~~~~~~~~~~~~~
-In file included from /usr/include/c++/12/vector:70,
-                 from /usr/include/glibmm-2.4/glibmm/value.h:25,
-                 from /usr/include/glibmm-2.4/glibmm/error.h:22,
-                 from /usr/include/glibmm-2.4/glibmm/thread.h:48,
-                 from /usr/include/glibmm-2.4/glibmm.h:103,
-                 from /usr/include/gtkmm-3.0/gtkmm.h:100,
-                 from src/pool-prj-mgr/pools_window/pool_merge_box.hpp:2,
-                 from src/pool-prj-mgr/pools_window/pool_merge_box.cpp:1:
-/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {}; _Tp = horizon::PoolStatusPoolManager::ItemInfo; _Alloc = std::allocator<horizon::PoolStatusPoolManager::ItemInfo>]':
-/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::PoolStatusPoolManager::ItemInfo>::iterator' changed in GCC 7.1
-  439 |       vector<_Tp, _Alloc>::
-      |       ^~~~~~~~~~~~~~~~~~~
-In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {}; _Tp = horizon::PoolStatusPoolManager::ItemInfo; _Alloc = std::allocator<horizon::PoolStatusPoolManager::ItemInfo>]',
-    inlined from 'horizon::PoolMergeBox2::PoolMergeBox2(Gtk::Box::BaseObjectType*, const Glib::RefPtr<Gtk::Builder>&, horizon::PoolStatusProviderPoolManager&)::<lambda()>' at src/pool-prj-mgr/pools_window/pool_merge_box.cpp:220:34,
-    inlined from 'sigc::adaptor_functor<T_functor>::result_type sigc::adaptor_functor<T_functor>::operator()() const [with T_functor = horizon::PoolMergeBox2::PoolMergeBox2(Gtk::Box::BaseObjectType*, const Glib::RefPtr<Gtk::Builder>&, horizon::PoolStatusProviderPoolManager&)::<lambda()>]' at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:256:20,
-    inlined from 'static T_return sigc::internal::slot_call0<T_functor, T_return>::call_it(sigc::internal::slot_rep*) [with T_functor = horizon::PoolMergeBox2::PoolMergeBox2(Gtk::Box::BaseObjectType*, const Glib::RefPtr<Gtk::Builder>&, horizon::PoolStatusProviderPoolManager&)::<lambda()>; T_return = void]' at /usr/include/sigc++-2.0/sigc++/functors/slot.h:136:35:
-/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::PoolStatusPoolManager::ItemInfo*, std::vector<horizon::PoolStatusPoolManager::ItemInfo> >' changed in GCC 7.1
-  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
-      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ build/obj/src/pool-prj-mgr/pool-mgr/move_window.o
 In file included from /usr/include/c++/12/vector:63:
 /usr/include/c++/12/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator<const horizon::PoolStatusPoolManager::ItemInfo*, vector<horizon::PoolStatusPoolManager::ItemInfo> >; _ForwardIterator = horizon::PoolStatusPoolManager::ItemInfo*]':
 /usr/include/c++/12/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<const horizon::PoolStatusPoolManager::ItemInfo*, std::vector<horizon::PoolStatusPoolManager::ItemInfo> >' changed in GCC 7.1
@@ -55640,7 +55658,25 @@
 /usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::PoolStatusPoolManager::ItemInfo*, std::vector<horizon::PoolStatusPoolManager::ItemInfo> >' changed in GCC 7.1
   123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build/obj/src/pool-prj-mgr/pool-mgr/move_window.o
+In file included from /usr/include/c++/12/vector:70,
+                 from /usr/include/glibmm-2.4/glibmm/value.h:25,
+                 from /usr/include/glibmm-2.4/glibmm/error.h:22,
+                 from /usr/include/glibmm-2.4/glibmm/thread.h:48,
+                 from /usr/include/glibmm-2.4/glibmm.h:103,
+                 from /usr/include/gtkmm-3.0/gtkmm.h:100,
+                 from src/pool-prj-mgr/pools_window/pool_merge_box.hpp:2,
+                 from src/pool-prj-mgr/pools_window/pool_merge_box.cpp:1:
+/usr/include/c++/12/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {}; _Tp = horizon::PoolStatusPoolManager::ItemInfo; _Alloc = std::allocator<horizon::PoolStatusPoolManager::ItemInfo>]':
+/usr/include/c++/12/bits/vector.tcc:439:7: note: parameter passing for argument of type 'std::vector<horizon::PoolStatusPoolManager::ItemInfo>::iterator' changed in GCC 7.1
+  439 |       vector<_Tp, _Alloc>::
+      |       ^~~~~~~~~~~~~~~~~~~
+In member function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {}; _Tp = horizon::PoolStatusPoolManager::ItemInfo; _Alloc = std::allocator<horizon::PoolStatusPoolManager::ItemInfo>]',
+    inlined from 'horizon::PoolMergeBox2::PoolMergeBox2(Gtk::Box::BaseObjectType*, const Glib::RefPtr<Gtk::Builder>&, horizon::PoolStatusProviderPoolManager&)::<lambda()>' at src/pool-prj-mgr/pools_window/pool_merge_box.cpp:220:34,
+    inlined from 'sigc::adaptor_functor<T_functor>::result_type sigc::adaptor_functor<T_functor>::operator()() const [with T_functor = horizon::PoolMergeBox2::PoolMergeBox2(Gtk::Box::BaseObjectType*, const Glib::RefPtr<Gtk::Builder>&, horizon::PoolStatusProviderPoolManager&)::<lambda()>]' at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:256:20,
+    inlined from 'static T_return sigc::internal::slot_call0<T_functor, T_return>::call_it(sigc::internal::slot_rep*) [with T_functor = horizon::PoolMergeBox2::PoolMergeBox2(Gtk::Box::BaseObjectType*, const Glib::RefPtr<Gtk::Builder>&, horizon::PoolStatusProviderPoolManager&)::<lambda()>; T_return = void]' at /usr/include/sigc++-2.0/sigc++/functors/slot.h:136:35:
+/usr/include/c++/12/bits/vector.tcc:123:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<horizon::PoolStatusPoolManager::ItemInfo*, std::vector<horizon::PoolStatusPoolManager::ItemInfo> >' changed in GCC 7.1
+  123 |           _M_realloc_insert(end(), std::forward<_Args>(__args)...);
+      |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/obj/src/util/pool_check_schema_update.o
  build/obj/src/widgets/sqlite_shell.o
  build/obj/src/util/sort_helper.o
@@ -55649,7 +55685,7 @@
 make[2]: Leaving directory '/build/reproducible-path/horizon-eda-2.4.0'
 make[1]: Leaving directory '/build/reproducible-path/horizon-eda-2.4.0'
    dh_auto_test
-	make -j3 test
+	make -j4 test
 make[1]: Entering directory '/build/reproducible-path/horizon-eda-2.4.0'
  build/obj/3rd_party/catch2/catch_amalgamated.o
  build/obj/src/tests/tool_lut.o
@@ -55888,7 +55924,7 @@
       |           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  build/horizon-tests
 build/horizon-tests
-Randomness seeded to: 1630784521
+Randomness seeded to: 2512402776
 ===============================================================================
 All tests passed (554 assertions in 1 test case)
 
@@ -55902,7 +55938,7 @@
 make[1]: Entering directory '/build/reproducible-path/horizon-eda-2.4.0'
 dh_auto_install
 	install -m0755 -d debian/horizon-eda
-	make -j3 install DESTDIR=/build/reproducible-path/horizon-eda-2.4.0/debian/horizon-eda AM_UPDATE_INFO_DIR=no
+	make -j4 install DESTDIR=/build/reproducible-path/horizon-eda-2.4.0/debian/horizon-eda AM_UPDATE_INFO_DIR=no
 make[2]: Entering directory '/build/reproducible-path/horizon-eda-2.4.0'
 mkdir -p /build/reproducible-path/horizon-eda-2.4.0/debian/horizon-eda/usr/bin/
 /usr/bin/install -m755 build/horizon-imp /build/reproducible-path/horizon-eda-2.4.0/debian/horizon-eda/usr/bin/
@@ -55930,10 +55966,10 @@
 D: dh_python3 dh_python3:182: supported Python versions: 3.11 (default=3.11)
 D: dh_python3 debhelper:183: source=horizon-eda, binary packages=['horizon-eda']
 D: dh_python3 dh_python3:204: processing package horizon-eda...
-D: dh_python3 tools:232: invoking: /usr/bin/python3 -c 'import sysconfig as s;print("__SEP__".join(i or "" for i in s.get_config_vars("SOABI", "MULTIARCH", "INCLUDEPY", "LIBPL", "LDLIBRARY")))'
-I: dh_python3 fs:483: renaming horizon.so to horizon.cpython-311-arm-linux-gnueabihf.so
 D: dh_python3 tools:102: fix_shebang (debian/horizon-eda/usr/bin/horizon-imp): cannot parse binary file
 D: dh_python3 tools:102: fix_shebang (debian/horizon-eda/usr/bin/horizon-eda): cannot parse binary file
+D: dh_python3 tools:232: invoking: /usr/bin/python3 -c 'import sysconfig as s;print("__SEP__".join(i or "" for i in s.get_config_vars("SOABI", "MULTIARCH", "INCLUDEPY", "LIBPL", "LDLIBRARY")))'
+I: dh_python3 fs:483: renaming horizon.so to horizon.cpython-311-arm-linux-gnueabihf.so
 D: dh_python3 fs:400: package horizon-eda details = {'requires.txt': set(), 'egg-info': set(), 'dist-info': set(), 'nsp.txt': set(), 'shebangs': set(), 'public_vers': {Version('3')}, 'private_dirs': {}, 'compile': False, 'ext_vers': {Version('3.11')}, 'ext_no_version': set()}
 D: dh_python3 depends:117: generating dependencies for package horizon-eda
 D: dh_python3 depends:281: D={'python3 (<< 3.12)', 'python3 (>= 3.11~)'}; R=[]; S=[]; E=[], B=[]; RT=[]
@@ -55970,1321 +56006,1321 @@
    dh_link
    dh_strip_nondeterminism
 	Using 1669459544 as canonical time
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleShortedPads.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Path__Description.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1copy__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperMove.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1tail__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1IContext.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1adjacent__remove__if__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorPlane.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Model.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1counted__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolManageBuses.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structSHAPE__POLY__SET_1_1TRIANGULATED__POLYGON_1_1TRI.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MapPackageDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1KeySequenceDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1WelcomeWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1forward__range__tag.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BlocksBase_1_1BlockItemInfo.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Series__Pin__Mapping.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1ConsoleReporter.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1join__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1HeaderButton.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CanvasHole.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolFlipNetTie.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1iter__distance__compare__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ImpPackage_1_1ImportCanvas3D.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParametricEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Node.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Clara_1_1Opt.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1ApproxMatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Submodel.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1ReporterRegistry.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleSymbolChecks.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Detail_1_1is__range__impl.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParameterProgramPolygon.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1iter__transform__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1IResultCapture.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classClipperLibKiCad_1_1Clipper.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSEXPR_1_1INVALID__TYPE__EXCEPTION.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PlaceModelBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1drop__while__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1empty__view.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MyCheckButton.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LayerOptionsExpSilkscreen.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MiscPreferencesEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1LINE.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolAssignPart.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDisconnect.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1HTTP_1_1Client.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleExportBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1FootprintGeneratorQuad.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__json__ref.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolUpdatePool.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorVia.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Detail_1_1BoundManyLambda.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Board__Description.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1OpeningSpinner.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorString.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Detail_1_1EnumValuesRegistry.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDataWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/nav_f.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolStatusBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Tool	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RulesCheckCacheBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1common__view_3_01Rng_00_01true_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EntityEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1TestInvokerAsMethod.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Param.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorConnectivity.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1InToolKeySequencesPreferencesEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__iterator__traits.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorClearanceSilkscreenExposedCopper.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1take__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1delimit__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/bdwn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleMatchComponentEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Range.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/splitbar.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IDocumentBoard.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleClearanceCopperOther.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1any__view_3_01Ref_00_01Cat_00_01meta_1_1if__c_3_07Cat_01_6category_1_1forward_0862bcf35725124afac55b54a2679f9138.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1InToolActionEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BlocksBase_1_1BlockItem.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LocationEntry.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1ANGLE__CONSTRAINT__45.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1BinaryExpr.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceJunctionSchematic.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1has__from__json.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawLine.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Benchmark_1_1Detail_1_1is__related.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PadstackPreview.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE__POLY__SET.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structconcepts_1_1is__swappable__with.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1ref__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1replace__if__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1FabOutputWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleExportDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RawClient.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IDocumentFrame.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSwapGates.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ColorBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1PKG.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1MatcherUntypedBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1chunk__by__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1FilterGenerator.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1PNS__HORIZON__IFACE.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1FlagEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classDL__Writer.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ProjectPropertiesDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorAngle.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1reverse__view_3_01reverse__view_3_01Rng_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1DictSection.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MoveItemRow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1take__while__bind__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1IConfig.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structconcepts_1_1is__nothrow__swappable.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolManagerPool.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AboutDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Pin__Domain__EMI.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structDL__AttributeData.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1JOINT.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMapPin.png u	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/collage.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1TableSection.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1split__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1compressed__pair.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1coerce_3_01T_01_6_6_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structhorizon_1_1Png.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Rules.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Pool.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMapPin_1_1Settings.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structtuple__element_3_01N_00_01_1_1ranges_1_1common__tuple_3_01Ts_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1AREA__CONSTRAINT.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMeasure.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PreferencesRow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParameterProgram_1_1TokenString.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParameterEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorStringMultiline.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1unique__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1UUIDBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MSDTuningWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1chunk__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1IBISNode.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1FootprintGeneratorDual.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1experimental_1_1sized__generator.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Blocks.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1istream__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TextRenderer.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structmeta_1_1and__c.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structhorizon_1_1PngWrite.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1adjacent__remove__if__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ColumnChooser_1_1IAdapter.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1EndsWithMatcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1WhereUsedBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classDL__CreationAdapter.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SearcherBoard.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1for__each__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolProjectManagerApplication.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1output__adapter__protocol.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperEditPlane.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structstd_1_1iterator__traits_3_1_1ranges_1_1basic__iterator_3_01Cur_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible__object__type.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1StackupLayerEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ColumnChooser_1_1Adapter.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1End.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolAssignPart.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1span.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1view__interface.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolImportDXF.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Detail_1_1BoundValueRef_3_01std_1_1vector_3_01T_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PreferencesRow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1InputDevicesPreferencesEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EnterDatumScaleWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1output__stream__adapter.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1exclusive__scan__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AlignAndDistributeWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SymbolRules.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1const__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1has__from__json.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolsWindow.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1drop__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1drop__while__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AskDatumAngleDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1Features_1_1Feature.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolManagePowerNets.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Singleton.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1cpp20__filter__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RulePackageChecks.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolStatusPoolManager.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1ALGO__BASE.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceText_1_1Settings.png using File::StripNondeterminism::handlers::png
+	Normalizing 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolRotateArbitrary.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structDL__AttributeData.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1counted__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1SizeMatchesMatcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleHoleSize.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1basic__mixin.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GenerateSilkscreenWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1adjacent__filter__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BoardEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1ListSection.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1join__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleThermals.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1LINK__HOLDER.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CoreFrame.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SelectSheetDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Padstack.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1NoneMatchMatcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1KiCadSymbolImportWizard.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1IExceptionTranslatorRegistry.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolUpdateAllPlanes.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1is__indirectly__swappable.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1sliding__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1reference__wrapper.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolImportKiCadPackage.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolEditSymbolPinNames.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1Detail_1_1MatchAllOfGeneric.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RawClient.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyMetaLayers.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Config.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlacePicture.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1take__while__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SymbolRules.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SymbolPreview.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EditTextWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1sliding__view_3_01Rng_00_01sliding__view__detail_1_1cache_1_1first_01_4.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1ReporterBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1delimit__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1WhereUsedBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classClipperLibKiCad_1_1PolyNode.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1ITEM.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1semiregular__box.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CanvasODB.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TuningWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1iter__zip__with__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structmeta_1_1extension_1_1apply_3_01Fn_00_01integer__sequence_3_01T_00_01Is_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolGenerateSilkscreen.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1DP__MEANDER__PLACER.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolEditText.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowser.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1remove__if__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1json__reverse__iterator.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classranges_1_1box_3_01Element_00_01Tag_00_01detail_1_1box__compress_1_1ebo_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawDimension_1_1Settings.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IDocumentBlockSymbol.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CanvasPatch.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1SonarQubeReporter.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1drop__last__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParameterProgram_1_1Token.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1StockInfoProviderPartinfo.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/shareDrawDimension.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BoardRules.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GateEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GerberWriter_1_1ApertureMacro_1_1PrimitiveOutline.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1TokenizeSection.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PartBrowserWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Bracket.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolAddPart.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SearcherSymbol.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ManageIncludedBoardsDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SelectionProvider.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1output__stream__adapter.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ColumnChooser.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1DXFAdapter.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1IteratorGenerator.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible__object__type.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolRemoteBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SelectionFilterDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1FootprintGeneratorGrid.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1PKG.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PlaneEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EditorWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1cycled__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MultiComponentSelector.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1PredicateMatcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1IGenerator.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleClearancePackage.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1TestCaseTracking_1_1TrackerBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1contiguous__iterator__tag.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceBoardHole.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1input__range__tag.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1DRAG__ALGO.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PreferencesRowDeviceType.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolLock.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1incrementable__traits_3_01detail_1_1projected___3_01I_00_01Proj_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1KiCadModuleParser.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Plane.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classClipperLib_1_1PolyNode.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorExpand.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PnPExportWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IBlockProvider.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1basic__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleMatchEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParamEnumEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1IBSParser.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDataPoolUpdated.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1NetClassEditor.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PackageRules.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/tab_a.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1MatcherBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/tab_s.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PreferencesRowBoolButton.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1SOLID.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structstd_1_1tuple__element_3_01I_00_01_1_1ranges_1_1variant_3_01Ts_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParameterProgram_1_1TokenString.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1indirectly__readable__traits_3_01iterator__wrapper_3_01I_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolImportKiCadPackage.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ImpPackage_1_1ImportCanvas3D.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LayerBoxRow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structconcepts_1_1is__swappable.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperMerge.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Path__Description.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1AnyMatchMatcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1ITestCaseRegistry.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1remove__if__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IDocumentBlockSymbol.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1TestInvokerAsFunction.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleConnectivity.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PlaneUpdateDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IBlockSymbolAndSchematicProvider.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Detail_1_1is__range__impl_3_01T_00_01void__t_3_01decltype_07begin_07std_1_1declval_3_01T_01_4_07_08_08_08_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorShortedPads.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1any__view_3_01Ref_00_01Cat_00_01meta_1_1if__c_3_07Cat_01_6category_1_1forward_0862bcf35725124afac55b54a2679f9138.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1remove__bind__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BlocksBase_1_1BlockItem.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceBoardPanel.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ClipboardPadstack.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1XmlReporter.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1FilterGenerator.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1CompactReporter.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1FootprintGeneratorWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1coerce_3_01T_01_6_01_4.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1GeneratorException.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classDL__GroupCodeExc.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSetViaNet.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1experimental_1_1shared__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolChangeUnit.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMove.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1External__Model.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LogWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1NetButton.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1OutlineRectangle.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolEditPlane.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1cycled__view_3_01Rng_00_01true_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1Detail_1_1MatchAllOf.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1DuplicateWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MoveWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1coerce_3_01T_01const_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SQLite_1_1noncopyable.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1InsertBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TextEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structstd_1_1tuple__size_3_1_1ranges_1_1variant_3_01Ts_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1COMPONENT__DRAGGER.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1ISingleton.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CoreSchematic.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/doc/horizon-eda/html/classpybis_1_1RealRange.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SelectNetDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1External__Common.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1StatusDispatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolRenumberPads.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1MessageBuilder.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structtuple__size_3_1_1ranges_1_1common__tuple_3_01Ts_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structSEXPR_1_1SEXPR__STRING.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1tokenize__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Header.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorStringMultiline.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/nav_h.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SortHelper.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawPolygonCircle.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolChangeSymbol.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classLSEQ.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMapPackage_1_1Settings.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1drop__last__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1UnitInfoBox.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorClearanceCopper.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1view__facade.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LayerBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1output__vector__adapter.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/tab_h.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlacePowerSymbol.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleClearanceCopper.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1view__adaptor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1MatcherGenericBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1remove__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structstd_1_1tuple__size_3_1_1ranges_1_1compressed__pair_3_01First_00_01Second_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1drop__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawLineCircle.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ShapeEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1join__with__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParameterProgram.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1lexer__base.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SelectIncludedBoardDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GerberWriter_1_1ApertureMacro_1_1PrimitiveCircle.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawArc.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1cpp20__join__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible__tuple.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMapPort.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDataEnterDatumWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1is__nothrow__indirectly__movable.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1StackupLayerEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1is__range.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperLineWidthSetting.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1PKGParser.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1OutputWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1StockInfoRecordDigiKey.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ImpBoard.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1CORNER__COUNT__LIMIT__CONSTRAINT.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structstd_1_1tuple__size_3_1_1ranges_1_1compressed__tuple__detail_1_1compressed__tuple___3_01_1_2d3cde3bc2dc02df4d5871dbf13cb589.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CoreFrame.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1XmlReporter.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__basic__json.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1FootagDisplay.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolProjecsing File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1adjacent__filter__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1MultiReporter.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1VectorContainsElementMatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classDL__Exception.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1IGenerator.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1indirectly__readable__traits_3_01T_01const_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawLineNet.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MultiItemSelector_1_1ListColumns.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AirwireFilterWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1IMutableContext.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1unique__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolGenerateSilkscreen_1_1Settings.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structconcepts_1_1common__type_3_01T_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1ReusableStringStream.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1WithinUlpsMatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyMeta.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MyBlocks_1_1MyBlockItem.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1LINK__HOLDER.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1PNS__HORIZON__RULE__RESOLVER.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1iter__enumerate__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1take__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SheetEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1SubnetPlane.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ImpSymbol.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawPolygonRectangle.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PadParameterSetWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyPanel.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1IReporterFactory.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SearcherPackage.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PartBrowserWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Help.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Comment.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ActionEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1NoneBlockProvider.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ColorEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperMapSymbol.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Package__Model.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolLinesToTracks.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible__array__type.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolUpdateAllPlanes.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorDim.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ComponentButton.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ClipboardPackage.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structmeta_1_1extension_1_1apply_3_01Fn_00_01Ret_07Args_8_8_8_08_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RulesImportInfo.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1IBSParser.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserUnit.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1UUIDBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EditStackupDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structconcepts_1_1is__swappable.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/sha/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1StringMatcherBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1KiCadPackageParser.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Component.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1generate__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1UnitInfoBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Rule.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1EBDParser.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__default__constructible_3_01const_01std_1_1tuple_3_01Ts_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceBusRipper.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PartsWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Symbol.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolsWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ClipboardBoard.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structhorizon_1_1PngRead.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TagEntry_1_1TagPopover.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1StockInfoProvider.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1output__adapter__protocol.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ColumnChooser.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SVGOverlay.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1partial__sum__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AskDatumAngleDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PinNameEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MyMenuItem.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1RangeSection.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1group__by__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EditViaDial	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/collage.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1lexer__base.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperSavePlacements.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperPlane.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Plane.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperGetSymbol.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classDL__CreationInterface.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1iter__transform__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__compatible__integer__type.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1iota__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorDiffpair.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSettings.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserDecal.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structhorizon_1_1ODB_1_1attribute_1_1is__net.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1SubnetVia.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1DuplicateBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1ReporterFactory.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1adaptor__cursor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LayerComboBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1generate__view.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classClipperLibKiCad_1_1clipperException.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EditCustomValueDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorLayer.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Integer.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Clara_1_1Detail_1_1ResultValueBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Canvas.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1split__when__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1OBSTACLE__VISITOR.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1move__tag.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1NullableParamEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1Components.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1IEventListener.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE__CIRCLE.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1iter__transform2__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Node__Declarations.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1OrderableMPNSelector.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceBoardPanel.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Test__Load.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Detail_1_1BoundValueRefBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1Detail_1_1MatchAnyOf.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1drop__while__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawLineRectangle.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceDecal.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1cpp20__filter__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1split__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1PRESERVE__VERTEX__CONSTRAINT.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Detail_1_1BoundFlagRef.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1set__difference__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Bracket.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDataPastePlacement.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classGAL__SET.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyMetaNetClasses.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ManageBusesDialog.png using File::StripNondeterminism::tManagerApplication.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1filter__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MyCanvasPatch.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structtuple__size_3_1_1ranges_1_1common__pair_3_01First_00_01Second_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PadEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1sliding__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyMeta.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__compatible__string__type.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1COMPONENT__DRAGGER.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EnterDatumWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1NoneMatchMatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ColorEditorPalette.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolRemoteBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE__LINE__CHAIN.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1actions_1_1action__closure.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1IResultCapture.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1delimit__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1reference__wrapper.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1UnorderedEqualsMatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1group__by__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SearcherSymbol.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolEditPadParameterSet.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1ListSection.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1ExceptionMessageMatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1closed__iota__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1NetClassButton.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AskNetMergeDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TagEntry_1_1TagPopover_1_1ListColumns.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SheetEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1replace__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ImpPackage.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Document.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1trim__bind__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleExportDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GateEditorWizard.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleImportDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDataFromPlacePowerSymbol.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1Detail_1_1MatchAnyOfGeneric.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1AttributeProvider.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AboutDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MyBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1ITEM.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSetNotConnected.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SymbolPreviewWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1Detail_1_1MatchNotOf.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceShape.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1VectorContainsElementMatcher.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1optional.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Real.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CellRendererButton.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1DictParam.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1DIFF__PAIR.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structPNS_1_1HIT__VISITOR.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserParametric.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1ContainsElementMatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDelete.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MoveItemRow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible__tuple.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceBusRipper.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Core.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ManagePortsDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1StringEqualsMatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleParameters.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolFix.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AddSequenceDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Decal.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1semiregular__box.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1AutomakeReporter.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1UnaryExpr.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible__string__type.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Pin__Numbers.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolGitBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1DigiKeyApiPreferencesEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Config.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SheetBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1MEANDER__PLACER.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Package.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1view__base.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1Outline.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structconcepts_1_1common__type_3_01T_00_01U_01_4.png using File::StripNondeterminishandlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleConnectivity.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1Features_1_1Pad.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1ITestInvoker.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1IsEmptyMatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CanvasPDF.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1cache1__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1ITransientExpression.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1ChunkGenerator.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParameterWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structconcepts_1_1common__type_3_01T_00_01U_00_01Vs_8_8_8_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolNoPopulate.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SQLite_1_1Error.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1enumerate__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1view__interface.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1replace__if__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1MessageStream.png using File::StripNondeterminism::handlers::png
+	Normalizing dedebian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1ITestInvoker.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Series__Pin__Mapping.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BusMemberEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1IBS.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1RunContext.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classGAL__SET.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSmashPanelOutline.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1const__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Clara_1_1Detail_1_1ResultValueBase_3_01void_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classClipperLibKiCad_1_1ClipperBase.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1common__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1zip__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMapPackage_1_1Settings.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolStatusPoolManager.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PartPreview.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ClipboardBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1output__string__adapter.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PreferencesRowAction.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ManageNetClassesDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/sync_off.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSetNotConnected.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1coerce_3_01T_01_6_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PreferencesGroup.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AskDatumDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorThermals.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1take__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1for__each__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ActionEditorBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolEditSymbolPinNames.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1set__union__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1is__indirectly__movable.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classClipperLib_1_1PolyTree.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1repeat__n__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IBlockSchematicProvider.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Section.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structSEXPR_1_1SEXPR__DOUBLE.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1Detail_1_1MatchAllOfGeneric.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MapNetTieDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Clara_1_1Arg.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1contiguous__range__tag.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1WALKAROUND.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawConnectionLine.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1TestCaseTracking_1_1SectionTracker.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Clara_1_1Detail_1_1ParserRefImpl.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1drop__while__bind__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1drop__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Test__Data.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1PLACEMENT__ALGO.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1FootprintGeneratorFootag.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1EMI__Model.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CoreBoard.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GangedSwitch.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1HTTP_1_1RESTClient.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1take__exactly__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE__RECT.png using File::StripNondeterminism::hare/doc/horizon-eda/html/classPNS_1_1DIFF__PAIR__PLACER.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CompletionColumns.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1iter__take__while__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1ContainsMatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LogView.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1for__each__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EntityStore.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlacePad.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolFlipNetTie.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyPanels.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CoreSymbol.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1DP__MEANDER__PLACER.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1OrderableMPNSelector.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE__SIMPLE.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1RepeatGenerator.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Detail_1_1BoundValueRefBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParameterProgram_1_1TokenUUID.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorTrackWidth.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE__LINE__CHAIN.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PreferencesRowDeviceType.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1chunk__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ProjectPool.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EditTextWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CorePackage.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1replace__if__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolSelector.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceBusLabel.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleDiffpair.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1UnitPreview.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolAddVertex.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMapPackage.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MainWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1cycled__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1drop__exactly__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1sentinel__tag.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BoardRulesImportInfo.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Clara_1_1Detail_1_1BasicResult.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1container.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserParametric_1_1FilterAppliedLabel.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Detail_1_1has__description_3_01T_00_01void__t_3_01decltype_07T_1_1getDescription_07_08_08_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperGetSymbol.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AnnotateDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorPriority.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CorePadstack.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/open.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDragPolygonEdge.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1cpp20__filter__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleClearanceSameNet.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolEditBoardHole.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structstd_1_1tuple__size_3_1_1ranges_1_1subrange_3_01I_00_01S_00_01K_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1basic__iterator.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SchematicRules.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1take__while__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1EMI__Component.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PanedStateStore.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GateEditorWizard.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE__BASE.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPaste.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Detail_1_1is__unary__function_3_01F_00_01Catch_1_1Detail_1_1void__t_3_0182394c29954fc08234dda1e3f0b3edaa.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AvailablePoolItemEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1aux_1_1copy__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Pin__EMI.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1exception.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParamQuantityEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MapPackageDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BlocksDependencyGraph.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1tokenize__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1set__symmetric__difference__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Circuit__Call.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/sharndlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Keepout.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1sliding__view_3_01Rng_00_01sliding__view__detail_1_1cache_1_1none_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperSavePlacements.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ColumnChooser_1_1Adapter.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1semiregular__box_3_01T_01_6_6_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LayerDisplayButton.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ScaleBar.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ClipboardSchematic.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1filter__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GridsWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1common__view_3_01Rng_00_01true_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1OutlineCircle.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE__SIMPLE.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1TeamCityReporter.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDragKeepSlope.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1KeyLabel.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1SingleValueGenerator.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorThermals.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Integer.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1move__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1ITagAliasRegistry.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorInt.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1split__when__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1bad__variant__access.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structmeta_1_1extension_1_1apply_3_01Fn_00_01T_3_01Ts_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1linear__distribute__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MultiPadButton.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1unique__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1StartsWithMatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Board.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Detail_1_1BoundLambda.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1experimental_1_1coroutine__owner.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible_3_01std_1_1pair_3_01T1_00_01T2_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TreeWriterFS.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1Features_1_1Pad.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserButton.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1RandomIntegerGenerator.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1OutlineSquare.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ProjectMetaEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1always__false.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1NetButton.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1indirect__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserPackage.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSetNotConnectedAll.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceVia.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMapSymbol_1_1ToolDataMapSymbol.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classClipperLib_1_1Clipper.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1move__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1slice__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDataEditPlane.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolAddPart_1_1ToolDataAddPart.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BlockEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParameterSetEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceJunctionT.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BOMExportWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolAddBlockInstance.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyValue.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1IExceptionTranslatorRegistry.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolAlignAndDistribute.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1set__difference__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1EqualsMatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1sliding__view_3_01Rng_00_01sliding__view__detail_1_1cache_1_1first_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1ALGO__BASE.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1ints__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usm::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PartStore.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1DuplicatePartWidget.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Detail_1_1BoundFlagLambda.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorPackageChecks.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IBlockSymbolProvider.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1Features_1_1Surface.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserFrame.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MultiItemSelector.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible__array__type.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorNetClass.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SelectGroupTagDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/tab_s.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1distance__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorAngle.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SelectBlockDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1NullableParamEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1WALKAROUND.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1copy__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Matchers_1_1Detail_1_1conjunction.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1sample__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EditStackupDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1compressed___1_1StockInfoPreferencesEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1BaseModel.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1External__Circuit.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSEXPR_1_1SEXPR.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolGotoProvider.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1variant.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ManagePowerNetsDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolTieNets.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1incrementable__traits.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PowerNetEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ForcedPoolUpdateDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1ConsoleReporter.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1UnitEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1sliding__view_3_01Rng_00_01sliding__view__detail_1_1cache_1_1none_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Clara_1_1Detail_1_1BasicResult.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParameterProgram_1_1TokenCommand.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1IReporterRegistry.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceHole.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpy__exception.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PreferencesRowAction.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TagEntry_1_1TagPopover.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1ChunkGenerator.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Parser.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Session.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolEditText.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ColorEditorPalette.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1istream__view.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserPart.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1adjacent__remove__if__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BusEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDataFromPlacePowerSymbol.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ActionButtonBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDataEnterDatumScaleWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1move__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1MapGenerator.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1transform2__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSetNotConnectedAll.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperMove.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperDrawNetSetting_1_1Settings.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LayerProvider.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1take__exactly__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classBoardWrapper.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EditViaDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GerberLayerEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorShortedPads.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceHole.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolAlignAndDistribute.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolGitBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1InToolActionEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structDL__TextData.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1indices__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1view__base.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1DocumentBoard.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1OPT__CONSTRAINT.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolImportDXF.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BlockSymbol.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1split__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1bad__any__cast.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1IMutableEnumValuesRegistry.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structSEXPR_1_1SEXPR__STRING.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LayerOptionsExpSilkscreen.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorClearanceCopperKeepout.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Image3DExporter.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BlocksBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__compatible__type.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolWithParametric.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Document.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceDot.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MyMenuItem.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Singleton.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ProcWaitDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1WarningsBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PreferencesRowNumeric.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPolygonToLineLoop.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SQLite_1_1Query.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PartStore.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/nav_f.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1is__nothrow__indirectly__swappable.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Section.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structstd_1_1tuple__element_3_01I_00_01_1_1ranges_1_1variant_3_01Ts_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structmeta_1_1extension_1_1apply_3_01Fn_00_01T_3_01Ts_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhbian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1set__symmetric__difference__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawPolygonCircle.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1trim__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolRoundOffVertex.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/tab_a.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ConfirmPrDialog.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1DependencyGraph.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ImpPackage.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ImpLayer.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1drop__last__view_3_01Rng_00_01detail_1_1drop__last__view_1_1mode__forward_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolEditLineRectangle.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AutosaveRecoveryDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolListItem.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MSDTuningWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CaptureDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolRotateArbitrary.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDataPoolUpdated.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CanvasGL.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleBoardConnectivity.png usinge/doc/horizon-eda/html/classDL__CreationInterface.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1is__indirectly__swappable.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ActionButtonMenu.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MultiPadSelector.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperCollectNets.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParametricParamEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorLayerPair.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolAddKeepout.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PinNamesEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1semiregular__box_3_01T_01_6_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CreatePartDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyPanel.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDisconnect.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1ContainsElementMatcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1iter__enumerate__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BlockButton.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleSymbolChecks.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/nav_g.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classwxString.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/bdwn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structhorizon_1_1PngRead.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SymbolPinNamesWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Package__Model.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Context.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1LINKED__ITEM.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Padstack_1_1MyParameterProgram.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1set__union__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1exclusive__scan__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MultiComponentButton.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawPolygonRectangle.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1cpp20__filter__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserParametric.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceText.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classranges_1_1box_3_01Element_00_01Tag_00_01detail_1_1box__compress_1_1ebo_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolLock.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Clara_1_1ExeName.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1JunctionProvider.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSEXPR_1_1SEXPR__LIST.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AlignAndDistributeWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1ANGLE__CONSTRAINT__45.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IDocumentDecal.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolDownloadWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1experimental_1_1sized__generator.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ProcWaitDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1Components.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structstd_1_1tuple__size_3_1_1ranges_1_1subrange_3_01I_00_01S_00_01K_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__complete__type.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1set__union__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1TableSection.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PlaceAtPadDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMapPin.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/nav_h.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/closed.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1ContainsMatcherMatcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1StringEqualsMatcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizoog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1split__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RecentItemBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1ExceptionTranslatorRegistry.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1is__callable_3_01Fun_07Args_8_8_8_08_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Range.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ComponentButton.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structhorizon_1_1Png.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RulesCheckCacheNetPins.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleLayerPair.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__compatible__type.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1take__while__bind__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1sized__sentinel__tag.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classClipperLib_1_1PolyTree.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolInfo.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PinNamesBox.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SpinButtonAngle.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMapSymbol.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1OPT__CONSTRAINT.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classranges_1_1sample__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EntryWithInheritance.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RecentItemBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPopover.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Clara_1_1Detail_1_1ResultBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1trim__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1iter__zip__with__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Image3DExporterWrapper.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classClipperLib_1_1ClipperBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structconcepts_1_1is__nothrow__swappable__with.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolCacheBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SearcherBoard.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1identity__adaptor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE__ARC.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParameterEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structconcepts_1_1common__reference_3_01T_00_01U_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1Detail_1_1MatchAnyOfGeneric.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolEnterDatum.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1iter__distance__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AxesLollipop.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1Outline.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1repeat__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolEditShape.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GatePinEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IDocumentSchematicBlockSymbol.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ScaleBar.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CanvasNetTies.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PortEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1chunk__view__.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1StatusDispatcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1View3DWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ConfirmCloseDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorScale.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CanvasTextRenderer.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CoreDecal.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1StepExportWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PinEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GitHubLoginWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1trim__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1SubnetVia.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1basic__mixin.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1bad__any__cast.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperRestrict.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1KeyConflictDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LayerOptionsExp.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1UnitStore.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolInfoBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE__LINE__CHAIN__BASE.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawNetTie.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1group__by__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1StockInfoPreferencesEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE__SEGMENT.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorPackageChecks.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BlocksBase_1_1BlockItemInfo.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1generate__n__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ImpLayer.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ImportKiCadPackageWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1for__each__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__compatible__array__type.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1ints__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1container.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorClearanceSilkscreenExposedCopper.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceJunctionT.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1drop__exactly__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Detail_1_1BoundLambda.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1set__symmetric__difference__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1transform__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperPickPad.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PreferencesRowBool.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDataEnterDatumScaleWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Pin__Numbers.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolUpdateErrorDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/pair.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceDecal.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RulePlane.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1HasSizeMatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1set__symmetric__difference__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PreferencesWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1UnplacedBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSEXPR_1_1SEXPR.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EntityInfoBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDragPolygonEdge.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible__string__type.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolEnterDatum.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1MultiReporter.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GatePinRow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyValue.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1slice__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EditorWindowStore.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SpinButtonDim.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1unbounded__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1view__facade_1_1view__as__cursor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1JunitReporter.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1PLACEMENT__ALGO.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1LINE__PLACER.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1chunk__by__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IPool.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceVia.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1UnplacedBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMoveNetSegment.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1bidirectional__range__tag.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LayerDisplayButton.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1DigiKeyAuthWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1WarningsBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserParametric_1_1FilterAppliedLabel.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RulesImportInfo.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawArc.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structSEXPR_1_1SEXPR__SYMBOL.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1KiCadDecalParser.png using r/share/doc/horizon-eda/html/structranges_1_1getlines__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolItemEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1RangeParam.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1indirectly__readable__traits.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PreferencesRowDevice.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolGenerateCourtyard.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classClipperLibKiCad_1_1Clipper.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleClearanceSilkscreenExposedCopper.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IDocumentSymbol.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1SubnetTrace.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleThermals.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1WelcomeWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CompletionColumns.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Keyword.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MultiItemSelector_1_1ListColumns.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1drop__while__bind__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Clara_1_1Detail_1_1ParserBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSettingsRectangleMode.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Detail_1_1BoundFlagRef.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CanvasPatch.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LogView.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMapSymbol_1_1ToolDataMapSymbol.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1adjacent__remove__if__fn.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1Detail_1_1MatchNotOfGeneric.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1common__pair.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpy__exception.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ForcedPoolUpdateDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperDrawNetSetting.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1slice__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolNotebook.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CellRendererButton.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1drop__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1input__range__tag.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1intersperse__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1VVIA.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1getlines__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1chunk__by__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Board__Description.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-edan-eda/html/classhorizon_1_1PropertyEditorPriority.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__default__constructible_3_01const_01std_1_1pair_3_01T1_00_01T2_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SelectNetDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RulesCheckCacheBoardImage.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1has__to__json.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolManagePowerNets.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1BinaryExpr.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1TAPReporter.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classDL__Writer.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1zip__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1StockInfoRecordDigiKey.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolStatusProviderPoolManager.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Clara_1_1Arg.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParameterProgramPolygon.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1OutlineContour.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1DuplicateWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1IReporterFactory.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1External__Model.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ReflowBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1semiregular__box_3_01T_01_6_6_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1range__cardinality.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1ITransientExpression.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1IGeneratorTracker.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Model.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GerberLayerEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1parse__error.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceDot.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structhorizon_1_1ODB_1_1attribute_1_1is__feature.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1join__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PinEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ManagePortsDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1DuplicateEntityWidget.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IDocument.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolExchangeGates.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1KiCadDecalParser.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolStatusBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperMapSymbol.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classranges_1_1sample__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1IsEmptyMatcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1reverse__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Pin__Domain__EMI.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSetDiffpair.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LayerOptionsCopper.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EntryWithInheritance.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1random__access__range__tag.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolClearPart.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1iter__take__while__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1exception.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1SubnetPlane.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1DigiKeyApiPreferencesEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Text.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PadstackPreview.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BoardJunction.png using File::StripNondeterminism::handlers::png
+	Normorizon_1_1ToolSmashPackageOutline.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSetViaNet.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LayerOptionsExp.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Real.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LogWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structtuple__size_3_1_1ranges_1_1common__tuple_3_01Ts_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1DIFF__PAIR.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1TestCaseInfo.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1LINE.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1MatcherUntypedBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1ExceptionMessageMatcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CoreSchematic.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1RegexMatcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Parse.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structstd_1_1tuple__size_3_1_1ranges_1_1tagged_3_01Untagged_00_01Tags_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1sentinel__tag.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structconcepts_1_1is__swappable__with.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PadEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SchematicRules.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ActionButtonBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IBlockSymbolProvider.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1EMI__Component.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Benchmark_1_1Detail_1_1optimized__away__error.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1slice__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__detected__lazy.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Clara_1_1Parser.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolRouteTrackInteractive_1_1Settings.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPopover.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1MEANDER__PLACER__BASE.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Detail_1_1has__description.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1true__given.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Circuit__Call.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPaste.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classBoardWrapper.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1partial__sum__base__fn.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceJunction.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolDownloadWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1sliding__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ClipboardPadstack.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Detail_1_1is__unary__function.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1adaptor__sentinel.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EditCustomValueDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawPolygon.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TitleBlockValuesEditor.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Canvas3D.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSelectConnectedLines.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1UnitEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/bc_s.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GerberWriter_1_1ApertureMacro_1_1PrimitiveCenterLine.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1remove__if__bind__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1variant.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1ordered__map.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1StockInfoRecord.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1join__with__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1other__error.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolDependencyGraph.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleClearanceCopper.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1tokenize__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1iter__transform2__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1NetClassMapper.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CanvasGerber.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1ReporterRegistry.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1KeySequencesPreferencesEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperRestrict.png using File::StripNondeterminism::handlers::png
+horizon-eda/html/classhorizon_1_1BoardHoleDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1AutomakeReporter.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserPadstack.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Canvas.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/sync_off.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1StringContainsMatcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorExpand.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/sync_on.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1TeamCityReporter.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ModelEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1copy__tag.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1drop__last__view_3_01Rng_00_01detail_1_1drop__last__view_1_1mode__sized_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__basic__json.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1VIA.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1EBD.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TreeWriter.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1GeneratorUntypedBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawNetTie.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SheetBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolGenerateSilkscreen_1_1Settings.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE__ARC.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PartWizard.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MyCanvasPatch.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1invalid__iterator.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Detail_1_1BoundRef.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CellRendererColorBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1drop__while__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SortHelper.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1SonarQubeReporter.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE__RECT.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawLineNet.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1stride__view.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1SEGMENT.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolBendLineNet.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperMerge.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1pipeable__access_1_1impl.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1Features_1_1Arc.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1out__of__range.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classDL__CreationAdapter.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1adaptor__sentinel.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ClipboardGeneric.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RulePreflightChecks.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__default__constructible_3_01const_01std_1_1pair_3_01T1_00_01T2_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1BaseModel.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1sized__sentinel__tag.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1Features_1_1Line.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EditorWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1take__exactly__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ImpDecal.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperLineWidthSetting.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1OutlineRectangle.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1experimental_1_1coroutine__owner.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GangedSwitch.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PreferencesRowDevice.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE__BASE.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceNetLabel.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParameterProgram_1_1TokenInt.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1UnitPreview.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1any__view.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSetGroup.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleLabel.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CanvasPreferencesEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1trim__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1chunk__view__.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1out__of__range.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolManageBuses.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1RangeParam.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolUpdatePool.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1RecordWithAttributes.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1indirectly__readable__traits_3_01iterator__wrapper_3_01I_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IDocumentPadstack.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Decal.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1forward__range__tag.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Rule.png using File::Strip/html/classhorizon_1_1PoolManagerPool.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PreviewCanvas.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ImpBoard.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1StockInfoRecordPartinfo.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1identity__adaptor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolChangeUnit.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1InputDevicesPreferencesEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classClipperLibKiCad_1_1PolyTree.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1aux_1_1move__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CreatePartDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1OpeningSpinner.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Help.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Submodel.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1TestCaseTracking_1_1SectionTracker.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1json__reverse__iterator.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1invoke__result.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1delimit__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MultiNetSelector.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PreferencesGroup.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyValueBool.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSelectConnectedLines.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1repeat__n__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SpaceNavPreferencesEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserFrame.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MainWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CanvasGL.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1split__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1join__bind__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1StringMatcherBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1bad__variant__access.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorString.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleMatchEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MyBlocks.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ImpBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1NetSelector.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1InsertBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyValueDouble.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Algorithmic__Model.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Header.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TextRenderer.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1remove__if__bind__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IDocumentPackage.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1chunk__by__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1contiguous__iterator__tag.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParametricEditor.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BlocksPeek.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SelectSheetDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1FootprintGeneratorWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1true__given.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PullRequestItemBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1stride__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Parser.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolStatusProviderPoolManager.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Pool.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1incrementable__traits_3_01T_01const_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1set__intersection__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserStockinfo.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1TAPReporter.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorClearanceCopperOther.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserPadstack.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PackageInfoBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible_3_01std_1_1tuple_3_01Ts_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structstd_1_1tuple__size_3_1_1ranges_1_1variant_3_01Ts_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MoveWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ViewAngleWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleShortedPads.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1iter__transform__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1RecordWithAttributes.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1JunctionProvider.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleLayerPair.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TitleBlockValuesEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolClearPart.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1DXFAdapter.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParametricFilterBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structDL__TextData.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1DuplicateUnitWidget.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/doc.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SymbolPinNamesWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GatePinEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1intersperse__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolNoPopulate.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SelectPRDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ShapeDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MyInstanceMappingProvider.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__compatible__object__type.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1has__to__json.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1intersperse__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1parse__error.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1EventListenerBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1RegexMatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlacePad.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1invalid__iterator.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1stride__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolBackannotateConnectionLines_1_1ToolDataBackannotate.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1type__error.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1GeneratorUntypedBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1join__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1transform__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1bad__optional__access.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structmeta_1_1defer.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1chunk__by__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolAddKeepout.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CustomFieldEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1JunitReporter.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1DuplicateSymbolWidget.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1Detail_1_1MatchAnyOf.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Node.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MultiItemButton.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/salizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ShapeDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IDocumentFrame.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1IConfig.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE__SEGMENT.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperCollectNets.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1transform__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorPlane.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BOMExportWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GerberWriter_1_1ApertureMacro_1_1Primitive.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolEditVia.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LayerHelpBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1range__tag.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1WithinUlpsMatcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structSEXPR_1_1SEXPR__DOUBLE.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1DuplicatePackageWidget.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolBackannotateConnectionLines.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1stride__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1AttributeProvider.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1is__nothrow__indirectly__swappable.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construce6fa33688da703b95649da4749cdeb98.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CanvasPads.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SearcherSchematic.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1MatcherGenericBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1take__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1set__difference__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1RealRange.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1CumulativeReporterBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1FootprintGeneratorGrid.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1distance__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserDecal.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1trim__bind__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classLSET.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1ROUTER__IFACE.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1split__when__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyPanels.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1experimental_1_1shared__closure.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1TestRegistry.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParameterProgram_1_1TokenInt.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ManagePowerNetsDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structhorizon_1_1ODB_1_1attribute_1_1is__net.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1take__while__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classwxString.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GenericComboBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawPlane.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1ITagAliasRegistry.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Keyword.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CanvasGerber.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ImpBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorOpacity.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1NetClassEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1drop__exactly__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1EBD.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1MEANDER__SKEW__PLACER.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PowerNetEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ImpSchematic.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolRoundOffVertex.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PreviewBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Section.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1reverse__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Session.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperPlane.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolTieNets.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1concat__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1Features.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1partial__sum__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1drop__last__view_3_01Rng_00_01detail_1_1drop__last__view_1_1mode__sized_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1TestInvokerAsMethod.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LayerDisplayPreview.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CanvasCairo2.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EditKeepoutDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1EndsWithMatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1drop__exactly__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorStringRO.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EditPlaneWindow.png using File::StripNondeterminism::handlers::pFile::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMapPort.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1experimental_1_1generator.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDataPaste.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserButton.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ImpDecal.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1remove__bind__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RulePackageChecks.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1IBS.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PartEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1IBISCommon.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CanvasHole.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Detail_1_1is__unary__function_3_01F_00_01Catch_1_1Detail_1_1void__t_3_0182394c29954fc08234dda1e3f0b3edaa.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IBlockSchematicProvider.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1OrderableMPNEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1IContext.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1move__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Package_1_1MyParameterProgram.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSmash.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1trim__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolEditLineRectangle.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPolygonToLineLoop.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolResizeSymbol.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1EventListenerBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Junction.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1MatcherBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1PNS__HORIZON__IFACE.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Detail_1_1is__unary__function.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE__COMPOUND.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1FootprintGeneratorSingle.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyValueString.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1is__indirectly__movable.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MapUUIDPathDialog.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1StockInfoProviderDigiKey.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1conjunction.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolEditCustomValue.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__detected__lazy.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Frame.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1MEANDER__PLACER__BASE.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SVGOverlay.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SchematicJunction.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolUpdateErrorDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Detail_1_1BoundValueRef.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PnPExportWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/folderclosed.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MultiPadButton.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Image3DExporterWrapper.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GerberWriter_1_1ApertureMacro_1_1PrimitiveCenterLine.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IDocumentSchematic.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleNetTies.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawLineCircle.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperMapSymbol_1_1Settings.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Symbol.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1sized__range__tag.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDataEnterDatumAngleWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceJunctionBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1replace__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1filter__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1lexer.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RenumberPadsWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawConnectionLine.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1StreamingReporterBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1take__last__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDataPastePlacement.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GridsWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1adjacent__remove__if__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1OutlineCircle.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1has__non__default__from__json.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1HelpButton.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structstd_1_1iterator__traits_3_1_1ranges_1_1basic__iterator_3_01Cur_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1stride__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CorePackage.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1output__string__adapter.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ExportFileChooser.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/open.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorHoleSize.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1subrange.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolFix.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1view__closure.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PDFExportWindow.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SchematicPropertiesDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1LINE__PLACER.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__compatible__string__type.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LayerOptionsCopper.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1unbounded__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1empty__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ComponentSelector.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1enumerate__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LayerBoxRow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PlaneUpdateDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SymbolPreviewBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorTrackWidth.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1MatchExpr.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1aux_1_1copy__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParameterWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible_3_01const_01std_1_1tuple_3_01Ts_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1KiCadModuleParser.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classMyParameterProgram.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BoardDisplayOptionsBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MyRuleImportMap.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParameterProgram_1_1Token.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1StockInfoProvider.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1basic__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1MEANDER__PLACER.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ColorBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EntityStore.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Section.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1UnorderedEqualsMatcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1partial__sum__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1adjacent__filter__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSetTrackWidth.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RulesWindow.png using File::StripNondeterminism::handlers::png
+	NormaliNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleClearanceCopperKeepout.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AskDatumDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TextEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1join__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1set__intersection__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classClipperLib_1_1ClipperBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TreeWriterArchive.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawTrack.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolInfoBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1ref__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ManageNetClassesDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structconcepts_1_1common__reference_3_01T_00_01U_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Clara_1_1Detail_1_1ComposableParserImpl.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserSymbol.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EditFrameDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleParameters.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorClearanceSameNet.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParameterProgram.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BoardRuleImportDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BoardRulesImportInfo.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__iterator__traits.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BlocksBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1take__while__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ObjectProvider.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolLinesToTracks.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__json__ref.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE__CIRCLE.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ClipboardBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Searcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1IEventListener.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1KeyLabel.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SelectPRDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structmeta_1_1defer__i.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Comment.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MyBlocks_1_1MyBlockItem.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolItemEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawDimension_1_1Settings.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1PKGParser.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1Components_1_1Component.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1tokenize__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PanedStateStore.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classDL__GroupCodeExc.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceJunctionSchematic.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1type__error.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1ApproxMatcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1Features_1_1Line.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorDim.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1Net.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Frame.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PreferencesWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structconcepts_1_1common__type_3_01T_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserEntity.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1DictSection.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperLineWidthSetting_1_1Settings.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceBoardHole.png using File:hare/doc/horizon-eda/html/structranges_1_1views_1_1exclusive__scan__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1cycled__view_3_01Rng_00_01true_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1NetClassButton.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SQLiteShellWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SearcherPackage.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BlockEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1delimit__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1drop__exactly__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1experimental_1_1shared__closure.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__default__constructible_3_01std_1_1tuple_3_01Ts_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1contiguous__range__tag.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AskNetMergeDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structSEXPR_1_1SEXPR__INTEGER.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1ReusableStringStream.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Benchmark_1_1Detail_1_1is__related.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RulePreflightChecks.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolEditorInterface.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1exclusive__scan__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1cartesian__product__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1PNS__HORIZON__RULE__RESOLVER.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolMergeBox2.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleLabel.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMergeDuplicateJunctions.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParametricParamEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PreviewBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PreferencesRowBoolButton.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IInstanceMappingProvider.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1filter__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/folderopen.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1byte__container__with__subtype.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyValueUUID.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BlocksSchematic_1_1BlockItemSchematic.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classClipperLibKiCad_1_1PolyNode.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorOpacity.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE__POLY__SET.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AskDatumStringDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Clara_1_1Detail_1_1ResultValueBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorLayer.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MyLabel.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1linear__distribute__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CaptureDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GenericComboBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Clara_1_1Detail_1_1ResultBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1transform2__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolGenerateCourtyard.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1SingleValueGenerator.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1split__when__view.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1RangeDictParam.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1RULE__RESOLVER.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PartWizard.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ReflowBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structPNS_1_1NODE_1_1DEFAULT__OBSTACLE__VISITOR.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1iter__transform__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structhorizon_1_1ODB_1_1attribute_1_1is__pkg.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ClipboardSchematic.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1coerce_3_01T_01_6_6_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-edhorizon-eda/html/classhorizon_1_1ToolEditBoardHole.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleBoardConnectivity.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1group__by__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SortController.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1view__adaptor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structconcepts_1_1common__type_3_01T_00_01U_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE__LINE__CHAIN__BASE.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1MapGenerator.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PartinfoPreferencesEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1StartsWithMatcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceRefdesAndValue.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GateEditorImportWizard.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolListItem.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TagEntry_1_1TagPopover_1_1ListColumns.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1slice__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1IMutableContext.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1drop__last__view_3_01Rng_00_01detail_1_1drop__last__view_1_1mode__forward_01_4.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleTrackWidth.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Algorithmic__Model.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1MessageStream.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperDrawNetSetting_1_1Settings.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MultiComponentButton.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1OutlineContour.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserStockinfo.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1zip__with__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible_3_01std_1_1pair_3_01T1_00_01T2_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ColorEditorLayer.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDragKeepSlope.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structstd_1_1tuple__size_3_1_1ranges_1_1compressed__pair_3_01First_00_01Second_01_4_01_4.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1FootprintGeneratorBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1bidirectional__range__tag.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Series__MOSFET.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleClearancePackage.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1partial__sum__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Matchers_1_1Detail_1_1conjunction.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1CompactReporter.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1other__error.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TreeWriterPrefixed.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorBool.png using File::Sng
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IDocumentPackage.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolStatusProviderBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleVia.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SpaceNavPreferencesEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSmashPackageOutline.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserSymbol.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1IBISNode.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1ARC.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1RandomIntegerGenerator.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PolygonUsage.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Clara_1_1ExeName.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__compatible__type__impl.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1single__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MyBlocks.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MultiNetButton.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1view__facade.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Rules.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1HeaderButton.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1ISingleton.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1drop__base__fn.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1filter__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BlocksDependencyGraph.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1FixedValuesGenerator.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1IteratorGenerator.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1random__access__range__tag.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1intersperse__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1StreamingReporterBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSEXPR_1_1SEXPR__LIST.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1drop__while__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ImportKiCadPackageWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ManageIncludedBoardsDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1take__last__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PadParameterSetWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__default__constructible_3_01std_1_1pair_3_01T1_00_01T2_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSwapNets.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolBackannotateConnectionLines.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Detail_1_1NonCopyable.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParameterSetEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolAddPart_1_1ToolDataAddPart.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1common__tuple.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IBlockProvider.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Benchmark_1_1Detail_1_1ChronometerConcept.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSEXPR_1_1PARSE__EXCEPTION.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSwapGates.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1Generators.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RouterSettingsWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1incrementable__traits_3_01detail_1_1projected___3_01I_00_01Proj_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1sliding__view_3_01Rng_00_01sliding__view__detail_1_1cache_1_1last_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1iter__transform__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GerberWriter_1_1ApertureMacro_1_1PrimitiveCircle.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TreeViewStateStore.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structmeta_1_1and__c.zing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GerberWriter_1_1ApertureMacro_1_1PrimitiveOutline.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PartsWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1AllMatchMatcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structstd_1_1tuple__size_3_1_1ranges_1_1compressed__tuple__detail_1_1compressed__tuple___3_01_1_2d3cde3bc2dc02df4d5871dbf13cb589.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1iter__distance__compare__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/tab_b.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ShapeEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Board.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ImpPadstack.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceRefdesAndValue.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyValueUUID.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EntityEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorEnum.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MyRuleImportMap.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ViewAngleWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LayerDisplayPreview.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1ContainsMatcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1adjacent__filter__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GateEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ManageBusesDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE__NULL.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDataWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Detail_1_1BoundValueRef.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1DIFF__PAIR__PLACER.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AutosaveRecoveryDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structmeta_1_1defer.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolStatusProviderBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TreeWriterPrefixed.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EnterDatumAngleWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1remove__if__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1adjacent__remove__if__base__fn.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1NAReal.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classDL__NullStrExc.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1drop__last__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1iter__take__while__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSettingsRectangleMode.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorClearanceCopperKeepout.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SortController.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1KEEP__TOPOLOGY__CONSTRAINT.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1DocumentBoard.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1NetSelector.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BlockSymbol.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Changeable.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1transform__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolResizeSymbol.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperLineWidthSetting_1_1Settings.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IPool.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1subrange.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1remove__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1SHOVE.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CanvasPDF.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structconcepts_1_1common__reference_3_01T_00_01U_00_01Vs_8_8_8_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ActionEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleDiffpair.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDelete.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperDrawNetSetting.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1DRAG__ALGO.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IDocumentSymbol.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MiscPreferencesEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1distance__compare__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CoreBoard.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleVia.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1Detail_1_1MatchAllOf.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParamEnumEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1set__intersection__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1pipeable__access_1_1impl.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ComponentSelector.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structstd_1_1tuple__element_3_01N_00_01_1_1ranges_1_1tagged_3_01Untagged_00_01Tags_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1bad__optional__access.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Core.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorVia.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EditKeepoutDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1KiCadPackageParser.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TagEntry_1_1TagLabel.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1StockInfoRecord.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1drop__exactly__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__default__constructible.png using File::StripNondeterminism::handlers::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorStringRO.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Component.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorEnum.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ImpSchematic.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Generators_1_1GeneratorTracker.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1Features_1_1Surface.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1take__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structSHAPE__POLY__SET_1_1TRIANGULATED__POLYGON_1_1TRI.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1single__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1experimental_1_1shared__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolRouteTrackInteractive.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorBool.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1SubnetTrace.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/bc_s.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1DRAGGER.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TreeWriter.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Canvas3DBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Text.png using Fil_1_1LayerComboBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classDL__WriterA.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDataEnterDatumAngleWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AskDatumStringDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PreferencesRowBool.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Benchmark_1_1Detail_1_1ChronometerModel.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BusMemberEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1sample__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorHoleSize.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GateEditorImportWizard.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ObjectProvider.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Clara_1_1Detail_1_1ComposableParserImpl.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1IMutableEnumValuesRegistry.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceNetLabel.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IDocument.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawDimension.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Clara_1_1Opt.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMove.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PartPreview.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PullRequestItemBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1is__nothrow__indirectly__movable.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1OutputWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classDL__Exception.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1RandomFloatingGenerator.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1RangeGenerator.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1PredicateMatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ProjectMetaEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSmashPanelOutline.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GenerateSilkscreenWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SelectGroupTagDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__complete__type.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__default__constructible_3_01std_1_1tuple_3_01Ts_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1Detail_1_1MatchNotOf.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structhorizon_1_1ODB_1_1attribute_1_1is__pkg.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SelectionProvider.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ConfirmPrDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolGotoProvider.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1join__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolProjectManagerAppWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MultiItemButton.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_3_01T_01_4_1_1value_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EditPlaneWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1ROUTER__IFACE.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMoveTrackCenter.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LocationEntry.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Sheet.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1output__vector__adapter.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1is__range.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1chunk__view___3_01Rng_00_01false_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleClearanceCopperOther.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawLineRectangle.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1SOLID.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CorePadstack.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1indirectly__readable__traits.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MultiPadSelector.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1UnitStore.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1coerce_3_01T_01const_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1TestCaseTracking_1_1ITracker.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1KeySequenceDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1EqualsMatcher.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1coerce.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1RESTRICT__VERTEX__RANGE__CONSTRAINT.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AddSequenceDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1indirectly__readable__traits_3_01T_01const_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ActionButtonMenu.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1chunk__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowser.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MultiItemSelector.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SQLite_1_1Query.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1basic__iterator.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SchematicJunction.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Matchers_1_1Detail_1_1conjuna/html/classpybis_1_1Pin__EMI.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CanvasPreferencesEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1iter__take__while__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PreferencesRowNumeric.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SelectIncludedBoardDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ImpSymbol.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1Subnet.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1set__difference__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolLineLoopToPolygon.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ActionButton.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1sliding__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1common__range__tag.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1drop__while__base__fn.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1WithinRelMatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SymbolPreviewWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1AllMatchMatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PlaceAtPadDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IDocumentSchematicBlockSymbol.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PackageInfoBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BoardHoleDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RouterSettingsWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorDouble.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1incrementable__traits.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible_3_01const_01std_1_1tuple_3_01Ts_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1repeat__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structtuple__element_3_01N_00_01_1_1ranges_1_1common__tuple_3_01Ts_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__compatible__integer__type.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/search/search_r.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classDL__NullStrExc.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Detail_1_1BoundFlagRefBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1External__Common.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1drop__last__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1RULE__RESOLVER.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleImportMap.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IDocumentBoard.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1EBDParser.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BlocksSchematic.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structconcepts_1_1common__type_3_01T_00_01U_00_01Vs_8_8_8_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1sample__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1MEANDER__SKEW__PLACER.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1FixedValuesGenerator.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structconcepts_1_1is__nothrow__swappable__with.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1iter__take__while__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1split__when__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Keepout.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserUnit.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structdoj_1_1alphanum__less.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RulesCheckCacheBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Benchmark_1_1Detail_1_1ChronometerModel.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1HTTP_1_1Client.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1emplaced__index__t.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1FootagDisplay.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structtuple__size_3_1_1ranges_1_1common__pair_3_01First_00_01Second_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Detail_1_1BoundFlagLambda.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/splitbar.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ImpFrame.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1PRESERVE__VERTEX__CONSTRAINT.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1ARC.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1KeyConflictDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1FootprintGeneratorQuad.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Detail_1_1EnumValuesRegistry.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1transform__view.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/search/search_m.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/search/search_r.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/search/search_l.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/icons/hicolor/16x16/apps/org.horizon_eda.HorizonEDA.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/icons/hicolor/256x256/apps/org.horizon_eda.HorizonEDA.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/icons/hicolor/64x64/apps/org.horizon_eda.HorizonEDA.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/icons/hicolor/32x32/apps/org.horizon_eda.HorizonEDA.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/icons/hicolor/16x16/apps/org.horizon_eda.HorizonEDA.png using File::StripNondeterminism::handlers::png
-e::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1KeySequencesPreferencesEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/icons/hicolor/64x64/apps/org.horizon_eda.HorizonEDA.png using File::StripNondeterminism::handlers::png
+png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1group__by__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ActionEditorBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MapNetTieDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1common__pair.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Clara_1_1Detail_1_1ParserBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1remove__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/nav_g.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classClipperLibKiCad_1_1PolyTree.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1negation.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolCacheCleanupDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1Components_1_1Component.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CanvasTextRenderer.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BlocksSchematic.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Clara_1_1Parser.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PlaceModelBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1cartesian__product__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ModelEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1LINKED__ITEM.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EditorWindowStore.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TagEntry_1_1TagLabel.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/tab_b.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__compatible__array__type.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CanvasPads.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyMetaLayers.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PinNamesBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1iter__take__while__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSEXPR_1_1PARSE__EXCEPTION.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1TestCaseTracking_1_1ITracker.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1IBISCommon.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Detail_1_1is__range__impl_3_01T_00_01void__t_3_01decltype_07begin_07std_1_1declval_3_01T_01_4_07_08_08_08_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structmeta_1_1extension_1_1apply_3_01Fn_00_01integer__sequence_3_01T_00_01Is_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RulesCheckCacheNetPins.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BoardRuleImportDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE__NULL.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolLineLoopToPolygon.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorScale.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MapUUIDPathDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CellRendererColorBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IDocumentSchematic.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structmeta_1_1or__c.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawPolygon.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperMapSymbol_1_1Settings.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CoreDecal.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IInstanceMappingProvider.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1zip__with__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1HelpButton.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorDiffpair.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceText_1_1Settings.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ColumnChooser_1_1IAdapter.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSetDiffpair.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1remove__if__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1adjacent__filter__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Sheet.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/folderclosed.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GatePinRow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1replace__base__fn.png using File::StripNondeterminism::handlers::png
-	NtripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolInfo.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Detail_1_1NonCopyable.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolNotebook.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MultiNetButton.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PDFExportWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1DuplicateEntityWidget.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CanvasODB.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PinNamesEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1is__callable_3_01Fun_07Args_8_8_8_08_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1MatrixSection.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1VVIA.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structstd_1_1tuple__size_3_1_1ranges_1_1tagged_3_01Untagged_00_01Tags_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyValueDouble.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1View3DWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1take__while__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1tokenize__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1set__union__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1TestCaseInfo.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1drop__last__view_3_01Rng_00_01detail_1_1drop__last__view_1_1mode__bidi_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1OutlineSquare.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1chunk__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1IReporterRegistry.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1range__cardinality.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSmash.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1ReporterFactory.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MyBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1any__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolDependencyGraph.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMeasure.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1indices__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SQLite_1_1Error.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1StockInfoRecordPartinfo.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSetTrackWidth.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolRouteTrackInteractive_1_1Settings.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1ExceptionTranslatorRegistry.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1ITestCaseRegistry.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1AnyMatchMatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PartinfoPreferencesEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolHelperPickPad.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMapPin_1_1Settings.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1has__non__default__from__json.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyValueString.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CanvasNetTies.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/sync_on.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSwapNets.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BoardJunction.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structconcepts_1_1common__reference_3_01T_00_01U_00_01Vs_8_8_8_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EditFrameDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolData.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1End.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ColorEditorLayer.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolExchangeGates.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorClearanceSameNetormalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Benchmark_1_1Detail_1_1optimized__away__error.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1view__facade_1_1view__as__cursor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/folderopen.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParameterProgram_1_1TokenUUID.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1generate__n__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1Subnet.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IDocumentPadstack.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1chunk__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1replace__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1set__intersection__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolSettingsBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceText.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1sliding__view_3_01Rng_00_01sliding__view__detail_1_1cache_1_1last_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1distance__compare__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolEditShape.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1AREA__CONSTRAINT.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1External__Circuit.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Detail_1_1BoundFlagRefBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1detail_1_1lexer.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolMergeBox2.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TuningWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1exclusive__scan__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1RunContext.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleMatchKeepoutEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1StringContainsMatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceJunctionBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Detail_1_1BoundRef.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ImpFrame.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1adaptor__cursor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classnlohmann_1_1byte__container__with__subtype.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Padstack_1_1MyParameterProgram.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Matchers_1_1Detail_1_1conjunction_3_01Cond_00_01Rest_8_8_8_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Parse.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleImportMap.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1split__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PortEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1Package.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__default__constructible.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1copy__tag.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParametricFilterBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structconcepts_1_1is__nothrow__swappable.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolAddVertex.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1FlagEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1TokenizeSection.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1JOINT.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1delimit__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMoveTrackConnection.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolRenumberPads.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structmeta_1_1extension_1_1apply_3_01Fn_00_01Ret_07Args_8_8_8_08_4.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EntityPreview.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BlockButton.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1NetClassMapper.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1join__bind__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMoveTrackCenter.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1Net.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyValueBool.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CoreSymbol.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSettings.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1chunk__by__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1transform__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SymbolPreview.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structdoj_1_1alphanum__less.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SQLiteShellWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Clara_1_1Detail_1_1ResultValueBase_3_01void_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RenumberPadsWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1RepeatGenerator.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParameterProgram_1_1TokenCommand.png using File::StripNondeterminism::handlers::png
-.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceShape.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1IGeneratorTracker.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TreeWriterArchive.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1invoke__result.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/closed.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structstd_1_1tuple__element_3_01N_00_01_1_1ranges_1_1tagged_3_01Untagged_00_01Tags_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleNetTies.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1Generators.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SelectionFilterDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SelectBlockDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TreeViewStateStore.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1semiregular__box_3_01T_01_6_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleImportDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EnterDatumAngleWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyValueInt.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RulesCheckCacheBoardImage.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSEXPR_1_1INVALID__TYPE__EXCEPTION.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1slice__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolRouteTrackInteractive.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Param.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1take__last__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classSHAPE__COMPOUND.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1view__closure.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GerberWriter_1_1ApertureMacro_1_1Primitive.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1TagAliasRegistry.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RulesWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Detail_1_1has__description.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MultiComponentSelector.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BoardEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1FootprintGeneratorFootag.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construce6fa33688da703b95649da4749cdeb98.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolWithParametric.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1actions_1_1action__closure.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AirwireFilterWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Canvas3DBase.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1experimental_1_1generator.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlaceBusLabel.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleClearanceSilkscreenExposedCopper.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1Features_1_1Arc.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1remove__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1take__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EntityInfoBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1negation.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classLSET.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SymbolPreviewExpandWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1HTTP_1_1RESTClient.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Detail_1_1has__description_3_01T_00_01void__t_3_01decltype_07T_1_1getDescription_07_08_08_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1reverse__view_3_01reverse__view_3_01Rng_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawPlane.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolAddBlockInstance.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1bind__element.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMergeDuplicateJunctions.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1common__range__tag.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PlaneEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1adjacent__filter__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Searcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1TakeGenerator.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1FootprintGeneratorSingle.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1sample__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TagEntry.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classClipperLib_1_1clipperException.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolAddPart.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ExportFileChooser.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Package_1_1MyParameterProgram.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1TestInvokerAsFunction.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPastePlacement.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SymbolPreviewExpandWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMoveTrackConnection.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IBlockSymbolAndSchematicProvider.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1OrderableMPNEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MatchPadsEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1ContainsMatcherMatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PreviewCanvas.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TreeWriterFS.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDataAlignAndDistribute.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1remove__if__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1RandomFloatingGenerator.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Padstack.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1partial__sum__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__default__constructible_3_01std_1_1pair_3_01T1_00_01T2_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1VIA.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1exclusive__scan__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawTrack.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1WithinAbsMatcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MatchPadsEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PolygonUsage.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1Package.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classLSEQ.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1Features_1_1Feature.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MyInstanceMappingProvider.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1MatrixSection.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlacePowerSymbol.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structhorizon_1_1PngWrite.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ClipboardGeneric.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ProjectPool.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LayerBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleMatchComponentEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Test__Data.png using File::StripNondeterminism::handlers::png
+:png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structPNS_1_1NODE_1_1DEFAULT__OBSTACLE__VISITOR.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1RESTRICT__VERTEX__RANGE__CONSTRAINT.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1ordered__map.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolSettingsBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1concat__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolEditPlane.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolBendLineNet.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1group__by__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__default__constructible_3_01const_01std_1_1tuple_3_01Ts_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1DuplicateSymbolWidget.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1TagEntry.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Detail_1_1is__range__impl.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolEditPadParameterSet.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1UnaryExpr.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1EDAData_1_1SubnetToeprint.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Detail_1_1BoundValueRef_3_01std_1_1vector_3_01T_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolCacheCleanupDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AvailablePoolItemEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorLayerPair.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1replace__if__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolCacheBox.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1AutoReg.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleHoleSize.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Generators_1_1GeneratorTracker.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserEntity.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ConfirmCloseDialog.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AxesLollipop.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structmeta_1_1defer__i.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMoveNetSegment.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorConnectivity.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1chunk__view___3_01Rng_00_01false_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1SizeMatchesMatcher.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ActionButton.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible_3_01std_1_1tuple_3_01Ts_8_8_8_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Junction.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1IDocumentDecal.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1sized__range__tag.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorNetClass.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classMyParameterProgram.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1LayerHelpBox.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1KiCadSymbolImportWizard.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SearcherSchematic.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolEditVia.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible_3_01const_01std_1_1pair_3_01T1_00_01T2_01_4_01_4.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1SHOVE.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1DuplicateBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MyLabel.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classClipperLibKiCad_1_1ClipperBase.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PinNameEditor.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structSEXPR_1_1SEXPR__INTEGER.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1always__false.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1emplaced__index__t.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleClearanceCopperKeepout.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BoardDisplayOptionsBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1trim__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__compatible__type__impl.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BusEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDrawLine.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ODB_1_1Features.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1intersperse__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolEditCustomValue.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1TagAliasRegistry.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1take__while__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDataPaste.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ParamQuantityEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1cpp20__join__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1take__exactly__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Clara_1_1Detail_1_1ParserRefImpl.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1NoneBlockProvider.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Generators_1_1TakeGenerator.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PDFLayerEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1drop__last__view_3_01Rng_00_01detail_1_1drop__last__view_1_1mode__bidi_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1closed__iota__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1cache1__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_3_01T_01_4_1_1value_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1EnterDatumScaleWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classDL__WriterA.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleEditorClearanceCopperOther.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1DictParam.png using File::StripNondeterminism::handlers::png
 	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolSmashSilkscreenGraphics.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1take__last__base__fn.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1iota__view.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1range__tag.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolEditorInterface.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BlocksSchematic_1_1BlockItemSchematic.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1DigiKeyAuthWindow.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolPlacePicture.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Context.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1MultiNetSelector.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1common__tuple.png using File::StripNondeterminism::handlers::png
-	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Benchmark_1_1Detail_1_1ChronometerConcept.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1WithinAbsMatcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Test__Load.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1MessageBuilder.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyMetaNetClasses.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1Matchers_1_1HasSizeMatcher.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1AnnotateDialog.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Changeable.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classClipperLib_1_1Clipper.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ProjectPropertiesDialog.png using File::StripNondeterminism::handlers::png
+ction_3_01Cond_00_01Rest_8_8_8_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ClipboardPackage.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1MatchExpr.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolBrowserPackage.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1DuplicateUnitWidget.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/doc.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolSelector.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ClipboardBoard.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1incrementable__traits_3_01T_01const_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1CORNER__COUNT__LIMIT__CONSTRAINT.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PartEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleMatchKeepoutEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1remove__if__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SymbolPreviewBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1StockInfoProviderPartinfo.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__constructible_3_01const_01std_1_1pair_3_01T1_00_01T2_01_4_01_4.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structPNS_1_1HIT__VISITOR.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PoolProjectManagerAppWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolBackannotateConnectionLines_1_1ToolDataBackannotate.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleExportBox.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolMapPackage.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1RuleClearanceSameNet.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1split__when__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classClipperLib_1_1clipperException.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1FabOutputWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Blocks.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolDataEditPlane.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1GitHubLoginWindow.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1unique__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1stride__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1iter__distance__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyEditorDouble.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1SQLite_1_1noncopyable.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1CustomFieldEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1views_1_1intersperse__base__fn.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1tail__view.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structmeta_1_1or__c.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Series__MOSFET.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolData.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ToolChangeSymbol.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1PropertyValueInt.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1KEEP__TOPOLOGY__CONSTRAINT.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1ColorEditor.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1EMI__Model.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structCatch_1_1Clara_1_1Detail_1_1BoundManyLambda.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1BoardRules.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1is__compatible__object__type.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structnlohmann_1_1detail_1_1conjunction.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/structranges_1_1move__tag.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classpybis_1_1Node__Declarations.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1Package.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classCatch_1_1TestRegistry.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classPNS_1_1OBSTACLE__VISITOR.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classClipperLib_1_1PolyNode.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/tab_h.png using File::StripNondeterminism::handlers::png
+	Normalizing debian/horizon-eda/usr/share/doc/horizon-eda/html/classhorizon_1_1DuplicatePartWidget.png using File::StripNondeterminism::handlers::png
    dh_compress
 	cd debian/horizon-eda
 	chmod a-x usr/share/doc/horizon-eda/changelog usr/share/doc/horizon-eda/changelog.Debian usr/share/doc/horizon-eda/pool.pdf usr/share/man/man1/horizon-eda.1 usr/share/man/man1/horizon-imp.1
@@ -57322,9 +57358,9 @@
 	rm -f debian/horizon-eda/DEBIAN/shlibs
    dh_shlibdeps
 	install -m0755 -d debian/horizon-eda/DEBIAN
-	dpkg-shlibdeps -Tdebian/horizon-eda.substvars debian/horizon-eda/usr/lib/python3/dist-packages/horizon.cpython-311-arm-linux-gnueabihf.so debian/horizon-eda/usr/bin/horizon-imp debian/horizon-eda/usr/bin/horizon-eda
-dpkg-shlibdeps: warning: debian/horizon-eda/usr/bin/horizon-imp contains an unresolvable reference to symbol __aeabi_atexit@CXXABI_ARM_1.3.3: it's probably a plugin
+	dpkg-shlibdeps -Tdebian/horizon-eda.substvars debian/horizon-eda/usr/bin/horizon-imp debian/horizon-eda/usr/bin/horizon-eda debian/horizon-eda/usr/lib/python3/dist-packages/horizon.cpython-311-arm-linux-gnueabihf.so
 dpkg-shlibdeps: warning: debian/horizon-eda/usr/bin/horizon-eda contains an unresolvable reference to symbol __aeabi_atexit@CXXABI_ARM_1.3.3: it's probably a plugin
+dpkg-shlibdeps: warning: debian/horizon-eda/usr/bin/horizon-imp contains an unresolvable reference to symbol __aeabi_atexit@CXXABI_ARM_1.3.3: it's probably a plugin
    dh_installdeb
 	install -m0755 -d debian/horizon-eda/DEBIAN
    dh_gencontrol
@@ -57346,8 +57382,8 @@
    dh_builddeb
 	dpkg-deb --root-owner-group --build debian/horizon-eda ..
 	dpkg-deb --root-owner-group --build debian/.debhelper/horizon-eda/dbgsym-root ..
-dpkg-deb: building package 'horizon-eda' in '../horizon-eda_2.4.0-1_armhf.deb'.
 dpkg-deb: building package 'horizon-eda-dbgsym' in '../horizon-eda-dbgsym_2.4.0-1_armhf.deb'.
+dpkg-deb: building package 'horizon-eda' in '../horizon-eda_2.4.0-1_armhf.deb'.
  dpkg-genbuildinfo --build=binary -O../horizon-eda_2.4.0-1_armhf.buildinfo
  dpkg-genchanges --build=binary -O../horizon-eda_2.4.0-1_armhf.changes
 dpkg-genchanges: info: binary-only upload (no source code included)
@@ -57355,12 +57391,14 @@
 dpkg-buildpackage: info: binary-only upload (no source included)
 dpkg-genchanges: info: including full source code in upload
 I: copying local configuration
+I: user script /srv/workspace/pbuilder/31671/tmp/hooks/B01_cleanup starting
+I: user script /srv/workspace/pbuilder/31671/tmp/hooks/B01_cleanup finished
 I: unmounting dev/ptmx filesystem
 I: unmounting dev/pts filesystem
 I: unmounting dev/shm filesystem
 I: unmounting proc filesystem
 I: unmounting sys filesystem
 I: cleaning the build env 
-I: removing directory /srv/workspace/pbuilder/29237 and its subdirectories
-I: Current time: Sat Feb 10 18:31:46 -12 2024
-I: pbuilder-time-stamp: 1707633106
+I: removing directory /srv/workspace/pbuilder/31671 and its subdirectories
+I: Current time: Sun Feb 11 22:42:44 +14 2024
+I: pbuilder-time-stamp: 1707640964