• Poudriere bulk crashes on "No space left on device" and "write error to stdout"

    From John W. O'Brien@john@saltant.com to muc.lists.freebsd.ports on Sat Sep 26 19:55:46 2026
    From Newsgroup: muc.lists.freebsd.ports

    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------TOMYaM3ZEKZnd1n6kVJyhmYr
    Content-Type: multipart/mixed; boundary="------------npRG4gZCeh2sNctTLZJIl6y7";
    protected-headers="v1"; hp="clear"
    Message-ID: <e9394a39-854d-4538-bf97-4ac6614a5967@saltant.com>
    Date: Sat, 26 Sep 2026 19:55:46 -0400
    MIME-Version: 1.0
    User-Agent: Mozilla Thunderbird
    From: "John W. O'Brien" <john@saltant.com>
    Subject: Poudriere bulk crashes on "No space left on device" and "write error
    to stdout"
    To: freebsd-ports@freebsd.org
    Content-Language: en-US
    Autocrypt: addr=john@saltant.com; keydata=
    xjMEaHuh2BYJKwYBBAHaRw8BAQdATC+3kpiX5ueZmp44E0YCUACLuV/0dFIE/5chhhZvhhHN
    IkpvaG4gVy4gTydCcmllbiA8am9obkBzYWx0YW50LmNvbT7CmQQTFgoAQRYhBMdIMgOwjgxM
    7TQqTe+1MpReZ/IgBQJoe6HYAhsDBQkFo5qABQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheA
    AAoJEO+1MpReZ/IgwfEBAJLraZaoLopftdKC4er7L2KHSRHTlIgNWoal1TkUkRZFAQDRzHmB
    ged9AVHpklZa4FvfBdyY+vz0XvtRqp2u2PCzAs44BGh7odgSCisGAQQBl1UBBQEBB0BMALZT
    dxKiH9MTHEqQDAdrTsmiwDJPbeIbm5j7Id1pLAMBCAfCfgQYFgoAJhYhBMdIMgOwjgxM7TQq
    Te+1MpReZ/IgBQJoe6HYAhsMBQkFo5qAAAoJEO+1MpReZ/Ig+QcA/Rmz3npY2h8GZ+f4Y/Zw
    xwApSKy0xjVbewagELH1LDhHAP9TzN5Qo1rI+7DWUPrZKlyU1owzehpeeBYJ23dLd8EsCg== Organization: Saltant Solutions LLC

    --------------npRG4gZCeh2sNctTLZJIl6y7
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    SGVsbG8gRnJlZUJTRC1Qb3J0cywNCg0KSSBzd2l0Y2hlZCBhIGZldyBtb250aHMgYWdvIGZy b20gcnVubmluZyBteSBtYWluIFBvdWRyaWVyZSBidWlsZGVyIG9uIGFuIA0Kb2xkIERlbGwg UG93ZXJFZGdlIHNlcnZlciB0byBydW5uaW5nIGl0IG9uIGFuIEFXUyBFQzIgaW5zdGFuY2Ug DQooYzUuMTJ4bGFyZ2UgaW4gdXMtZWFzdC0yKS4gVGhlIGluc3RhbmNlIHdhcyBpbml0aWFs bHkgZGVwbG95ZWQgZnJvbSB0aGUgDQoiRnJlZUJTRCAxNC40LVJFTEVBU0UtYW1kNjQgVUVG SS1QUkVGRVJSRUQgYmFzZSBaRlMiIEFNSSANCihhbWktMDc1Yjg2NjNkYmQ5ODBjMzUpIGFu ZCBoYXMgc2luY2UgYmVlbiB1cGRhdGVkIHRvIDE0LjUtUkVMRUFTRS4gVGhpcyANCmluc3Rh bmNlIGhhcyBhIDIwMEcgRUJTIHZvbHVtZSBvZiB3aGljaCAxODBHIGlzIGEgWkZTIHBvb2wg d2l0aCByb3VnaGx5IA0KODBHIGZyZWUgYW5kIDIwRyBvZiBzd2FwIHRvIGNvbXBsZW1lbnQg OTZHIG9mIFJBTS4gVGhlIGluc3RhbmNlIGRvZXMgDQpub3RoaW5nIGVsc2UgYmVzaWRlcyBz aGlwcGluZyBidWlsdCBwYWNrYWdlcyB2aWEgTmdpbnguDQoNCldpdGggcmVsYXRpdmVseSBo aWdoIHJlZ3VsYXJpdHktLS1tb3N0LCBidXQgbm90IGFsbCAiYnVsayIgDQpydW5zLS0tcG91 ZHJpZXJlIHdpbGwgdGVybWluYXRlIHdpdGggc29tZSB2YXJpYXRpb24gb2YgdGhlIGZvbGxv d2luZyBtaXggDQpvZiBlcnJvcnMuDQoNCg0KX21rdGVtcDogbWtzdGVtcCBmYWlsZWQgb24g DQovc3J2L3BvdWRyaWVyZS9kYXRhL2xvZ3MvYnVsay8xNDVhbWQ2NC1kZWZhdWx0LWdlbmVy YWwvMjAyNi0wOS0yNl8yMmgwMG0xOXMvLnRtcC0ucG91ZHJpZXJlLnNuYXBfbG9hZGF2Zy5N czdFbm1tUjogDQpObyBzcGFjZSBsZWZ0IG9uIGRldmljZQ0KZWNobzogd3JpdGUgZXJyb3Ig b24gc3Rkb3V0DQpfbWt0ZW1wOiBta3N0ZW1wIGZhaWxlZCBvbiANCi9zcnYvcG91ZHJpZXJl L2RhdGEvbG9ncy9idWxrLzE0NWFtZDY0LWRlZmF1bHQtZ2VuZXJhbC8yMDI2LTA5LTI2XzIy aDAwbTE5cy8udG1wLS5wb3VkcmllcmUuc3RhdHVzLjEwZ1d6RWNZOiANCk5vIHNwYWNlIGxl ZnQgb24gZGV2aWNlDQplcnI6IFJlY3Vyc2l2ZSBlcnJvciBkZXRlY3RlZDogd3JpdGVfYXRv bWljIHVuYWJsZSB0byBjcmVhdGUgdG1wZmlsZSBpbiANCi9zcnYvcG91ZHJpZXJlL2RhdGEv bG9ncy9idWxrLzE0NWFtZDY0LWRlZmF1bHQtZ2VuZXJhbC8yMDI2LTA5LTI2XzIyaDAwbTE5 cw0KX21rdGVtcDogbWtzdGVtcCBmYWlsZWQgb24gDQovc3J2L3BvdWRyaWVyZS9kYXRhL2xv Z3MvYnVsay8xNDVhbWQ2NC1kZWZhdWx0LWdlbmVyYWwvMjAyNi0wOS0yNl8yMmgwMG0xOXMv LnRtcC0ucG91ZHJpZXJlLmVuZGVkLmxkNWJYbTh5OiANCk5vIHNwYWNlIGxlZnQgb24gZGV2 aWNlDQplcnI6IFJlY3Vyc2l2ZSBlcnJvciBkZXRlY3RlZDogd3JpdGVfYXRvbWljIHVuYWJs ZSB0byBjcmVhdGUgdG1wZmlsZSBpbiANCi9zcnYvcG91ZHJpZXJlL2RhdGEvbG9ncy9idWxr LzE0NWFtZDY0LWRlZmF1bHQtZ2VuZXJhbC8yMDI2LTA5LTI2XzIyaDAwbTE5cw0KZWNobzog d3JpdGUgZXJyb3Igb24gc3Rkb3V0DQoNCg0KVGhpcyB1c3VhbGx5IGxlYXZlcyBvbmUgb3Ig dHdvIGJ1aWxkZXIgamFpbHMgcnVubmluZywgYW5kIEkgaGF2ZSBnb3R0ZW4gDQppbiB0aGUg aGFiaXQgb2YgcmVib290aW5nIHRoZSBpbnN0YW5jZSBiZWZvcmUgcmUtc3RhcnRpbmcgdGhl IGJ1aWxkLg0KDQpBIHR5cGljYWwgYnVpbGQgcHVsbHMgaW4gYmV0d2VlbiAxMDAwIGFuZCA1 MDAwIHBvcnRzLiBJIGhhdmUgbm90IA0KZGV0ZWN0ZWQgYSBjb3JyZWxhdGlvbiBiZXR3ZWVu IHRoZSBjcmFzaCBhbmQgYSBzcGVjaWZpYyBwb3J0LCBidXQgSSBoYXZlIA0KYWxzbyBub3Qg YmVlbiBrZWVwaW5nIGVzcGVjaWFsbHkgY2xvc2UgdHJhY2suIFN1YmplY3RpdmVseSwgdGhl IGZhaWx1cmUgDQp1c3VhbGx5IG9jY3VycyBpbiB0aGUgbGF0dGVyIHRoaXJkIG9yIGxhdHRl ciBxdWFydGVyIGJ5IHBvcnQgY291bnQuDQoNCk15IHBvdWRyaWVyZS5jb25mIGlzIG9ubHkg bGlnaHRseSBhZGFwdGVkIGZyb20gc3RvY2ssIGFuZCBub25lIG9mIHRoZSANCm1lbW9yeSBs aW1pdCBwYXJhbWV0ZXJzIGFyZSBtb2RpZmllZCBmcm9tICIoZGVmYXVsdDogbm9uZSkiLg0K DQpJJ20gbm90IHN1cmUgd2hhdCBJIHNob3VsZCBiZSBsb29raW5nIGF0IHRvIG5hcnJvdyBk b3duIHRoZSBjYXVzZSBvZiANCnRoZXNlIGZhaWx1cmVzLiBBbnkgc3VnZ2VzdGlvbnM/DQoN ClRoYW5rIHlvdSwNCkpvaG4NCg==

    --------------npRG4gZCeh2sNctTLZJIl6y7--

    --------------TOMYaM3ZEKZnd1n6kVJyhmYr
    Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature
    Content-Disposition: attachment; filename="OpenPGP_signature.asc"

    -----BEGIN PGP SIGNATURE-----

    wnsEABYIACMWIQRp3Rc8tmfocoH1VwmZTOGrqzAZLwUCarhbgwUDAAAAAAAKCRCZTOGrqzAZLzO5 AP4uVOwsv7xMonE5nSld4sSQOJmPB+0lPtaXpW0JtpfMuQEA8z2UUjE3IoYJ62Lx6Pz3B1YFEBsB yCSUy4vwLe/vCw4=
    =X7rT
    -----END PGP SIGNATURE-----

    --------------TOMYaM3ZEKZnd1n6kVJyhmYr--


    --
    Posted automagically by a mail2news gateway at muc.de e.V.
    Please direct questions, flames, donations, etc. to news-admin@muc.de
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Tomoaki AOKI@junchoon@dec.sakura.ne.jp to muc.lists.freebsd.ports on Sun Sep 27 09:33:41 2026
    From Newsgroup: muc.lists.freebsd.ports

    On Sat, 26 Sep 2026 19:55:46 -0400
    "John W. O'Brien" <john@saltant.com> wrote:

    Hello FreeBSD-Ports,

    I switched a few months ago from running my main Poudriere builder on an
    old Dell PowerEdge server to running it on an AWS EC2 instance
    (c5.12xlarge in us-east-2). The instance was initially deployed from the "FreeBSD 14.4-RELEASE-amd64 UEFI-PREFERRED base ZFS" AMI (ami-075b8663dbd980c35) and has since been updated to 14.5-RELEASE. This instance has a 200G EBS volume of which 180G is a ZFS pool with roughly
    80G free and 20G of swap to complement 96G of RAM. The instance does
    nothing else besides shipping built packages via Nginx.

    With relatively high regularity---most, but not all "bulk"
    runs---poudriere will terminate with some variation of the following mix
    of errors.


    _mktemp: mkstemp failed on /srv/poudriere/data/logs/bulk/145amd64-default-general/2026-09-26_22h00m19s/.tmp-.poudriere.snap_loadavg.Ms7EnmmR:
    No space left on device
    echo: write error on stdout
    _mktemp: mkstemp failed on /srv/poudriere/data/logs/bulk/145amd64-default-general/2026-09-26_22h00m19s/.tmp-.poudriere.status.10gWzEcY:
    No space left on device
    err: Recursive error detected: write_atomic unable to create tmpfile in /srv/poudriere/data/logs/bulk/145amd64-default-general/2026-09-26_22h00m19s _mktemp: mkstemp failed on /srv/poudriere/data/logs/bulk/145amd64-default-general/2026-09-26_22h00m19s/.tmp-.poudriere.ended.ld5bXm8y:
    No space left on device
    err: Recursive error detected: write_atomic unable to create tmpfile in /srv/poudriere/data/logs/bulk/145amd64-default-general/2026-09-26_22h00m19s echo: write error on stdout


    This usually leaves one or two builder jails running, and I have gotten
    in the habit of rebooting the instance before re-starting the build.

    A typical build pulls in between 1000 and 5000 ports. I have not
    detected a correlation between the crash and a specific port, but I have also not been keeping especially close track. Subjectively, the failure usually occurs in the latter third or latter quarter by port count.

    My poudriere.conf is only lightly adapted from stock, and none of the
    memory limit parameters are modified from "(default: none)".

    I'm not sure what I should be looking at to narrow down the cause of
    these failures. Any suggestions?

    Thank you,
    John

    Hi.

    Quite wild guess, but this basically happenes when /tmp
    is eaten up in case "USE_TMPFS=yes" and neither of
    *set TMPFS_LIMIT to limit maximum per-builder consumptions
    *disallow using tmpfs for too huge ports with TMPFS_BLACKLIST
    is done, causing huge ports to eat up /tmp.

    In case /tmp is swap-backed tmpfs without size limit configured,
    the maximum would be (free memory + free swap).

    FYI: I have
    TMPFS_BLACKLIST="chromium llvm* webkit* *webengine*"
    TMPFS_BLACKLIST_TMPDIR=${BASEFS}/data/cache/tmp
    and
    USE_TMPFS=yes
    in my /usr/local/etc/poudriere.conf. But this may vary
    depending on what ports to be built. If you're using
    any of electron, it would be needed to blacklisted.
    For more restricted environments (yours are richer than mine,
    though), lang/rust* and some more would needed to be, too.

    Regards.
    --
    Tomoaki AOKI <junchoon@dec.sakura.ne.jp>


    --
    Posted automagically by a mail2news gateway at muc.de e.V.
    Please direct questions, flames, donations, etc. to news-admin@muc.de
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Edward Sanford Sutton, III@mirror176@hotmail.com to muc.lists.freebsd.ports on Sat Sep 26 18:20:48 2026
    From Newsgroup: muc.lists.freebsd.ports

    On 9/26/26 16:55, John W. O'Brien wrote:
    Hello FreeBSD-Ports,

    I switched a few months ago from running my main Poudriere builder on an
    old Dell PowerEdge server to running it on an AWS EC2 instance
    (c5.12xlarge in us-east-2). The instance was initially deployed from the "FreeBSD 14.4-RELEASE-amd64 UEFI-PREFERRED base ZFS" AMI (ami-075b8663dbd980c35) and has since been updated to 14.5-RELEASE. This instance has a 200G EBS volume of which 180G is a ZFS pool with roughly
    80G free and 20G of swap to complement 96G of RAM. The instance does
    nothing else besides shipping built packages via Nginx.

    With relatively high regularity---most, but not all "bulk" runs---
    poudriere will terminate with some variation of the following mix of
    errors.


    _mktemp: mkstemp failed on /srv/poudriere/data/logs/bulk/145amd64-
    default-
    general/2026-09-26_22h00m19s/.tmp-.poudriere.snap_loadavg.Ms7EnmmR: No
    space left on device
    echo: write error on stdout
    _mktemp: mkstemp failed on /srv/poudriere/data/logs/bulk/145amd64- default-general/2026-09-26_22h00m19s/.tmp-.poudriere.status.10gWzEcY: No space left on device
    err: Recursive error detected: write_atomic unable to create tmpfile
    in /srv/poudriere/data/logs/bulk/145amd64-default- general/2026-09-26_22h00m19s
    _mktemp: mkstemp failed on /srv/poudriere/data/logs/bulk/145amd64- default-general/2026-09-26_22h00m19s/.tmp-.poudriere.ended.ld5bXm8y: No space left on device
    err: Recursive error detected: write_atomic unable to create tmpfile
    in /srv/poudriere/data/logs/bulk/145amd64-default- general/2026-09-26_22h00m19s
    echo: write error on stdout


    This usually leaves one or two builder jails running, and I have gotten
    in the habit of rebooting the instance before re-starting the build.

    If poudriere cannot shut down gracefully on failure then a bug should
    be reported if one doesn't already exist.

    A typical build pulls in between 1000 and 5000 ports. I have not
    detected a correlation between the crash and a specific port, but I have also not been keeping especially close track. Subjectively, the failure usually occurs in the latter third or latter quarter by port count.

    I haven't investigated but I'd assume you could filter through logs
    of builds that did not complete/fail and may be able to check on status through the web interface of past builds if setup.


    My poudriere.conf is only lightly adapted from stock, and none of the
    memory limit parameters are modified from "(default: none)".

    I'm not sure what I should be looking at to narrow down the cause of
    these failures. Any suggestions?

    My TLDR is:
    * Take CPU core count and mathematically find its factors (=2 numbers
    that multiply to the core count)
    example with 32 cores: 1*32, 2*16, 4*8
    * /usr/local/etc/poudriere.conf:PARALLEL_JOBS= a factor < the total core
    count
    * /usr/local/etc/poudriere.conf:ALLOW_MAKE_JOBS=yes
    * /usr/local/etc/poudriere.d/make.conf:MAKE_JOBS_NUMBER= the other factor
    * Keep adjusting PARALLEL lower and MAKE higher until you are happy with
    the way the system is loaded. You can use this combination to set the
    system to try to always be over/under-saturated with work if you pick
    two #s that are more or less than the core count.
    * Some ports do not properly respect MAKE_JOBS_NUMBER. digikam, mongodb,
    and deno come to mind but I don't know if any have fixed that. The
    result is with MAKE_JOBS_NUMBER=6 I have found that 6*6=36 processes are sometimes running which seems to be an issue of a build system inside a
    build system and both receive the same job count.

    Poudriere defaults to the corecount factors of
    PARALLEL_JOBS=corecount and MAKE_JOBS_NUMBER=1 which can easily create a
    worst case RAM use scenario. On my 32GB RAM 4 core + hyperthreaded (=8 "cores") system I normally have PARALLEL=2 and MAKE at 8 but even then I
    still need swap to get through builds. I assume official builders have PARALLEL=cores and MAKE=1 and I know I've seen the poudriere page of
    official jobs say 100% RAM used and 98% swap used so they likely could
    use some tuning themself if that was accurate and still present. I
    assume builds could complete faster if we get the package builders to
    use a minimal amount of swap.


    Some more detailed analysis of options:
    inside poudiere.conf:

    USE_TMPFS=yes
    This default includes writing the port's entire workdir into RAM and as
    I understand it its not compressed storage space. If you have over 20GB
    of extracted content + compiler output then you are spending a lot of
    RAM on a package. I've observed rust at over 30GB but not sure what it currently gets up to. Maybe using ZFS on a memory disk with default compression could reduce memory impact of some work without a noticeable impact to CPU/RAM performance but I haven't benchmarked it.

    TMPFS_BLACKLIST
    This can be used to force selected ports to lose the TMPFS setting so a candidate like rust which may be too big to handle can have its work
    directory go out to disk instead of RAM.

    PARALLEL_JOBS
    With a default at the number of CPUs, this setting causes multiple ports
    to be actively built in parallel. The RAM impact of TMPFS is now the sum
    of all ports actively being worked on.

    ALLOW_MAKE_JOBS
    Disabled by default but when active it permits the build of a single
    port to use multiple jobs. I find the use of RAM per make job (compiler processes are a common high RAM draw) is significantly lower than the
    TMPFS load of many big ports.

    ALLOW_MAKE_JOBS_PACKAGES
    A list of ports that have ALLOW_MAKE_JOBS enabled. This then comes into
    play with the ports tree's MAKE_JOBS_NUMBER whether you considered it or
    not.

    MUTUALLY_EXCLUSIVE_BUILD_PACKAGES
    A list of ports that will not be built until no other job is currently running. In case you cannot keep something like rust building with
    anything else because it alone is too close to max hardware use then add
    it here to lower such load.

    PACKAGE_FETCH_WHITELIST
    If you haven't customized how a port or its dependencies is built that
    is used as a dependency to other ports then you can look into a blacklist/whitelist way of permitting some to be fetched from official repositories.

    PRIORITY_BOOST
    You can set this to a list of ports to focus on first. If you are
    working on too many large things all at once then adding them here might change the order so they don't all get worked on at the same time. Using
    this is more beneficial as it can help keep more builders busy instead
    of a big queue being stuck behind 1 port completing when other unrelated
    stuff was already finished first.

    Using ccache can sometimes make builds complete faster and whenever its
    cache is helping you will also lose the high RAM requirements of running
    the compiler for any given task.

    If you try to play with settings that take only integers and not decimal numbers, sometimes you can use basic math to scale to what you wanted: MAX_MEMORY="400 / 100"
    That would be an overkill way to say 4, but now you can edit the 400 to
    other integers to adjust 10ths and 100ths fraction amounts and could
    push the math further to reach other values.

    I think the TMPFS and MEMORY limit variables cause things exceeding it
    to error out rather than be rescheduled/retried so I haven't really
    found a good way to use them as I'd rather fix the issue instead of mask
    it. Unless the ports tree can tell a scheduler what load to expect for a
    port its not likely that poudriere would be making any good scheduling decisions with it anyway.


    I've had ideas of how poudriere + the ports tree could try to
    optimize job scheduling better but haven't tried to put it into any form
    of code; before poudriere replaced tinderbox I had been thinking of ways
    to try to write a more efficient build system. There are simple and
    exotic ideas where even simple ones would likely help reduce the value
    of job boosting and such without much of a chance to schedule anything
    worse. Other than having a smarter scheduler that could try to fend off certain bad cases automatically, a better build system is likely to only stress systems more.

    Thank you,
    John



    --
    Posted automagically by a mail2news gateway at muc.de e.V.
    Please direct questions, flames, donations, etc. to news-admin@muc.de
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From John W. O'Brien@john@saltant.com to muc.lists.freebsd.ports on Sun Sep 27 11:27:51 2026
    From Newsgroup: muc.lists.freebsd.ports

    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------XWezu16htKCPZysRG0ntHytI
    Content-Type: multipart/mixed; boundary="------------m0CqYo5QYCP0cVgpZVfPMsSz";
    protected-headers="v1"; hp="clear"
    Message-ID: <40d248d0-03d0-43ec-afe3-27b05c14dc8a@saltant.com>
    Date: Sun, 27 Sep 2026 11:27:51 -0400
    MIME-Version: 1.0
    User-Agent: Mozilla Thunderbird
    Subject: Re: Poudriere bulk crashes on "No space left on device" and "write
    error to stdout"
    To: "Edward Sanford Sutton, III" <mirror176@hotmail.com>
    References: <e9394a39-854d-4538-bf97-4ac6614a5967@saltant.com>
    <SA1PR11MB8811D7069032096C4FE9BD76E68E2@SA1PR11MB8811.namprd11.prod.outlook.com>
    Content-Language: en-US
    From: "John W. O'Brien" <john@saltant.com>
    Cc: ports@freebsd.org
    Autocrypt: addr=john@saltant.com; keydata=
    xjMEaHuh2BYJKwYBBAHaRw8BAQdATC+3kpiX5ueZmp44E0YCUACLuV/0dFIE/5chhhZvhhHN
    IkpvaG4gVy4gTydCcmllbiA8am9obkBzYWx0YW50LmNvbT7CmQQTFgoAQRYhBMdIMgOwjgxM
    7TQqTe+1MpReZ/IgBQJoe6HYAhsDBQkFo5qABQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheA
    AAoJEO+1MpReZ/IgwfEBAJLraZaoLopftdKC4er7L2KHSRHTlIgNWoal1TkUkRZFAQDRzHmB
    ged9AVHpklZa4FvfBdyY+vz0XvtRqp2u2PCzAs44BGh7odgSCisGAQQBl1UBBQEBB0BMALZT
    dxKiH9MTHEqQDAdrTsmiwDJPbeIbm5j7Id1pLAMBCAfCfgQYFgoAJhYhBMdIMgOwjgxM7TQq
    Te+1MpReZ/IgBQJoe6HYAhsMBQkFo5qAAAoJEO+1MpReZ/Ig+QcA/Rmz3npY2h8GZ+f4Y/Zw
    xwApSKy0xjVbewagELH1LDhHAP9TzN5Qo1rI+7DWUPrZKlyU1owzehpeeBYJ23dLd8EsCg== Organization: Saltant Solutions LLC
    In-Reply-To: <SA1PR11MB8811D7069032096C4FE9BD76E68E2@SA1PR11MB8811.namprd11.prod.outlook.com>

    --------------m0CqYo5QYCP0cVgpZVfPMsSz
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMjAyNi0wOS0yNiAyMToyMCwgRWR3YXJkIFNhbmZvcmQgU3V0dG9uLCBJSUkgd3JvdGU6 DQo+IE9uIDkvMjYvMjYgMTY6NTUsIEpvaG4gVy4gTydCcmllbiB3cm90ZToNCj4+IEhlbGxv IEZyZWVCU0QtUG9ydHMsDQo+Pg0KPj4gSSBzd2l0Y2hlZCBhIGZldyBtb250aHMgYWdvIGZy b20gcnVubmluZyBteSBtYWluIFBvdWRyaWVyZSBidWlsZGVyIG9uIA0KPj4gYW4gb2xkIERl bGwgUG93ZXJFZGdlIHNlcnZlciB0byBydW5uaW5nIGl0IG9uIGFuIEFXUyBFQzIgaW5zdGFu Y2UgDQo+PiAoYzUuMTJ4bGFyZ2UgaW4gdXMtZWFzdC0yKS4gVGhlIGluc3RhbmNlIHdhcyBp bml0aWFsbHkgZGVwbG95ZWQgZnJvbSANCj4+IHRoZSAiRnJlZUJTRCAxNC40LVJFTEVBU0Ut YW1kNjQgVUVGSS1QUkVGRVJSRUQgYmFzZSBaRlMiIEFNSSANCj4+IChhbWktMDc1Yjg2NjNk YmQ5ODBjMzUpIGFuZCBoYXMgc2luY2UgYmVlbiB1cGRhdGVkIHRvIDE0LjUtUkVMRUFTRS4g DQo+PiBUaGlzIGluc3RhbmNlIGhhcyBhIDIwMEcgRUJTIHZvbHVtZSBvZiB3aGljaCAxODBH IGlzIGEgWkZTIHBvb2wgd2l0aCANCj4+IHJvdWdobHkgODBHIGZyZWUgYW5kIDIwRyBvZiBz d2FwIHRvIGNvbXBsZW1lbnQgOTZHIG9mIFJBTS4gVGhlIA0KPj4gaW5zdGFuY2UgZG9lcyBu b3RoaW5nIGVsc2UgYmVzaWRlcyBzaGlwcGluZyBidWlsdCBwYWNrYWdlcyB2aWEgTmdpbngu DQo+Pg0KPj4gV2l0aCByZWxhdGl2ZWx5IGhpZ2ggcmVndWxhcml0eS0tLW1vc3QsIGJ1dCBu b3QgYWxsICJidWxrIiBydW5zLS0tIA0KPj4gcG91ZHJpZXJlIHdpbGwgdGVybWluYXRlIHdp dGggc29tZSB2YXJpYXRpb24gb2YgdGhlIGZvbGxvd2luZyBtaXggb2YgDQo+PiBlcnJvcnMu DQo+Pg0KPj4NCj4+IF9ta3RlbXA6IG1rc3RlbXAgZmFpbGVkIG9uIC9zcnYvcG91ZHJpZXJl L2RhdGEvbG9ncy9idWxrLzE0NWFtZDY0LSANCj4+IGRlZmF1bHQtIA0KPj4gZ2VuZXJhbC8y MDI2LTA5LTI2XzIyaDAwbTE5cy8udG1wLS5wb3VkcmllcmUuc25hcF9sb2FkYXZnLk1zN0Vu bW1SOiBObyANCj4+IHNwYWNlIGxlZnQgb24gZGV2aWNlDQo+PiBlY2hvOiB3cml0ZSBlcnJv ciBvbiBzdGRvdXQNCj4+IF9ta3RlbXA6IG1rc3RlbXAgZmFpbGVkIG9uIC9zcnYvcG91ZHJp ZXJlL2RhdGEvbG9ncy9idWxrLzE0NWFtZDY0LSANCj4+IGRlZmF1bHQtZ2VuZXJhbC8yMDI2 LTA5LTI2XzIyaDAwbTE5cy8udG1wLS5wb3VkcmllcmUuc3RhdHVzLjEwZ1d6RWNZOiANCj4+ IE5vIHNwYWNlIGxlZnQgb24gZGV2aWNlDQo+PiBlcnI6IFJlY3Vyc2l2ZSBlcnJvciBkZXRl Y3RlZDogd3JpdGVfYXRvbWljIHVuYWJsZSB0byBjcmVhdGUgdG1wZmlsZSANCj4+IGluIC9z cnYvcG91ZHJpZXJlL2RhdGEvbG9ncy9idWxrLzE0NWFtZDY0LWRlZmF1bHQtIA0KPj4gZ2Vu ZXJhbC8yMDI2LTA5LTI2XzIyaDAwbTE5cw0KPj4gX21rdGVtcDogbWtzdGVtcCBmYWlsZWQg b24gL3Nydi9wb3VkcmllcmUvZGF0YS9sb2dzL2J1bGsvMTQ1YW1kNjQtIA0KPj4gZGVmYXVs dC1nZW5lcmFsLzIwMjYtMDktMjZfMjJoMDBtMTlzLy50bXAtLnBvdWRyaWVyZS5lbmRlZC5s ZDViWG04eTogDQo+PiBObyBzcGFjZSBsZWZ0IG9uIGRldmljZQ0KPj4gZXJyOiBSZWN1cnNp dmUgZXJyb3IgZGV0ZWN0ZWQ6IHdyaXRlX2F0b21pYyB1bmFibGUgdG8gY3JlYXRlIHRtcGZp bGUgDQo+PiBpbiAvc3J2L3BvdWRyaWVyZS9kYXRhL2xvZ3MvYnVsay8xNDVhbWQ2NC1kZWZh dWx0LSANCj4+IGdlbmVyYWwvMjAyNi0wOS0yNl8yMmgwMG0xOXMNCj4+IGVjaG86IHdyaXRl IGVycm9yIG9uIHN0ZG91dA0KPj4NCj4+DQo+PiBUaGlzIHVzdWFsbHkgbGVhdmVzIG9uZSBv ciB0d28gYnVpbGRlciBqYWlscyBydW5uaW5nLCBhbmQgSSBoYXZlIA0KPj4gZ290dGVuIGlu IHRoZSBoYWJpdCBvZiByZWJvb3RpbmcgdGhlIGluc3RhbmNlIGJlZm9yZSByZS1zdGFydGlu ZyB0aGUgDQo+PiBidWlsZC4NCj4gDQo+ICDCoCBJZiBwb3VkcmllcmUgY2Fubm90IHNodXQg ZG93biBncmFjZWZ1bGx5IG9uIGZhaWx1cmUgdGhlbiBhIGJ1ZyBzaG91bGQgDQo+IGJlIHJl cG9ydGVkIGlmIG9uZSBkb2Vzbid0IGFscmVhZHkgZXhpc3QuDQoNCkkgZG9uJ3Qgc2VlIGFu eSBleGlzdGluZyBidWdzIHRoYXQgbG9vayBsaWtlIHRoaXMuIEkgdGhpbmsgSSB3b3VsZCBs aWtlIA0KdG8gY29tZSB1cCB3aXRoIGEgdGlkaWVyIHByb2NlZHVyZSB0byByZXByb2R1Y2Ug YmVmb3JlIHJlcG9ydGluZyBhIGJ1Zy4NCg0KPj4gWy4uLl0NCj4gTXkgVExEUiBpczoNCj4g Wy4uLl0NCj4gU29tZSBtb3JlIGRldGFpbGVkIGFuYWx5c2lzIG9mIG9wdGlvbnM6DQo+IGlu c2lkZSBwb3VkaWVyZS5jb25mOg0KPiBbLi4uXQ0KVGhhbmtzIGZvciB0aGUgdGlwcyENCg==


    --------------m0CqYo5QYCP0cVgpZVfPMsSz--

    --------------XWezu16htKCPZysRG0ntHytI
    Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature
    Content-Disposition: attachment; filename="OpenPGP_signature.asc"

    -----BEGIN PGP SIGNATURE-----

    wnsEABYIACMWIQRp3Rc8tmfocoH1VwmZTOGrqzAZLwUCark19wUDAAAAAAAKCRCZTOGrqzAZLzZf AP9Tm2yJ8EyPXjFGtpWofFw/agytCRWEA+HF2BXWeiFfaQD9HAFdtU7XCmTRPoMU/hJQB6x3HTQC 3D3gUYi9fQ754gQ=
    =j5DA
    -----END PGP SIGNATURE-----

    --------------XWezu16htKCPZysRG0ntHytI--


    --
    Posted automagically by a mail2news gateway at muc.de e.V.
    Please direct questions, flames, donations, etc. to news-admin@muc.de
    --- Synchronet 3.22a-Linux NewsLink 1.2