Skip to content

feat(block): add Tracker with NotPresent/Dirty/Zero states#2545

Merged
ValentaTomas merged 5 commits intomainfrom
feat/block-state-tracker
May 4, 2026
Merged

feat(block): add Tracker with NotPresent/Dirty/Zero states#2545
ValentaTomas merged 5 commits intomainfrom
feat/block-state-tracker

Conversation

@ValentaTomas
Copy link
Copy Markdown
Member

@ValentaTomas ValentaTomas commented May 3, 2026

Adds block.Tracker, a non-generic state tracker over a fixed block.State enum with three universal values that cover both UFFD memory handling and NBD overlay tracking:

  • NotPresent (default) — fall through to the previous layer
  • Dirty — materialized in this layer (UFFD faulted page, NBD overlay-owned block)
  • Zero — known-zero without consulting the previous layer (UFFD page removed via DONTNEED/balloon, NBD explicit zero/discard)

Backed by two roaring bitmaps (dirty, zero); NotPresent indices are implicit. Exposes SetRange, Get, and Export (returns clones).

First consumer is #2520 (UFFD per-page state); also used by #2546 for NBD zero-page tracking.

@cursor
Copy link
Copy Markdown

cursor Bot commented May 3, 2026

PR Summary

Medium Risk
Moderate risk because it changes how UFFD faults are recorded and reported, which could break page-state expectations or introduce subtle concurrency/offset bugs. The new bitmap export/snapshot logic also changes ordering and may affect tests that assume prior map-based behavior.

Overview
Introduces block.Tracker, a concurrency-safe page/block state tracker backed by roaring bitmaps, with SetRange, Get, and clone-based Export plus unit tests for transitions and range behavior.

Updates the UFFD test harness to treat wire PageStateEntry.State as block.State, removes the old pageTracker map implementation, and switches fault handling and RPC state snapshots to mark pages as block.Dirty using block index math (header.BlockIdx) and to export dirty/zero pages via the new tracker.

Reviewed by Cursor Bugbot for commit dcb7de4. Bugbot is set up for automated code reviews on this repo. Configure here.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7b5a3f8ab6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/orchestrator/pkg/sandbox/block/state_tracker.go Outdated
Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 7b5a3f8. Configure here.

Comment thread packages/orchestrator/pkg/sandbox/block/state_tracker.go Outdated
Comment thread packages/orchestrator/pkg/sandbox/block/state_tracker.go Outdated
Copy link
Copy Markdown

@claude claude Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — small, self-contained utility with thorough unit tests; no consumers yet.

Extended reasoning...

Overview

This PR adds a new block.StateTracker[S comparable] generic utility (70 lines) backed by two roaring bitmaps, plus a thorough unit test file (97 lines). It exposes SetRange, Get, and Export. The PR is purely additive — no existing files are modified, no callers exist yet, and the consumer (#2541) lands separately.

Security risks

None. This is in-process state tracking on integer page indices with mutex-guarded reads/writes. No I/O, no untrusted input, no privileged operations. Export correctly returns clones to prevent caller mutation from leaking into the tracker (verified in the test).

Level of scrutiny

Low. The change is a pure helper struct with a tight API surface, lives under pkg/sandbox/block, and has no consumers in this PR. Mutex usage is correct (write lock for SetRange, read lock for Get/Export). The uint64 vs uint32 asymmetry between SetRange and Get is documented in a comment and matches roaring's API contract (end can equal 1<<32).

Other factors

Tests cover all transition pairs (default↔a, default↔b, a↔b, idempotent), partial overlap, empty/inverted ranges, and Export aliasing. Author confirms go test -race passes. The bug hunting system found no issues. The switch in SetRange silently no-ops on unknown states, which is a minor footgun if a caller passed a fourth value, but since states are fixed at construction time this is acceptable.

@bchalios
Copy link
Copy Markdown
Contributor

bchalios commented May 4, 2026

Does it really need to be that "generic"? It seems in all cases we need one default case (I assume "not present") and two other states (dirty and removed ?) Are the NBD states that different?

@ValentaTomas ValentaTomas disabled auto-merge May 4, 2026 17:41
@ValentaTomas
Copy link
Copy Markdown
Member Author

Ditched the generic. Now a non-generic block.Tracker over a fixed block.State enum with three universal values — NotPresent (default; fall through to the previous layer), Dirty (materialized in this layer), Zero (known-zero without consulting the previous layer). Same enum covers UFFD (missing / faulted / DONTNEED'd via balloon) and NBD overlay (not-present / overlay-owned / explicit zero or discard).

@ValentaTomas ValentaTomas changed the title feat(block): add generic StateTracker feat(block): add Tracker with NotPresent/Dirty/Zero states May 4, 2026
@codecov
Copy link
Copy Markdown

codecov Bot commented May 4, 2026

❌ 5 Tests Failed:

Tests completed Failed Passed Skipped
2357 5 2352 5
View the top 2 failed test(s) by shortest run time
github.com/e2b-dev/infra/packages/orchestrator/cmd/smoketest::TestSmokeAllFCVersions/fc-v1.14
Stack Traces | 0s run time
=== RUN   TestSmokeAllFCVersions/fc-v1.14
    smoke_test.go:78: creating build 04366233-f822-4e06-9c26-0a7ec243512a with FC v1.14.1_458ca91
->> [stderr] mke2fs 1.47.0 (5-Feb-2023)
->> [stdout] Creating regular file .../build-templates/4cd77cc6-2849-45e0-8f8a-7ee23ff67686/rootfs.filesystem.build
->> [stdout] 64-bit filesystem support is not enabled.  The larger fields afforded by this feature enable full-strength checksumming.  Pass -O 64bit to rectify.
->> [stdout] Creating filesystem with 6400000 4k blocks and 6400576 inodes
Filesystem UUID: 0fbe65e9-e82b-4e06-bc76-1510c065778c
Superblock backups stored on blocks:
->> [stdout] 32768, 6389760
->> [stdout] Allocating group tables:
->> [stdout] 0/196�������
->> [stdout] �������done
->> [stdout] Writing inode tables:
->> [stdout] 0/196�������
->> [stdout] �������done
->> [stdout] Creating journal (32768 blocks):
->> [stdout] done
Writing superblocks and filesystem accounting information:
->> [stdout] 0/196�������
->> [stdout] �������
->> [stdout] done
->> [stderr] resize2fs 1.47.0 (5-Feb-2023)
->> [stdout] Resizing the filesystem on .../build-templates/4cd77cc6-2849-45e0-8f8a-7ee23ff67686/rootfs.filesystem.build to 131072 (4k) blocks.
The filesystem on .../build-templates/4cd77cc6-2849-45e0-8f8a-7ee23ff67686/rootfs.filesystem.build is now 131072 (4k) blocks long.
->> [stdout] tune2fs 1.47.0 (5-Feb-2023)
->> [stderr] resize2fs 1.47.0 (5-Feb-2023)
->> [stdout] Resizing the filesystem on .../build-templates/4cd77cc6-2849-45e0-8f8a-7ee23ff67686/rootfs.filesystem.build to 202240 (4k) blocks.
The filesystem on .../build-templates/4cd77cc6-2849-45e0-8f8a-7ee23ff67686/rootfs.filesystem.build is now 202240 (4k) blocks long.
2026/05/04 19:39:15 tcpproxy: for incoming conn 10.11.0.2:46074, error dialing "91.189.91.81:80": dial tcp 91.189.91.81:80: i/o timeout
2026/05/04 19:40:15 tcpproxy: for incoming conn 10.11.0.2:49614, error dialing "91.189.92.23:80": dial tcp 91.189.92.23:80: i/o timeout
2026/05/04 19:40:45 tcpproxy: for incoming conn 10.11.0.2:42256, error dialing "185.125.190.83:80": dial tcp 185.125.190.83:80: i/o timeout
2026/05/04 19:41:15 tcpproxy: for incoming conn 10.11.0.2:53422, error dialing "91.189.92.24:80": dial tcp 91.189.92.24:80: i/o timeout
2026/05/04 19:41:18 tcpproxy: for incoming conn 10.11.0.2:41186, error dialing "185.125.190.81:80": dial tcp 185.125.190.81:80: i/o timeout
2026/05/04 19:41:48 tcpproxy: for incoming conn 10.11.0.2:45018, error dialing "185.125.190.82:80": dial tcp 185.125.190.82:80: i/o timeout
2026/05/04 19:42:15 tcpproxy: for incoming conn 10.11.0.2:58898, error dialing "91.189.92.23:80": dial tcp 91.189.92.23:80: i/o timeout
2026/05/04 19:42:52 tcpproxy: for incoming conn 10.11.0.2:51350, error dialing "185.125.190.83:80": dial tcp 185.125.190.83:80: i/o timeout
2026/05/04 19:43:15 tcpproxy: for incoming conn 10.11.0.2:41276, error dialing "185.125.190.81:80": dial tcp 185.125.190.81:80: i/o timeout
2026/05/04 19:45:19 tcpproxy: for incoming conn 10.11.0.2:47254, error dialing "91.189.92.24:80": dial tcp 91.189.92.24:80: i/o timeout
2026/05/04 19:46:19 tcpproxy: for incoming conn 10.11.0.2:52786, error dialing "91.189.92.23:80": dial tcp 91.189.92.23:80: i/o timeout
2026/05/04 19:46:49 tcpproxy: for incoming conn 10.11.0.2:34204, error dialing "185.125.190.82:80": dial tcp 185.125.190.82:80: i/o timeout
coverage: [no statements]
github.com/e2b-dev/infra/packages/orchestrator/pkg/nfsproxy::TestIntegrationTest
Stack Traces | 273s run time
=== RUN   TestIntegrationTest
=== PAUSE TestIntegrationTest
=== CONT  TestIntegrationTest
2026-05-04T19:02:13.603Z	INFO	logger/logger.go:156	sandbox network map entry added	{"sandbox.id": "6dad33f9-b33b-41a0-8974-e3e01ad8f521", "sandbox.lifecycle.id": "", "sandbox.ip": "10.0.0.128"}
    e2e_test.go:141: creating volume dir: .../001/team-f2518466-124e-45b0-b7ef-0b2277034d96/vol-d53141d8-9d26-4b62-9f78-2035df82bcd7
2026-05-04T19:02:13.604Z	INFO	logger/logger.go:156	registering port	{"port": 34869}
2026-05-04T19:02:13.605Z	INFO	logger/logger.go:156	[portmap] accepting connection	{"local": "127.0.0.1:43065", "remote": "127.0.0.1:64001"}
2026-05-04T19:02:13.605Z	INFO	logger/logger.go:156	[portmap] PMAPPROC_GETPORT: begin	{"mapping": {"Prog":100003,"Vers":3,"Prot":6,"Port":0}}
2026-05-04T19:02:13.605Z	DEBUG	logger/logger.go:176	[portmap handler] searching for a map	{"prog": 100003, "vers": 3, "prot": 6}
2026-05-04T19:02:13.605Z	DEBUG	logger/logger.go:176	[portmap handler] port found	{"prog": 100003, "vers": 3, "prot": 6, "port": 34869}
2026-05-04T19:02:13.605Z	INFO	logger/logger.go:156	[portmap] PMAPPROC_GETPORT: end	{"result": 34869}
    lifecycle.go:77: 🐳 Creating container for image ubuntu:24.04
    lifecycle.go:83: ✅ Container created: 941a08eae940
    lifecycle.go:89: 🐳 Starting container: 941a08eae940
    lifecycle.go:95: ✅ Container started: 941a08eae940
    lifecycle.go:101: 🔔 Container is ready: 941a08eae940
    e2e_test.go:215: 
        	Error Trace:	.../pkg/nfsproxy/e2e_test.go:215
        	Error:      	Not equal: 
        	            	expected: 0
        	            	actual  : 100
        	Test:       	TestIntegrationTest
        	Messages:   	��������installing nfs tools
        	            	�������t+ [[ -z 172.17.0.1 ]]
        	            	+ [[ -z 34857 ]]
        	            	+ [[ -z /test-volume-1 ]]
        	            	+ echo 'installing nfs tools'
        	            	+ apt update --quiet
        	            	�������R
        	            	WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
        	            	
        	            	�������AIgn:1 http://security.ubuntu.com/ubuntu noble-security InRelease
        	            	�������7Ign:2 http://archive.ubuntu.com/ubuntu noble InRelease
        	            	�������AIgn:1 http://security.ubuntu.com/ubuntu noble-security InRelease
        	            	�������?Ign:3 http://archive.ubuntu.com/ubuntu noble-updates InRelease
        	            	�������AIgn:4 http://archive.ubuntu.com/ubuntu noble-backports InRelease
        	            	�������7Ign:2 http://archive.ubuntu.com/ubuntu noble InRelease
        	            	�������?Ign:3 http://archive.ubuntu.com/ubuntu noble-updates InRelease
        	            	�������AIgn:4 http://archive.ubuntu.com/ubuntu noble-backports InRelease
        	            	�������7Ign:2 http://archive.ubuntu.com/ubuntu noble InRelease
        	            	�������?Ign:3 http://archive.ubuntu.com/ubuntu noble-updates InRelease
        	            	�������AIgn:4 http://archive.ubuntu.com/ubuntu noble-backports InRelease
        	            	�������aErr:2 http://archive.ubuntu.com/ubuntu noble InRelease
        	            	  Connection failed [IP: 91.189.92.23 80]
        	            	��������Err:3 http://archive.ubuntu.com/ubuntu noble-updates InRelease
        	            	  Cannot initiate the connection to archive.ubuntu.com:80 (2a06:bc80:0:1000::18). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::103). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::102). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::102). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::103). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2a06:bc80:0:1000::17). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::101). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::101). - connect (101: Network is unreachable) Could not connect to archive.ubuntu.com:80 (91.189.91.82), connection timed out Could not connect to archive.ubuntu.com:80 (91.189.92.24), connection timed out Could not connect to archive.ubuntu.com:80 (91.189.92.23), connection timed out Could not connect to archive.ubuntu.com:80 (91.189.91.81), connection timed out Could not connect to archive.ubuntu.com:80 (185.125.190.83), connection timed out Could not connect to archive.ubuntu.com:80 (91.189.91.83), connection timed out Could not connect to archive.ubuntu.com:80 (185.125.190.81), connection timed out Could not connect to archive.ubuntu.com:80 (185.125.190.82), connection timed out [IP: 91.189.91.82 80]
        	            	��������Err:4 http://archive.ubuntu.com/ubuntu noble-backports InRelease
        	            	  Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::103). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2a06:bc80:0:1000::17). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::103). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::102). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::102). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2a06:bc80:0:1000::18). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::101). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::101). - connect (101: Network is unreachable) [IP: 91.189.91.82 80]
        	            	�������AIgn:1 http://security.ubuntu.com/ubuntu noble-security InRelease
        	            	�������mErr:1 http://security.ubuntu.com/ubuntu noble-security InRelease
        	            	  Connection failed [IP: 185.125.190.82 80]
        	            	��������Reading package lists...��������
        	            	��������Building dependency tree...��������
        	            	Reading state information...
        	            	��������All packages are up to date.
        	            	�������sW: Failed to fetch http://archive.ubuntu..../dists/noble/InRelease  Connection failed [IP: 91.189.92.23 80]
        	            	��������W: Failed to fetch http://archive.ubuntu..../dists/noble-updates/InRelease  Cannot initiate the connection to archive.ubuntu.com:80 (2a06:bc80:0:1000::18). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::103). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::102). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::102). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::103). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2a06:bc80:0:1000::17). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::101). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::101). - connect (101: Network is unreachable) Could not connect to archive.ubuntu.com:80 (91.189.91.82), connection timed out Could not connect to archive.ubuntu.com:80 (91.189.92.24), connection timed out Could not connect to archive.ubuntu.com:80 (91.189.92.23), connection timed out Could not connect to archive.ubuntu.com:80 (91.189.91.81), connection timed out Could not connect to archive.ubuntu.com:80 (185.125.190.83), connection timed out Could not connect to archive.ubuntu.com:80 (91.189.91.83), connection timed out Could not connect to archive.ubuntu.com:80 (185.125.190.81), connection timed out Could not connect to archive.ubuntu.com:80 (185.125.190.82), connection timed out [IP: 91.189.91.82 80]
        	            	W: Failed to fetch http://archive.ubuntu..../dists/noble-backports/InRelease  Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::103). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2a06:bc80:0:1000::17). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::103). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::102). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::102). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2a06:bc80:0:1000::18). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::101). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::101). - connect (101: Network is unreachable) [IP: 91.189.91.82 80]
        	            	W: Failed to fetch http://security.ubuntu..../dists/noble-security/InRelease  Connection failed [IP: 185.125.190.82 80]
        	            	W: Some index files failed to download. They have been ignored, or old ones used instead.
        	            	�������'+ apt install nfs-common --yes --quiet
        	            	�������R
        	            	WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
        	            	
        	            	��������Reading package lists...��������
        	            	��������Building dependency tree...��������
        	            	Reading state information...
        	            	��������Package nfs-common is not available, but is referred to by another package.
        	            	This may mean that the package is missing, has been obsoleted, or
        	            	is only available from another source
        	            	
        	            	�������6E: Package 'nfs-common' has no installation candidate
    lifecycle.go:107: 🐳 Stopping container: 941a08eae940
    lifecycle.go:113: ✅ Container stopped: 941a08eae940
    lifecycle.go:119: 🐳 Terminating container: 941a08eae940
    lifecycle.go:125: 🚫 Container terminated: 941a08eae940
--- FAIL: TestIntegrationTest (273.34s)
View the full list of 91 ❄️ flaky test(s)
::TestMain

Flake rate in main: 100.00% (Passed 0 times, Failed 1 times)

Stack Traces | 0s run time
2026/05/04 19:27:01 Using host network cidr cidr 10.11.0.0/16
2026/05/04 19:27:01 Using vrt network cidr 10.12.0.0/16
2026/05/04 19:27:01 Using vrt network cidr 10.12.0.0/16
2026/05/04 19:27:01 Using network slot size: 32766
panic: test timed out after 20m0s
	running tests:
		TestSmokeAllFCVersions (20m0s)
		TestSmokeAllFCVersions/fc-v1.14 (8m19s)

goroutine 8659 [running]:
testing.(*M).startAlarm.func1()
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2682 +0x345
created by time.goFunc
	.../hostedtoolcache/go/1.25.9.../src/time/sleep.go:215 +0x2d

goroutine 1 [chan receive, 20 minutes]:
testing.(*T).Run(0xc000183dc0, {0x26adba6?, 0xc000093b30?}, 0x275d860)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2005 +0x485
testing.runTests.func1(0xc000183dc0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2477 +0x37
testing.tRunner(0xc000183dc0, 0xc000093c70)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
testing.runTests(0xc0000133b0, {0x3e2f060, 0x1, 0x1}, {0x7?, 0xc0005e18c0?, 0x3f940c0?})
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2475 +0x4b4
testing.(*M).Run(0xc0001b0be0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2337 +0x63a
main.main()
	_testmain.go:55 +0x9b

goroutine 40 [chan receive, 8 minutes]:
testing.(*T).Run(0xc000504a80, {0xc000817a00?, 0xc000093ef0?}, 0xc001284500)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2005 +0x485
github..../orchestrator/cmd/smoketest_test.TestSmokeAllFCVersions(0xc000504a80)
	.../cmd/smoketest/smoke_test.go:74 +0x289
testing.tRunner(0xc000504a80, 0x275d860)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 87 [chan receive, 19 minutes]:
github.com/inetaf/tcpproxy.(*Proxy).Wait(...)
	.../pkg/mod/github.com/inetaf/tcpproxy@v0.0.0-20250222171855-c4b9df066048/tcpproxy.go:169
github.com/inetaf/tcpproxy.(*Proxy).Run(...)
	.../pkg/mod/github.com/inetaf/tcpproxy@v0.0.0-20250222171855-c4b9df066048/tcpproxy.go:161
github..../orchestrator/pkg/tcpfirewall.(*Proxy).Start(0xc000442be0, {0x2a695c0, 0xc0005d6700})
	.../pkg/tcpfirewall/proxy.go:120 +0x143e
created by github..../orchestrator/cmd/smoketest_test.newTestInfra in goroutine 40
	.../cmd/smoketest/smoke_test.go:200 +0x765

goroutine 29 [select, 8 minutes]:
github........../jellydator/ttlcache/v3.(*Cache[...]).Start(0x2aa0740)
	.../pkg/mod/github.com....../jellydator/ttlcache/v3@v3.4.0/cache.go:689 +0x1c5
created by github..../pkg/sandbox/build.(*DiffStore).Start in goroutine 40
	.../sandbox/build/cache.go:110 +0xaa

goroutine 86 [select, 8 minutes]:
github..../pkg/sandbox/nbd.(*DevicePool).Populate(0xc000e90f60, {0x2a695c0, 0xc0005d6700})
	.../sandbox/nbd/pool.go:159 +0x437
created by github..../orchestrator/cmd/smoketest_test.newTestInfra in goroutine 40
	.../cmd/smoketest/smoke_test.go:193 +0x58e

goroutine 28 [chan send, 8 minutes]:
github..../pkg/sandbox/network.(*Pool).Populate(0xc0001a8090, {0x2a695c0, 0xc0005d6700})
	.../sandbox/network/pool.go:155 +0x2ec
created by github..../orchestrator/cmd/smoketest_test.newTestInfra in goroutine 40
	.../cmd/smoketest/smoke_test.go:207 +0xaa5

goroutine 101 [chan receive, 19 minutes]:
github..../orchestrator/pkg/tcpfirewall.(*Proxy).Start.func4()
	.../pkg/tcpfirewall/proxy.go:116 +0x2c
created by github..../orchestrator/pkg/tcpfirewall.(*Proxy).Start in goroutine 87
	.../pkg/tcpfirewall/proxy.go:115 +0x140b

goroutine 30 [select]:
github..../pkg/sandbox/build.(*DiffStore).startDiskSpaceEviction(_, {_, _}, {{0x1, {0x0, 0x0}, 0x2540be400, {0xc00007eba9, 0x35}, {0x20b2d01, ...}, ...}, ...}, ...)
	.../sandbox/build/cache.go:191 +0x13d
created by github..../pkg/sandbox/build.(*DiffStore).Start in goroutine 40
	.../sandbox/build/cache.go:111 +0x194

goroutine 31 [select, 8 minutes]:
github........../jellydator/ttlcache/v3.(*Cache[...]).Start(0x2aa0c00)
	.../pkg/mod/github.com....../jellydator/ttlcache/v3@v3.4.0/cache.go:689 +0x1c5
created by github..../pkg/sandbox/template.(*Cache).Start in goroutine 40
	.../sandbox/template/cache.go:118 +0x85

goroutine 32 [IO wait, 8 minutes]:
internal/poll.runtime_pollWait(0x7f9ebc744c00, 0x72)
	.../hostedtoolcache/go/1.25.9.../src/runtime/netpoll.go:351 +0x85
internal/poll.(*pollDesc).wait(0xc000444b80?, 0x900000036?, 0x0)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0xc000444b80)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_unix.go:613 +0x28c
net.(*netFD).accept(0xc000444b80)
	.../hostedtoolcache/go/1.25.9.../src/net/fd_unix.go:161 +0x29
net.(*TCPListener).accept(0xc000802040)
	.../hostedtoolcache/go/1.25.9.../src/net/tcpsock_posix.go:159 +0x1b
net.(*TCPListener).Accept(0xc000802040)
	.../hostedtoolcache/go/1.25.9.../src/net/tcpsock.go:380 +0x30
github..../pkg/proxy/tracking.(*Listener).Accept(0xc0006b4048)
	.../proxy/tracking/listener.go:22 +0x22
net/http.(*Server).Serve(0xc000cf8000, {0x2a65fa0, 0xc0006b4048})
	.../hostedtoolcache/go/1.25.9.../net/http/server.go:3463 +0x30c
github..../shared/pkg/proxy.(*Proxy).Serve(...)
	.../pkg/proxy/proxy.go:108
github..../shared/pkg/proxy.(*Proxy).ListenAndServe(0xc000cf8000, {0x2a695c0?, 0xc0005d6700?})
	.../pkg/proxy/proxy.go:104 +0xda
github..../orchestrator/pkg/proxy.(*SandboxProxy).Start(...)
	.../pkg/proxy/proxy.go:170
created by github..../orchestrator/cmd/smoketest_test.newTestInfra in goroutine 40
	.../cmd/smoketest/smoke_test.go:228 +0x1019

goroutine 8377 [select, 8 minutes]:
github..../shared/pkg/utils.(*SetOnce[...]).WaitWithContext(0x2a85780, {0x2a69550, 0xc000889c50})
	.../pkg/utils/set_once.go:106 +0x77
github..../shared/pkg/utils.(*ErrorOnce).WaitWithContext(...)
	.../pkg/utils/error_once.go:49
github..../build/phases/base.(*BaseBuilder).provisionSandbox(0xc00047fb08, {0x2a69550?, 0xc000cbb6e0?}, 0xc0000f6970, 0xc00107e2c0, {{0xc000817a31, 0xb}, {0xc000e865a0, 0x15}, {0xc001728810, ...}, ...}, ...)
	.../phases/base/provision.go:165 +0xadc
github..../build/phases/base.(*BaseBuilder).buildLayerFromOCI(_, {_, _}, _, {0x2, {{0xc000676a50, 0x24}, {0x269d265, 0xf}, {0x269d850, ...}}, ...}, ...)
	.../phases/base/builder.go:216 +0xc09
github..../build/phases/base.(*BaseBuilder).Build(_, {_, _}, _, {_, _}, {{0x0, {{0x0, 0x0}, {0x0, ...}, ...}, ...}, ...}, ...)
	.../phases/base/builder.go:143 +0x3d1
github..../template/build/phases.Run({_, _}, _, _, {{0x1, {0x0, 0x0}, 0x2540be400, {0xc00007eba9, 0x35}, ...}, ...}, ...)
	.../build/phases/phase.go:122 +0xf68
github..../pkg/template/build.runBuild({_, _}, _, {{0x1, {0x0, 0x0}, 0x2540be400, {0xc00007eba9, 0x35}, {0x20b2d01, ...}, ...}, ...}, ...)
	.../template/build/builder.go:360 +0x1e1f
github..../pkg/template/build.(*Builder).Build(0xc000146a80, {_, _}, {{_, _}}, {{0x268cb21, 0x6}, {0x0, 0x0}, {0xc000817a31, ...}, ...}, ...)
	.../template/build/builder.go:228 +0xdb0
github..../orchestrator/cmd/smoketest_test.TestSmokeAllFCVersions.func1(0xc000670380)
	.../cmd/smoketest/smoke_test.go:80 +0x3c8
testing.tRunner(0xc000670380, 0xc001284500)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 40
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 102 [IO wait]:
internal/poll.runtime_pollWait(0x7f9ece369a00, 0x72)
	.../hostedtoolcache/go/1.25.9.../src/runtime/netpoll.go:351 +0x85
internal/poll.(*pollDesc).wait(0xc0001dc880?, 0x900000036?, 0x0)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0xc0001dc880)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_unix.go:613 +0x28c
net.(*netFD).accept(0xc0001dc880)
	.../hostedtoolcache/go/1.25.9.../src/net/fd_unix.go:161 +0x29
net.(*TCPListener).accept(0xc000b289c0)
	.../hostedtoolcache/go/1.25.9.../src/net/tcpsock_posix.go:159 +0x1b
net.(*TCPListener).Accept(0xc000b289c0)
	.../hostedtoolcache/go/1.25.9.../src/net/tcpsock.go:380 +0x30
github..../orchestrator/pkg/tcpfirewall.(*resilientListener).Accept(0xc000e46720)
	.../pkg/tcpfirewall/listener.go:29 +0x3c
github.com/inetaf/tcpproxy.(*Proxy).serveListener(0xc000882a80, 0xc000301490, {0x2a64fa0, 0xc000e46720}, {0xc000b72dc0, 0x2, 0x2})
	.../pkg/mod/github.com/inetaf/tcpproxy@v0.0.0-20250222171855-c4b9df066048/tcpproxy.go:214 +0x7e
created by github.com/inetaf/tcpproxy.(*Proxy).Start in goroutine 87
	.../pkg/mod/github.com/inetaf/tcpproxy@v0.0.0-20250222171855-c4b9df066048/tcpproxy.go:201 +0x194

goroutine 103 [IO wait, 19 minutes]:
internal/poll.runtime_pollWait(0x7f9ebc745000, 0x72)
	.../hostedtoolcache/go/1.25.9.../src/runtime/netpoll.go:351 +0x85
internal/poll.(*pollDesc).wait(0xc0001dca00?, 0x0?, 0x0)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0xc0001dca00)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_unix.go:613 +0x28c
net.(*netFD).accept(0xc0001dca00)
	.../hostedtoolcache/go/1.25.9.../src/net/fd_unix.go:161 +0x29
net.(*TCPListener).accept(0xc000b28a40)
	.../hostedtoolcache/go/1.25.9.../src/net/tcpsock_posix.go:159 +0x1b
net.(*TCPListener).Accept(0xc000b28a40)
	.../hostedtoolcache/go/1.25.9.../src/net/tcpsock.go:380 +0x30
github..../orchestrator/pkg/tcpfirewall.(*resilientListener).Accept(0xc000e467e0)
	.../pkg/tcpfirewall/listener.go:29 +0x3c
github.com/inetaf/tcpproxy.(*Proxy).serveListener(0xc000882a80, 0xc000301490, {0x2a64fa0, 0xc000e467e0}, {0xc000b72e00, 0x2, 0x2})
	.../pkg/mod/github.com/inetaf/tcpproxy@v0.0.0-20250222171855-c4b9df066048/tcpproxy.go:214 +0x7e
created by github.com/inetaf/tcpproxy.(*Proxy).Start in goroutine 87
	.../pkg/mod/github.com/inetaf/tcpproxy@v0.0.0-20250222171855-c4b9df066048/tcpproxy.go:201 +0x194

goroutine 114 [IO wait, 19 minutes]:
internal/poll.runtime_pollWait(0x7f9ebc744e00, 0x72)
	.../hostedtoolcache/go/1.25.9.../src/runtime/netpoll.go:351 +0x85
internal/poll.(*pollDesc).wait(0xc0001dca80?, 0x0?, 0x0)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0xc0001dca80)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_unix.go:613 +0x28c
net.(*netFD).accept(0xc0001dca80)
	.../hostedtoolcache/go/1.25.9.../src/net/fd_unix.go:161 +0x29
net.(*TCPListener).accept(0xc0001b4140)
	.../hostedtoolcache/go/1.25.9.../src/net/tcpsock_posix.go:159 +0x1b
net.(*TCPListener).Accept(0xc0001b4140)
	.../hostedtoolcache/go/1.25.9.../src/net/tcpsock.go:380 +0x30
github..../orchestrator/pkg/tcpfirewall.(*resilientListener).Accept(0xc001080030)
	.../pkg/tcpfirewall/listener.go:29 +0x3c
github.com/inetaf/tcpproxy.(*Proxy).serveListener(0xc000882a80, 0xc000301490, {0x2a64fa0, 0xc001080030}, {0xc000b7c6e0, 0x1, 0x1})
	.../pkg/mod/github.com/inetaf/tcpproxy@v0.0.0-20250222171855-c4b9df066048/tcpproxy.go:214 +0x7e
created by github.com/inetaf/tcpproxy.(*Proxy).Start in goroutine 87
	.../pkg/mod/github.com/inetaf/tcpproxy@v0.0.0-20250222171855-c4b9df066048/tcpproxy.go:201 +0x194

goroutine 115 [chan receive, 19 minutes]:
github.com/inetaf/tcpproxy.(*Proxy).awaitFirstError(...)
	.../pkg/mod/github.com/inetaf/tcpproxy@v0.0.0-20250222171855-c4b9df066048/tcpproxy.go:208
created by github.com/inetaf/tcpproxy.(*Proxy).Start in goroutine 87
	.../pkg/mod/github.com/inetaf/tcpproxy@v0.0.0-20250222171855-c4b9df066048/tcpproxy.go:203 +0x3b9

goroutine 8576 [IO wait]:
internal/poll.runtime_pollWait(0x7f9ebc704c00, 0x72)
	.../hostedtoolcache/go/1.25.9.../src/runtime/netpoll.go:351 +0x85
internal/poll.(*pollDesc).wait(0xc000132300?, 0xc00108abc0?, 0x0)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:89
internal/poll.spliceDrain(0x23, 0xc000132300, 0x100000)
	.../hostedtoolcache/go/1.25.9.../internal/poll/splice_linux.go:107 +0x219
internal/poll.Splice(0xc001844100, 0xc000132300, 0x7fffffffffffffff)
	.../hostedtoolcache/go/1.25.9.../internal/poll/splice_linux.go:45 +0x12d
net.spliceFrom(0xc000800f60?, {0x2a2f740?, 0xc001092040?})
	.../hostedtoolcache/go/1.25.9.../src/net/splice_linux.go:44 +0x126
net.(*TCPConn).readFrom(0xc000dae010, {0x2a2f740, 0xc001092040})
	.../hostedtoolcache/go/1.25.9.../src/net/tcpsock_posix.go:48 +0x25
net.(*TCPConn).ReadFrom(0xc000dae010, {0x2a2f740?, 0xc001092040?})
	.../hostedtoolcache/go/1.25.9.../src/net/tcpsock.go:165 +0x30
io.copyBuffer({0x7f9ebc6007c0, 0xc000dae010}, {0x2a2f740, 0xc001092040}, {0x0, 0x0, 0x0})
	.../hostedtoolcache/go/1.25.9.../src/io/io.go:415 +0x151
io.Copy(...)
	.../hostedtoolcache/go/1.25.9.../src/io/io.go:388
net.genericWriteTo(0x7f9ebc6007c0?, {0x7f9ebc6007c0, 0xc000dae010})
	.../hostedtoolcache/go/1.25.9.../src/net/net.go:796 +0x4f
net.(*TCPConn).writeTo(0xc000dae028, {0x7f9ebc6007c0, 0xc000dae010})
	.../hostedtoolcache/go/1.25.9.../src/net/tcpsock_posix.go:61 +0x4d
net.(*TCPConn).WriteTo(0xc000dae028, {0x7f9ebc6007c0?, 0xc000dae010?})
	.../hostedtoolcache/go/1.25.9.../src/net/tcpsock.go:177 +0x30
io.copyBuffer({0x7f9ebc6007c0, 0xc000dae010}, {0x2a2f720, 0xc000dae028}, {0x0, 0x0, 0x0})
	.../hostedtoolcache/go/1.25.9.../src/io/io.go:411 +0x9d
io.Copy(...)
	.../hostedtoolcache/go/1.25.9.../src/io/io.go:388
github.com/inetaf/tcpproxy.proxyCopy(0xc0013c0380, {0x2a7bf70?, 0xc001d84180?}, {0x2a7bf18?, 0xc000dae028?})
	.../pkg/mod/github.com/inetaf/tcpproxy@v0.0.0-20250222171855-c4b9df066048/tcpproxy.go:464 +0x27b
created by github.com/inetaf/tcpproxy.(*DialProxy).HandleConn in goroutine 8575
	.../pkg/mod/github.com/inetaf/tcpproxy@v0.0.0-20250222171855-c4b9df066048/tcpproxy.go:408 +0x3c8

goroutine 8417 [IO wait, 8 minutes]:
internal/poll.runtime_pollWait(0x7f9ebc5be800, 0x72)
	.../hostedtoolcache/go/1.25.9.../src/runtime/netpoll.go:351 +0x85
internal/poll.(*pollDesc).wait(0xc001189f20?, 0xc0007ac000?, 0x1)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc001189f20, {0xc0007ac000, 0x8000, 0x8000})
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_unix.go:165 +0x279
os.(*File).read(...)
	.../hostedtoolcache/go/1.25.9.../src/os/file_posix.go:29
os.(*File).Read(0xc000daf848, {0xc0007ac000?, 0x481b3f?, 0x8?})
	.../hostedtoolcache/go/1.25.9.../src/os/file.go:144 +0x4f
io.copyBuffer({0x2a2da40, 0xc0006b4600}, {0x2a2d7e0, 0xc001d801c0}, {0x0, 0x0, 0x0})
	.../hostedtoolcache/go/1.25.9.../src/io/io.go:429 +0x190
io.Copy(...)
	.../hostedtoolcache/go/1.25.9.../src/io/io.go:388
os.genericWriteTo(0xc000daf848?, {0x2a2da40, 0xc0006b4600})
	.../hostedtoolcache/go/1.25.9.../src/os/file.go:295 +0x4f
os.(*File).WriteTo(0xc000daf848, {0x2a2da40, 0xc0006b4600})
	.../hostedtoolcache/go/1.25.9.../src/os/file.go:273 +0x9c
io.copyBuffer({0x2a2da40, 0xc0006b4600}, {0x2a2d860, 0xc000daf848}, {0x0, 0x0, 0x0})
	.../hostedtoolcache/go/1.25.9.../src/io/io.go:411 +0x9d
io.Copy(...)
	.../hostedtoolcache/go/1.25.9.../src/io/io.go:388
os/exec.(*Cmd).writerDescriptor.func1()
	.../hostedtoolcache/go/1.25.9.../os/exec/exec.go:596 +0x34
os/exec.(*Cmd).Start.func2(0xc0013b61c0?)
	.../hostedtoolcache/go/1.25.9.../os/exec/exec.go:749 +0x2c
created by os/exec.(*Cmd).Start in goroutine 8377
	.../hostedtoolcache/go/1.25.9.../os/exec/exec.go:748 +0x935

goroutine 8466 [IO wait]:
internal/poll.runtime_pollWait(0x7f9ebc5be000, 0x72)
	.../hostedtoolcache/go/1.25.9.../src/runtime/netpoll.go:351 +0x85
internal/poll.(*pollDesc).wait(0xc001154900?, 0xc0014b7855?, 0x1)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc001154900, {0xc0014b7855, 0xe47ab, 0xe47ab})
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_unix.go:165 +0x279
os.(*File).read(...)
	.../hostedtoolcache/go/1.25.9.../src/os/file_posix.go:29
os.(*File).Read(0xc000daf878, {0xc0014b7855?, 0xc00052dcf8?, 0x41fab4?})
	.../hostedtoolcache/go/1.25.9.../src/os/file.go:144 +0x4f
bufio.(*Scanner).Scan(0xc00052df28)
	.../hostedtoolcache/go/1.25.9.../src/bufio/scan.go:219 +0x83e
github..../pkg/sandbox/fc.(*Process).startMetricsReader.func2()
	.../sandbox/fc/fc_metrics.go:185 +0x70c
created by github..../pkg/sandbox/fc.(*Process).startMetricsReader in goroutine 8377
	.../sandbox/fc/fc_metrics.go:147 +0x189

goroutine 8469 [select]:
net/http.(*persistConn).writeLoop(0xc0010d8000)
	.../hostedtoolcache/go/1.25.9.../net/http/transport.go:2600 +0xe7
created by net/http.(*Transport).dialConn in goroutine 8467
	.../hostedtoolcache/go/1.25.9.../net/http/transport.go:1948 +0x17a5

goroutine 8421 [chan receive, 8 minutes]:
github..../shared/pkg/utils.(*SetOnce[...]).Wait(...)
	.../pkg/utils/set_once.go:83
github..../shared/pkg/utils.(*ErrorOnce).Wait(0x1?)
	.../pkg/utils/error_once.go:33 +0x25
github..../orchestrator/pkg/sandbox.(*Factory).CreateSandbox.func6()
	.../pkg/sandbox/sandbox.go:527 +0x10d
created by github..../orchestrator/pkg/sandbox.(*Factory).CreateSandbox in goroutine 8377
	.../pkg/sandbox/sandbox.go:520 +0x1f13

goroutine 8468 [IO wait]:
internal/poll.runtime_pollWait(0x7f9ebc704a00, 0x72)
	.../hostedtoolcache/go/1.25.9.../src/runtime/netpoll.go:351 +0x85
internal/poll.(*pollDesc).wait(0xc001844080?, 0xc006cbb000?, 0x0)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc001844080, {0xc006cbb000, 0x1000, 0x1000})
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_unix.go:165 +0x279
net.(*netFD).Read(0xc001844080, {0xc006cbb000?, 0x40c554?, 0x0?})
	.../hostedtoolcache/go/1.25.9.../src/net/fd_posix.go:68 +0x25
net.(*conn).Read(0xc001092030, {0xc006cbb000?, 0x40c345?, 0xc000d7e390?})
	.../hostedtoolcache/go/1.25.9.../src/net/net.go:196 +0x45
net/http.(*persistConn).Read(0xc0010d8000, {0xc006cbb000?, 0x7f9c05?, 0x2a2d880?})
	.../hostedtoolcache/go/1.25.9.../net/http/transport.go:2125 +0x47
bufio.(*Reader).fill(0xc0010882a0)
	.../hostedtoolcache/go/1.25.9.../src/bufio/bufio.go:113 +0x103
bufio.(*Reader).Peek(0xc0010882a0, 0x1)
	.../hostedtoolcache/go/1.25.9.../src/bufio/bufio.go:152 +0x53
net/http.(*persistConn).readLoop(0xc0010d8000)
	.../hostedtoolcache/go/1.25.9.../net/http/transport.go:2278 +0x172
created by net/http.(*Transport).dialConn in goroutine 8467
	.../hostedtoolcache/go/1.25.9.../net/http/transport.go:1947 +0x174f

goroutine 6797 [select, 2 minutes]:
github..../orchestrator/pkg/sandbox.(*Checks).logHealth(0xc001b92240, {0x2a69588, 0xc001184b40})
	.../pkg/sandbox/checks.go:78 +0x165
github..../orchestrator/pkg/sandbox.(*Checks).Start(0xc001b92240, {0x2a69550?, 0xc00066c7b0?})
	.../pkg/sandbox/checks.go:56 +0xd8
created by github..../orchestrator/pkg/sandbox.(*Factory).ResumeSandbox in goroutine 33
	.../pkg/sandbox/sandbox.go:890 +0x228b

goroutine 8577 [IO wait]:
internal/poll.runtime_pollWait(0x7f9ebc7c6400, 0x72)
	.../hostedtoolcache/go/1.25.9.../src/runtime/netpoll.go:351 +0x85
internal/poll.(*pollDesc).wait(0xc001844100?, 0xc00108bbc0?, 0x0)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:89
internal/poll.spliceDrain(0x21, 0xc001844100, 0x100000)
	.../hostedtoolcache/go/1.25.9.../internal/poll/splice_linux.go:107 +0x219
internal/poll.Splice(0xc000132300, 0xc001844100, 0x7fffffffffffffff)
	.../hostedtoolcache/go/1.25.9.../internal/poll/splice_linux.go:45 +0x12d
net.spliceFrom(0xc000aa94c0?, {0x2a2f740?, 0xc000dae030?})
	.../hostedtoolcache/go/1.25.9.../src/net/splice_linux.go:44 +0x126
net.(*TCPConn).readFrom(0xc000dae028, {0x2a2f740, 0xc000dae030})
	.../hostedtoolcache/go/1.25.9.../src/net/tcpsock_posix.go:48 +0x25
net.(*TCPConn).ReadFrom(0xc000dae028, {0x2a2f740?, 0xc000dae030?})
	.../hostedtoolcache/go/1.25.9.../src/net/tcpsock.go:165 +0x30
io.copyBuffer({0x7f9ebc6007c0, 0xc000dae028}, {0x2a2f740, 0xc000dae030}, {0x0, 0x0, 0x0})
	.../hostedtoolcache/go/1.25.9.../src/io/io.go:415 +0x151
io.Copy(...)
	.../hostedtoolcache/go/1.25.9.../src/io/io.go:388
net.genericWriteTo(0x7f9ebc6007c0?, {0x7f9ebc6007c0, 0xc000dae028})
	.../hostedtoolcache/go/1.25.9.../src/net/net.go:796 +0x4f
net.(*TCPConn).writeTo(0xc000dae010, {0x7f9ebc6007c0, 0xc000dae028})
	.../hostedtoolcache/go/1.25.9.../src/net/tcpsock_posix.go:61 +0x4d
net.(*TCPConn).WriteTo(0xc000dae010, {0x7f9ebc6007c0?, 0xc000dae028?})
	.../hostedtoolcache/go/1.25.9.../src/net/tcpsock.go:177 +0x30
io.copyBuffer({0x7f9ebc6007c0, 0xc000dae028}, {0x2a2f720, 0xc000dae010}, {0x0, 0x0, 0x0})
	.../hostedtoolcache/go/1.25.9.../src/io/io.go:411 +0x9d
io.Copy(...)
	.../hostedtoolcache/go/1.25.9.../src/io/io.go:388
github.com/inetaf/tcpproxy.proxyCopy(0xc0013c0380, {0x2a7bf18?, 0xc000dae028?}, {0x2a7bf70?, 0xc001d84180?})
	.../pkg/mod/github.com/inetaf/tcpproxy@v0.0.0-20250222171855-c4b9df066048/tcpproxy.go:464 +0x27b
created by github.com/inetaf/tcpproxy.(*DialProxy).HandleConn in goroutine 8575
	.../pkg/mod/github.com/inetaf/tcpproxy@v0.0.0-20250222171855-c4b9df066048/tcpproxy.go:409 +0x448

goroutine 8451 [chan receive, 8 minutes]:
github..../pkg/sandbox/fc.(*Process).startMetricsReader.func2.1()
	.../sandbox/fc/fc_metrics.go:178 +0x30
created by github..../pkg/sandbox/fc.(*Process).startMetricsReader.func2 in goroutine 8466
	.../sandbox/fc/fc_metrics.go:177 +0x649

goroutine 7457 [select]:
github..../pkg/sandbox/fc.(*Process).startMetricsReader.func1()
	.../sandbox/fc/fc_metrics.go:133 +0x10b
created by github..../pkg/sandbox/fc.(*Process).startMetricsReader in goroutine 8377
	.../sandbox/fc/fc_metrics.go:128 +0xf8

goroutine 8415 [select]:
github..../orchestrator/pkg/sandbox.(*HostStatsCollector).Start(0xc001120a80, {0x2a69550, 0xc000889dd0})
	.../pkg/sandbox/hoststats_collector.go:152 +0x51d
created by github..../orchestrator/pkg/sandbox.initializeHostStatsCollector in goroutine 8377
	.../pkg/sandbox/hoststats.go:48 +0x525

goroutine 8434 [select, 2 minutes]:
io.(*pipe).read(0xc0012a1440, {0xc006cba7a9, 0x857, 0x65?})
	.../hostedtoolcache/go/1.25.9.../src/io/pipe.go:57 +0xa5
io.(*PipeReader).Read(0xc006cba743?, {0xc006cba7a9?, 0x8bd?, 0x41f75b?})
	.../hostedtoolcache/go/1.25.9.../src/io/pipe.go:134 +0x1a
bufio.(*Scanner).Scan(0xc00108fee0)
	.../hostedtoolcache/go/1.25.9.../src/bufio/scan.go:219 +0x83e
github..../build/phases/base.(*BaseBuilder).provisionSandbox.func1()
	.../phases/base/provision.go:98 +0x13c
created by github..../build/phases/base.(*BaseBuilder).provisionSandbox in goroutine 8377
	.../phases/base/provision.go:91 +0x53b

goroutine 8416 [IO wait]:
internal/poll.runtime_pollWait(0x7f9ece369800, 0x72)
	.../hostedtoolcache/go/1.25.9.../src/runtime/netpoll.go:351 +0x85
internal/poll.(*pollDesc).wait(0xc001189e60?, 0xc00073e000?, 0x1)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc001189e60, {0xc00073e000, 0x8000, 0x8000})
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_unix.go:165 +0x279
os.(*File).read(...)
	.../hostedtoolcache/go/1.25.9.../src/os/file_posix.go:29
os.(*File).Read(0xc000daf830, {0xc00073e000?, 0x7e?, 0x8?})
	.../hostedtoolcache/go/1.25.9.../src/os/file.go:144 +0x4f
io.copyBuffer({0x2a2eba0, 0xc0006b45e8}, {0x2a2d7e0, 0xc000d380b8}, {0x0, 0x0, 0x0})
	.../hostedtoolcache/go/1.25.9.../src/io/io.go:429 +0x190
io.Copy(...)
	.../hostedtoolcache/go/1.25.9.../src/io/io.go:388
os.genericWriteTo(0xc000daf830?, {0x2a2eba0, 0xc0006b45e8})
	.../hostedtoolcache/go/1.25.9.../src/os/file.go:295 +0x4f
os.(*File).WriteTo(0xc000daf830, {0x2a2eba0, 0xc0006b45e8})
	.../hostedtoolcache/go/1.25.9.../src/os/file.go:273 +0x9c
io.copyBuffer({0x2a2eba0, 0xc0006b45e8}, {0x2a2d860, 0xc000daf830}, {0x0, 0x0, 0x0})
	.../hostedtoolcache/go/1.25.9.../src/io/io.go:411 +0x9d
io.Copy(...)
	.../hostedtoolcache/go/1.25.9.../src/io/io.go:388
os/exec.(*Cmd).writerDescriptor.func1()
	.../hostedtoolcache/go/1.25.9.../os/exec/exec.go:596 +0x34
os/exec.(*Cmd).Start.func2(0xc000bba150?)
	.../hostedtoolcache/go/1.25.9.../os/exec/exec.go:749 +0x2c
created by os/exec.(*Cmd).Start in goroutine 8377
	.../hostedtoolcache/go/1.25.9.../os/exec/exec.go:748 +0x935

goroutine 8450 [syscall, 8 minutes]:
syscall.Syscall6(0xf7, 0x3, 0x25, 0xc001388518, 0x4, 0xc0008103f0, 0x0)
	.../hostedtoolcache/go/1.25.9.../src/syscall/syscall_linux.go:96 +0x39
internal/syscall/unix.Waitid(0x0?, 0x514be5?, 0x2a2d880?, 0x0?, 0x0?)
	.../hostedtoolcache/go/1.25.9.../syscall/unix/waitid_linux.go:18 +0x39
os.(*Process).pidfdWait.func1(...)
	.../hostedtoolcache/go/1.25.9.../src/os/pidfd_linux.go:109
os.ignoringEINTR(...)
	.../hostedtoolcache/go/1.25.9.../src/os/file_posix.go:256
os.(*Process).pidfdWait(0xc000dab180)
	.../hostedtoolcache/go/1.25.9.../src/os/pidfd_linux.go:108 +0x1a9
os.(*Process).wait(0x0?)
	.../hostedtoolcache/go/1.25.9.../src/os/exec_unix.go:25 +0x1a
os.(*Process).Wait(...)
	.../hostedtoolcache/go/1.25.9.../src/os/exec.go:340
os/exec.(*Cmd).Wait(0xc001120900)
	.../hostedtoolcache/go/1.25.9.../os/exec/exec.go:922 +0x45
github..../pkg/sandbox/fc.(*Process).configure.func1()
	.../sandbox/fc/process.go:258 +0xc5
created by github..../pkg/sandbox/fc.(*Process).configure in goroutine 8377
	.../sandbox/fc/process.go:254 +0xa6a

goroutine 8575 [chan receive]:
github.com/inetaf/tcpproxy.(*DialProxy).HandleConn(0xc0006c79b8, {0x2a7bf70, 0xc001d84180})
	.../pkg/mod/github.com/inetaf/tcpproxy@v0.0.0-20250222171855-c4b9df066048/tcpproxy.go:410 +0x454
github..../orchestrator/pkg/tcpfirewall.proxy({0x2a695c0, 0xc0005d6700}, {0x2a7bf70, 0xc001d84180}, {0xc000e86090, 0x11}, 0xc0005f24e0, {0x268aca0, 0x4})
	.../pkg/tcpfirewall/handlers.go:106 +0x167
github..../orchestrator/pkg/tcpfirewall.domainHandler({0x2a695c0, 0xc0005d6700}, {0x2a7bf70, 0xc001d84180}, {0xc000bb8110, 0x10, 0x10}, 0x50, 0x26907fc?, 0xc001092010, ...)
	.../pkg/tcpfirewall/handlers.go:68 +0x597
github..../orchestrator/pkg/tcpfirewall.(*connectionHandler).HandleConn.func1({0x2a695c0?, 0xc0005d6700?}, {0x2a7bf70?, 0xc001d84180?}, {0xc000bb8110?, 0x25df0a0?, 0xc00108acc8?}, 0xc00108ace0?, 0x7da065?, 0xc001092010, ...)
	.../pkg/tcpfirewall/proxy.go:269 +0xe3
github..../orchestrator/pkg/tcpfirewall.(*connectionHandler).HandleConn(0xc0005c5400, {0x2a7bf70, 0xc001d84180})
	.../pkg/tcpfirewall/proxy.go:272 +0x8c3
github.com/inetaf/tcpproxy.(*Proxy).serveConn(0xc000415020?, {0x2a7bf18, 0xc000dae010}, {0xc000b72dc0, 0x2, 0xc0010d1798?})
	.../pkg/mod/github.com/inetaf/tcpproxy@v0.0.0-20250222171855-c4b9df066048/tcpproxy.go:237 +0x308
created by github.com/inetaf/tcpproxy.(*Proxy).serveListener in goroutine 102
	.../pkg/mod/github.com/inetaf/tcpproxy@v0.0.0-20250222171855-c4b9df066048/tcpproxy.go:219 +0x65
FAIL	github..../orchestrator/cmd/smoketest	1200.034s
::TestMain

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
panic: test timed out after 10m0s
	running tests:
		TestDeleteTemplate (4m59s)
		TestDeleteTemplateFromAnotherTeamAPIKey (4m59s)
		TestDeleteTemplateFromAnotherTeamAccessToken (4m59s)
		TestDeleteTemplateWithAccessToken (4m59s)

goroutine 6457 [running]:
testing.(*M).startAlarm.func1()
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2682 +0x345
created by time.goFunc
	.../hostedtoolcache/go/1.25.9.../src/time/sleep.go:215 +0x2d

goroutine 1 [chan receive, 5 minutes]:
testing.tRunner.func1()
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1891 +0x451
testing.tRunner(0xc0006028c0, 0xc000595c70)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1940 +0x123
testing.runTests(0xc000013038, {0x222d4e0, 0x37, 0x37}, {0x7?, 0xc0002dd180?, 0x223dc40?})
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2475 +0x4b4
testing.(*M).Run(0xc00030b680)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2337 +0x63a
main.main()
	_testmain.go:153 +0x9b

goroutine 50 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc000602e00)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestTemplateBuildENV(0xc000602e00)
	.../api/templates/build_template_test.go:173 +0x2a
testing.tRunner(0xc000602e00, 0x1596e58)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 51 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc000603180)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestTemplateBuildWORKDIR(0xc000603180)
	.../api/templates/build_template_test.go:380 +0x2a
testing.tRunner(0xc000603180, 0x1596eb0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 52 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc000603500)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestTemplateBuildCache(0xc000603500)
	.../api/templates/build_template_test.go:435 +0x2a
testing.tRunner(0xc000603500, 0x1596e50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 53 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc000603880)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestTemplateBuildFromTemplate(0xc000603880)
	.../api/templates/build_template_test.go:471 +0x2a
testing.tRunner(0xc000603880, 0x1596e60)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 54 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc000603c00)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestTemplateBuildFromTemplateCommandOverride(0xc000603c00)
	.../api/templates/build_template_test.go:531 +0x2a
testing.tRunner(0xc000603c00, 0x1596e70)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 55 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc000583180)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestTemplateBuildFromTemplateInheritance(0xc000583180)
	.../api/templates/build_template_test.go:601 +0x2a
testing.tRunner(0xc000583180, 0x1596e78)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 56 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc000583500)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestTemplateBuildFromTemplateStartCommand(0xc000583500)
	.../api/templates/build_template_test.go:662 +0x2a
testing.tRunner(0xc000583500, 0x1596e88)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 57 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc000583880)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestTemplateBuildFromTemplateBaseCommandsInheritance(0xc000583880)
	.../api/templates/build_template_test.go:708 +0x2a
testing.tRunner(0xc000583880, 0x1596e68)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 58 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc000583c00)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestTemplateBuildFromTemplateLayered(0xc000583c00)
	.../api/templates/build_template_test.go:768 +0x2a
testing.tRunner(0xc000583c00, 0x1596e80)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 59 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc00019e1c0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestTemplateBuildStartReadyCommandExecution(0xc00019e1c0)
	.../api/templates/build_template_test.go:857 +0x2a
testing.tRunner(0xc00019e1c0, 0x1596ea8)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 60 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc00019e540)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestTemplateBuildWithDifferentSourceImages(0xc00019e540)
	.../api/templates/build_template_test.go:966 +0x2a
testing.tRunner(0xc00019e540, 0x1596eb8)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 62 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc000002000)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestTemplateBuildCOPY(0xc000002000)
	.../api/templates/build_template_test.go:1128 +0x2a
testing.tRunner(0xc000002000, 0x1596e48)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 63 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc0001381c0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestTemplateBuildFuseConfiguration(0xc0001381c0)
	.../api/templates/build_template_test.go:1162 +0x27
testing.tRunner(0xc0001381c0, 0x1596e90)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 64 [sleep]:
time.Sleep(0x3b9aca00)
	.../hostedtoolcache/go/1.25.9.../src/runtime/time.go:363 +0x165
github..../tests/api/templates.buildTemplate({0x17a5df0, 0xc000138540}, {0x15419a8, 0xe}, {0xc00052a68d, 0xc000904110, 0x0, 0x0, 0x0, 0x0, ...}, ...)
	.../api/templates/build_template_test.go:117 +0x6c5
github..../tests/api/templates.TestDeleteTemplate(0xc000138540)
	.../api/templates/delete_template_test.go:19 +0x225
testing.tRunner(0xc000138540, 0x1596d88)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 65 [sleep]:
time.Sleep(0x3b9aca00)
	.../hostedtoolcache/go/1.25.9.../src/runtime/time.go:363 +0x165
github..../integration/internal/utils.WaitForBuildCompletion({0x17a5df0, 0xc0001388c0}, {0x178fac8, 0xc0002e1a40}, {0xc00041e018, 0x14}, {0xc000418000, 0x24}, {0x15524b5, 0x1b}, ...)
	.../internal/utils/template.go:151 +0xe5
github..../integration/internal/utils.BuildTemplate({0x17a5df0, 0xc0001388c0}, {{0x15524b5, 0x1b}, 0x0, 0xc0008887b8, 0xc0008887bc, {0x0, 0xc00069fb50, 0x0, ...}, ...})
	.../internal/utils/template.go:85 +0x325
github..../integration/internal/utils.BuildSimpleTemplate({0x17a5df0, 0xc0001388c0}, {0x15524b5, 0x1b}, {0xc0000c6a58, 0x1, 0x1})
	.../internal/utils/template.go:236 +0x128
github..../tests/api/templates.TestDeleteTemplateWithAccessToken(0xc0001388c0)
	.../api/templates/delete_template_test.go:47 +0xb0
testing.tRunner(0xc0001388c0, 0x1596da0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 66 [sleep]:
time.Sleep(0x3b9aca00)
	.../hostedtoolcache/go/1.25.9.../src/runtime/time.go:363 +0x165
github..../integration/internal/utils.WaitForBuildCompletion({0x17a5df0, 0xc000138c40}, {0x178fac8, 0xc000306460}, {0xc00042a210, 0x14}, {0xc000392240, 0x24}, {0x1564b61, 0x28}, ...)
	.../internal/utils/template.go:151 +0xe5
github..../integration/internal/utils.BuildTemplate({0x17a5df0, 0xc000138c40}, {{0x1564b61, 0x28}, 0x0, 0xc000888488, 0xc00088848c, {0x0, 0xc00069e2b0, 0x0, ...}, ...})
	.../internal/utils/template.go:85 +0x325
github..../integration/internal/utils.BuildSimpleTemplate({0x17a5df0, 0xc000138c40}, {0x1564b61, 0x28}, {0xc000626038, 0x1, 0x1})
	.../internal/utils/template.go:236 +0x128
github..../tests/api/templates.TestDeleteTemplateFromAnotherTeamAccessToken(0xc000138c40)
	.../api/templates/delete_template_test.go:68 +0x110
testing.tRunner(0xc000138c40, 0x1596d98)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 67 [sleep]:
time.Sleep(0x3b9aca00)
	.../hostedtoolcache/go/1.25.9.../src/runtime/time.go:363 +0x165
github..../tests/api/templates.buildTemplate({0x17a5df0, 0xc000138fc0}, {0x155e2ed, 0x23}, {0xc00052a72c, 0xc000904270, 0x0, 0x0, 0x0, 0x0, ...}, ...)
	.../api/templates/build_template_test.go:117 +0x6c5
github..../tests/api/templates.TestDeleteTemplateFromAnotherTeamAPIKey(0xc000138fc0)
	.../api/templates/delete_template_test.go:90 +0x3db
testing.tRunner(0xc000138fc0, 0x1596d90)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 3404 [select, 1 minutes]:
github..../pgx/v5/pgxpool.(*Pool).backgroundHealthCheck(0xc000000620)
	.../pkg/mod/github.com....................................................../jackc/pgx/v5@v5.9.2/pgxpool/pool.go:495 +0xc7
github..../pgx/v5/pgxpool.NewWithConfig.func5()
	.../pkg/mod/github.com....................................................../jackc/pgx/v5@v5.9.2/pgxpool/pool.go:338 +0x3d
created by github..../pgx/v5/pgxpool.NewWithConfig in goroutine 66
	.../pkg/mod/github.com....................................................../jackc/pgx/v5@v5.9.2/pgxpool/pool.go:335 +0x43e

goroutine 3398 [select, 1 minutes]:
github..../pgx/v5/pgxpool.(*Pool).backgroundHealthCheck(0xc000000380)
	.../pkg/mod/github.com....................................................../jackc/pgx/v5@v5.9.2/pgxpool/pool.go:495 +0xc7
github..../pgx/v5/pgxpool.NewWithConfig.func5()
	.../pkg/mod/github.com....................................................../jackc/pgx/v5@v5.9.2/pgxpool/pool.go:338 +0x3d
created by github..../pgx/v5/pgxpool.NewWithConfig in goroutine 67
	.../pkg/mod/github.com....................................................../jackc/pgx/v5@v5.9.2/pgxpool/pool.go:335 +0x43e

goroutine 3400 [select, 1 minutes]:
github..../pgx/v5/pgxpool.(*Pool).backgroundHealthCheck(0xc000000540)
	.../pkg/mod/github.com....................................................../jackc/pgx/v5@v5.9.2/pgxpool/pool.go:495 +0xc7
github..../pgx/v5/pgxpool.NewWithConfig.func5()
	.../pkg/mod/github.com....................................................../jackc/pgx/v5@v5.9.2/pgxpool/pool.go:338 +0x3d
created by github..../pgx/v5/pgxpool.NewWithConfig in goroutine 67
	.../pkg/mod/github.com....................................................../jackc/pgx/v5@v5.9.2/pgxpool/pool.go:335 +0x43e

goroutine 3399 [select, 1 minutes]:
github..../pgx/v5/pgxpool.(*Pool).backgroundHealthCheck(0xc000000460)
	.../pkg/mod/github.com....................................................../jackc/pgx/v5@v5.9.2/pgxpool/pool.go:495 +0xc7
github..../pgx/v5/pgxpool.NewWithConfig.func5()
	.../pkg/mod/github.com....................................................../jackc/pgx/v5@v5.9.2/pgxpool/pool.go:338 +0x3d
created by github..../pgx/v5/pgxpool.NewWithConfig in goroutine 67
	.../pkg/mod/github.com....................................................../jackc/pgx/v5@v5.9.2/pgxpool/pool.go:335 +0x43e

goroutine 77 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc000147340)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestListTemplatesWithAPIKeyAndTeamID(0xc000147340)
	.../api/templates/template_list_test.go:34 +0x27
testing.tRunner(0xc000147340, 0x1596dc0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 78 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc0001476c0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestListTemplatesWithAPIKeyAndMismatchedTeamID(0xc0001476c0)
	.../api/templates/template_list_test.go:55 +0x27
testing.tRunner(0xc0001476c0, 0x1596db8)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 79 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc000147a40)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestListTemplatesWithInvalidAPIKey(0xc000147a40)
	.../api/templates/template_list_test.go:77 +0x27
testing.tRunner(0xc000147a40, 0x1596dd0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 80 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc000147dc0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestListTemplatesWithSupabaseToken(0xc000147dc0)
	.../api/templates/template_list_test.go:93 +0x27
testing.tRunner(0xc000147dc0, 0x1596dd8)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 81 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc0001501c0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestListTemplatesWithAccessToken(0xc0001501c0)
	.../api/templates/template_list_test.go:112 +0x27
testing.tRunner(0xc0001501c0, 0x1596dc8)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 82 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc000150540)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestTemplateTagAssign(0xc000150540)
	.../api/templates/template_tags_test.go:21 +0x3c
testing.tRunner(0xc000150540, 0x1596ed8)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 83 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc0001508c0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestTemplateTagAssignFromSourceTag(0xc0001508c0)
	.../api/templates/template_tags_test.go:52 +0x3c
testing.tRunner(0xc0001508c0, 0x1596ee0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 84 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc000150c40)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestTemplateTagDeleteLatestNotAllowed(0xc000150c40)
	.../api/templates/template_tags_test.go:87 +0x36
testing.tRunner(0xc000150c40, 0x1596ee8)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 85 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc000150fc0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestSandboxCreateWithTag(0xc000150fc0)
	.../api/templates/template_tags_test.go:108 +0x3c
testing.tRunner(0xc000150fc0, 0x1596e38)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 86 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc000151340)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestSandboxCreateWithDefaultTag(0xc000151340)
	.../api/templates/template_tags_test.go:149 +0x3c
testing.tRunner(0xc000151340, 0x1596e28)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 87 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc0001516c0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestSandboxCreateWithNonExistentTag(0xc0001516c0)
	.../api/templates/template_tags_test.go:179 +0x3c
testing.tRunner(0xc0001516c0, 0x1596e30)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 88 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc000151a40)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestSandboxCreateWithAliasAndTag(0xc000151a40)
	.../api/templates/template_tags_test.go:199 +0x3c
testing.tRunner(0xc000151a40, 0x1596e20)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 89 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc000151dc0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestTemplateTagNotFoundForNonExistentTemplate(0xc000151dc0)
	.../api/templates/template_tags_test.go:242 +0x36
testing.tRunner(0xc000151dc0, 0x1596ef8)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 90 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc00015c1c0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestTemplateTagInvalidTagName(0xc00015c1c0)
	.../api/templates/template_tags_test.go:260 +0x36
testing.tRunner(0xc00015c1c0, 0x1596ef0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 91 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc00015c540)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestMultipleTagsOnSameTemplate(0xc00015c540)
	.../api/templates/template_tags_test.go:278 +0x3c
testing.tRunner(0xc00015c540, 0x1596de0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 92 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc00015c8c0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestTagReassignment(0xc00015c8c0)
	.../api/templates/template_tags_test.go:320 +0x3c
testing.tRunner(0xc00015c8c0, 0x1596e40)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 93 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc00015cc40)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestTemplateBuildWithTags(0xc00015cc40)
	.../api/templates/template_tags_test.go:385 +0x3c
testing.tRunner(0xc00015cc40, 0x1596ec8)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 94 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc00015cfc0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestTemplateBuildWithTagsAndSandboxCreation(0xc00015cfc0)
	.../api/templates/template_tags_test.go:424 +0x3c
testing.tRunner(0xc00015cfc0, 0x1596ed0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 95 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc00015d340)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestTemplateBuildWithTagInAlias(0xc00015d340)
	.../api/templates/template_tags_test.go:466 +0x3c
testing.tRunner(0xc00015d340, 0x1596ec0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 96 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc00015d6c0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestAssignmentOrderingLatestWins(0xc00015d6c0)
	.../api/templates/template_tags_test.go:512 +0x3c
testing.tRunner(0xc00015d6c0, 0x1596d80)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 97 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc00015da40)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestAssignmentOrderingAfterTagReassignment(0xc00015da40)
	.../api/templates/template_tags_test.go:579 +0x3c
testing.tRunner(0xc00015da40, 0x1596d78)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 98 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc00015ddc0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestUpdateTemplateVisibilityToPublicWithAPIKey(0xc00015ddc0)
	.../api/templates/template_update_test.go:17 +0x2a
testing.tRunner(0xc00015ddc0, 0x1596f18)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 99 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc0001661c0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestUpdateTemplateVisibilityToPrivateWithAPIKey(0xc0001661c0)
	.../api/templates/template_update_test.go:56 +0x2a
testing.tRunner(0xc0001661c0, 0x1596f10)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 100 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc000166540)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestUpdateTemplateWithInvalidAPIKey(0xc000166540)
	.../api/templates/template_update_test.go:106 +0x27
testing.tRunner(0xc000166540, 0x1596f20)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 101 [chan receive, 10 minutes]:
testing.(*testState).waitParallel(0xc0001d0a50)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:2116 +0xaa
testing.(*T).Parallel(0xc0001668c0)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1709 +0x245
github..../tests/api/templates.TestUpdateNonExistentTemplateWithAPIKey(0xc0001668c0)
	.../api/templates/template_update_test.go:127 +0x27
testing.tRunner(0xc0001668c0, 0x1596f00)
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.9.../src/testing/testing.go:1997 +0x465

goroutine 6444 [IO wait]:
internal/poll.runtime_pollWait(0x7fe7da87aa00, 0x72)
	.../hostedtoolcache/go/1.25.9.../src/runtime/netpoll.go:351 +0x85
internal/poll.(*pollDesc).wait(0xc0001f6280?, 0xc0004ee000?, 0x0)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0001f6280, {0xc0004ee000, 0x1000, 0x1000})
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_unix.go:165 +0x279
net.(*netFD).Read(0xc0001f6280, {0xc0004ee000?, 0x40bc34?, 0x0?})
	.../hostedtoolcache/go/1.25.9.../src/net/fd_posix.go:68 +0x25
net.(*conn).Read(0xc0006261e0, {0xc0004ee000?, 0x40ba13?, 0xc0000fa960?})
	.../hostedtoolcache/go/1.25.9.../src/net/net.go:196 +0x45
net/http.(*persistConn).Read(0xc00071aa20, {0xc0004ee000?, 0x79cda5?, 0x1780020?})
	.../hostedtoolcache/go/1.25.9.../net/http/transport.go:2125 +0x47
bufio.(*Reader).fill(0xc0007016e0)
	.../hostedtoolcache/go/1.25.9.../src/bufio/bufio.go:113 +0x103
bufio.(*Reader).Peek(0xc0007016e0, 0x1)
	.../hostedtoolcache/go/1.25.9.../src/bufio/bufio.go:152 +0x53
net/http.(*persistConn).readLoop(0xc00071aa20)
	.../hostedtoolcache/go/1.25.9.../net/http/transport.go:2278 +0x172
created by net/http.(*Transport).dialConn in goroutine 6440
	.../hostedtoolcache/go/1.25.9.../net/http/transport.go:1947 +0x174f

goroutine 6455 [IO wait]:
internal/poll.runtime_pollWait(0x7fe7da87a600, 0x72)
	.../hostedtoolcache/go/1.25.9.../src/runtime/netpoll.go:351 +0x85
internal/poll.(*pollDesc).wait(0xc00044c880?, 0xc000430000?, 0x0)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00044c880, {0xc000430000, 0x1000, 0x1000})
	.../hostedtoolcache/go/1.25.9.../internal/poll/fd_unix.go:165 +0x279
net.(*netFD).Read(0xc00044c880, {0xc000430000?, 0x40bc34?, 0x0?})
	.../hostedtoolcache/go/1.25.9.../src/net/fd_posix.go:68 +0x25
net.(*conn).Read(0xc000694020, {0xc000430000?, 0x40ba13?, 0xc0000fa960?})
	.../hostedtoolcache/go/1.25.9.../src/net/net.go:196 +0x45
net/http.(*persistConn).Read(0xc000384c60, {0xc000430000?, 0x79cda5?, 0x1780020?})
	.../hostedtoolcache/go/1.25.9.../net/http/transport.go:2125 +0x47
bufio.(*Reader).fill(0xc0005e6360)
	.../hostedtoolcache/go/1.25.9.../src/bufio/bufio.go:113 +0x103
bufio.(*Reader).Peek(0xc0005e6360, 0x1)
	.../hostedtoolcache/go/1.25.9.../src/bufio/bufio.go:152 +0x53
net/http.(*persistConn).readLoop(0xc000384c60)
	.../hostedtoolcache/go/1.25.9.../net/http/transport.go:2278 +0x172
created by net/http.(*Transport).dialConn in goroutine 6654
	.../hostedtoolcache/go/1.25.9.../net/http/transport.go:1947 +0x174f

goroutine 6445 [select]:
net/http.(*persistConn).writeLoop(0xc00071aa20)
	.../hostedtoolcache/go/1.25.9.../net/http/transport.go:2600 +0xe7
created by net/http.(*Transport).dialConn in goroutine 6440
	.../hostedtoolcache/go/1.25.9.../net/http/transport.go:1948 +0x17a5

goroutine 3406 [select, 1 minutes]:
github..../pgx/v5/pgxpool.(*Pool).backgroundHealthCheck(0xc0000007e0)
	.../pkg/mod/github.com....................................................../jackc/pgx/v5@v5.9.2/pgxpool/pool.go:495 +0xc7
github..../pgx/v5/pgxpool.NewWithConfig.func5()
	.../pkg/mod/github.com....................................................../jackc/pgx/v5@v5.9.2/pgxpool/pool.go:338 +0x3d
created by github..../pgx/v5/pgxpool.NewWithConfig in goroutine 66
	.../pkg/mod/github.com....................................................../jackc/pgx/v5@v5.9.2/pgxpool/pool.go:335 +0x43e

goroutine 3405 [select, 1 minutes]:
github..../pgx/v5/pgxpool.(*Pool).backgroundHealthCheck(0xc000000700)
	.../pkg/mod/github.com....................................................../jackc/pgx/v5@v5.9.2/pgxpool/pool.go:495 +0xc7
github..../pgx/v5/pgxpool.NewWithConfig.func5()
	.../pkg/mod/github.com....................................................../jackc/pgx/v5@v5.9.2/pgxpool/pool.go:338 +0x3d
created by github..../pgx/v5/pgxpool.NewWithConfig in goroutine 66
	.../pkg/mod/github.com....................................................../jackc/pgx/v5@v5.9.2/pgxpool/pool.go:335 +0x43e

goroutine 6456 [select]:
net/http.(*persistConn).writeLoop(0xc000384c60)
	.../hostedtoolcache/go/1.25.9.../net/http/transport.go:2600 +0xe7
created by net/http.(*Transport).dialConn in goroutine 6654
	.../hostedtoolcache/go/1.25.9.../net/http/transport.go:1948 +0x17a5
FAIL	github..../tests/api/templates	600.538s
github.com/e2b-dev/infra/packages/orchestrator/cmd/smoketest::TestSmokeAllFCVersions

Flake rate in main: 100.00% (Passed 0 times, Failed 1 times)

Stack Traces | 0s run time
=== RUN   TestSmokeAllFCVersions
    smoke_test.go:57: building envd from .../infra/packages/envd
    smoke_test.go:57: built envd: .../infra/packages/envd/bin/envd
    smoke_test.go:62: downloading https://storage.googleapis..../e2b-prod-public-builds/kernels/vmlinux-6.1.158/vmlinux.bin
    smoke_test.go:64: downloading https://github..../releases/download/v1.10.1_30cbb07/firecracker
    smoke_test.go:64: downloading https://github..../releases/download/v1.12.1_210cbac/firecracker-amd64
    smoke_test.go:64: downloading https://github..../releases/download/v1.14.1_458ca91/firecracker-amd64
=== RUN   TestSmokeAllFCVersions/fc-v1.12
    smoke_test.go:78: creating build 44b39f64-daba-49ee-83a7-d6ce6d611d9f with FC v1.12.1_210cbac
->> [stdout] Creating regular file .../build-templates/089992f1-a9d2-499e-a0cd-548a4b1e1fa5/rootfs.filesystem.build
->> [stderr] mke2fs 1.47.0 (5-Feb-2023)
->> [stdout] 64-bit filesystem support is not enabled.  The larger fields afforded by this feature enable full-strength checksumming.  Pass -O 64bit to rectify.
Creating filesystem with 6400000 4k blocks and 6400576 inodes
Filesystem UUID: 2eebe566-e119-4165-8c4f-be52f56d711a
Superblock backups stored on blocks: 
	32768, 6389760

Allocating group tables:   0/196�������
->> [stdout] �������done
->> [stdout] Writing inode tables:   0/196�������
->> [stdout] �������done
->> [stdout] Creating journal (32768 blocks):
->> [stdout] done
Writing superblocks and filesystem accounting information:
->> [stdout] 0/196�������
->> [stdout] �������
->> [stdout] done
->> [stderr] resize2fs 1.47.0 (5-Feb-2023)
->> [stdout] Resizing the filesystem on .../build-templates/089992f1-a9d2-499e-a0cd-548a4b1e1fa5/rootfs.filesystem.build to 131072 (4k) blocks.
The filesystem on .../build-templates/089992f1-a9d2-499e-a0cd-548a4b1e1fa5/rootfs.filesystem.build is now 131072 (4k) blocks long.
->> [stdout] tune2fs 1.47.0 (5-Feb-2023)
->> [stderr] resize2fs 1.47.0 (5-Feb-2023)
->> [stdout] Resizing the filesystem on .../build-templates/089992f1-a9d2-499e-a0cd-548a4b1e1fa5/rootfs.filesystem.build to 202240 (4k) blocks.
The filesystem on .../build-templates/089992f1-a9d2-499e-a0cd-548a4b1e1fa5/rootfs.filesystem.build is now 202240 (4k) blocks long.
2026/05/04 19:27:43 tcpproxy: for incoming conn 10.11.0.2:57402, error dialing "91.189.91.82:80": dial tcp 91.189.91.82:80: i/o timeout
2026/05/04 19:28:13 tcpproxy: for incoming conn 10.11.0.2:43570, error dialing "91.189.92.23:80": dial tcp 91.189.92.23:80: i/o timeout
2026/05/04 19:28:14 tcpproxy: for incoming conn 10.11.0.2:43580, error dialing "91.189.92.23:80": dial tcp 91.189.92.23:80: i/o timeout
2026/05/04 19:28:43 tcpproxy: for incoming conn 10.11.0.2:45358, error dialing "185.125.190.82:80": dial tcp 185.125.190.82:80: i/o timeout
2026/05/04 19:29:44 tcpproxy: for incoming conn 10.11.0.2:42080, error dialing "185.125.190.83:80": dial tcp 185.125.190.83:80: i/o timeout
2026/05/04 19:30:51 tcpproxy: for incoming conn 10.11.0.2:52158, error dialing "91.189.91.82:80": dial tcp 91.189.91.82:80: i/o timeout
2026/05/04 19:31:21 tcpproxy: for incoming conn 10.11.0.2:46382, error dialing "185.125.190.81:80": dial tcp 185.125.190.81:80: i/o timeout
2026/05/04 19:33:15 tcpproxy: for incoming conn 10.11.0.2:44308, error dialing "185.125.190.83:80": dial tcp 185.125.190.83:80: i/o timeout
2026/05/04 19:34:46 tcpproxy: for incoming conn 10.11.0.2:32844, error dialing "91.189.91.81:80": dial tcp 91.189.91.81:80: i/o timeout
2026/05/04 19:35:46 tcpproxy: for incoming conn 10.11.0.2:52946, error dialing "91.189.91.83:80": dial tcp 91.189.91.83:80: i/o timeout
->> [stderr] resize2fs 1.47.0 (5-Feb-2023)
->> [stdout] Resizing the filesystem on .../build-templates/089992f1-a9d2-499e-a0cd-548a4b1e1fa5/rootfs.filesystem.build to 256768 (4k) blocks.
The filesystem on .../build-templates/089992f1-a9d2-499e-a0cd-548a4b1e1fa5/rootfs.filesystem.build is now 256768 (4k) blocks long.
    smoke_test.go:98: build 44b39f64-daba-49ee-83a7-d6ce6d611d9f done
    smoke_test.go:101: resuming build 44b39f64-daba-49ee-83a7-d6ce6d611d9f
    smoke_test.go:139: resumed in 208.41203ms
--- PASS: TestSmokeAllFCVersions/fc-v1.12 (692.73s)
=== RUN   TestSmokeAllFCVersions/fc-v1.14
    smoke_test.go:78: creating build 04366233-f822-4e06-9c26-0a7ec243512a with FC v1.14.1_458ca91
->> [stderr] mke2fs 1.47.0 (5-Feb-2023)
->> [stdout] Creating regular file .../build-templates/4cd77cc6-2849-45e0-8f8a-7ee23ff67686/rootfs.filesystem.build
->> [stdout] 64-bit filesystem support is not enabled.  The larger fields afforded by this feature enable full-strength checksumming.  Pass -O 64bit to rectify.
->> [stdout] Creating filesystem with 6400000 4k blocks and 6400576 inodes
Filesystem UUID: 0fbe65e9-e82b-4e06-bc76-1510c065778c
Superblock backups stored on blocks:
->> [stdout] 32768, 6389760
->> [stdout] Allocating group tables:
->> [stdout] 0/196�������
->> [stdout] �������done
->> [stdout] Writing inode tables:
->> [stdout] 0/196�������
->> [stdout] �������done
->> [stdout] Creating journal (32768 blocks):
->> [stdout] done
Writing superblocks and filesystem accounting information:
->> [stdout] 0/196�������
->> [stdout] �������
->> [stdout] done
->> [stderr] resize2fs 1.47.0 (5-Feb-2023)
->> [stdout] Resizing the filesystem on .../build-templates/4cd77cc6-2849-45e0-8f8a-7ee23ff67686/rootfs.filesystem.build to 131072 (4k) blocks.
The filesystem on .../build-templates/4cd77cc6-2849-45e0-8f8a-7ee23ff67686/rootfs.filesystem.build is now 131072 (4k) blocks long.
->> [stdout] tune2fs 1.47.0 (5-Feb-2023)
->> [stderr] resize2fs 1.47.0 (5-Feb-2023)
->> [stdout] Resizing the filesystem on .../build-templates/4cd77cc6-2849-45e0-8f8a-7ee23ff67686/rootfs.filesystem.build to 202240 (4k) blocks.
The filesystem on .../build-templates/4cd77cc6-2849-45e0-8f8a-7ee23ff67686/rootfs.filesystem.build is now 202240 (4k) blocks long.
2026/05/04 19:39:15 tcpproxy: for incoming conn 10.11.0.2:46074, error dialing "91.189.91.81:80": dial tcp 91.189.91.81:80: i/o timeout
2026/05/04 19:40:15 tcpproxy: for incoming conn 10.11.0.2:49614, error dialing "91.189.92.23:80": dial tcp 91.189.92.23:80: i/o timeout
2026/05/04 19:40:45 tcpproxy: for incoming conn 10.11.0.2:42256, error dialing "185.125.190.83:80": dial tcp 185.125.190.83:80: i/o timeout
2026/05/04 19:41:15 tcpproxy: for incoming conn 10.11.0.2:53422, error dialing "91.189.92.24:80": dial tcp 91.189.92.24:80: i/o timeout
2026/05/04 19:41:18 tcpproxy: for incoming conn 10.11.0.2:41186, error dialing "185.125.190.81:80": dial tcp 185.125.190.81:80: i/o timeout
2026/05/04 19:41:48 tcpproxy: for incoming conn 10.11.0.2:45018, error dialing "185.125.190.82:80": dial tcp 185.125.190.82:80: i/o timeout
2026/05/04 19:42:15 tcpproxy: for incoming conn 10.11.0.2:58898, error dialing "91.189.92.23:80": dial tcp 91.189.92.23:80: i/o timeout
2026/05/04 19:42:52 tcpproxy: for incoming conn 10.11.0.2:51350, error dialing "185.125.190.83:80": dial tcp 185.125.190.83:80: i/o timeout
2026/05/04 19:43:15 tcpproxy: for incoming conn 10.11.0.2:41276, error dialing "185.125.190.81:80": dial tcp 185.125.190.81:80: i/o timeout
2026/05/04 19:45:19 tcpproxy: for incoming conn 10.11.0.2:47254, error dialing "91.189.92.24:80": dial tcp 91.189.92.24:80: i/o timeout
2026/05/04 19:46:19 tcpproxy: for incoming conn 10.11.0.2:52786, error dialing "91.189.92.23:80": dial tcp 91.189.92.23:80: i/o timeout
2026/05/04 19:46:49 tcpproxy: for incoming conn 10.11.0.2:34204, error dialing "185.125.190.82:80": dial tcp 185.125.190.82:80: i/o timeout
coverage: [no statements]
github.com/e2b-dev/infra/packages/orchestrator/cmd/smoketest::TestSmokeAllFCVersions/fc-v1.10

Flake rate in main: 100.00% (Passed 0 times, Failed 1 times)

Stack Traces | 725s run time
=== RUN   TestSmokeAllFCVersions/fc-v1.10
    smoke_test.go:78: creating build e5ae9d3c-80b4-4f0e-86ae-8f1a253e1317 with FC v1.10.1_30cbb07
->> [stderr] mke2fs 1.47.0 (5-Feb-2023)
->> [stdout] Creating regular file .../build-templates/26c675ca-31cb-4789-8fcf-17189a2e1043/rootfs.filesystem.build
->> [stdout] 64-bit filesystem support is not enabled.  The larger fields afforded by this feature enable full-strength checksumming.  Pass -O 64bit to rectify.
->> [stdout] Creating filesystem with 6400000 4k blocks and 6400576 inodes
Filesystem UUID: bc3d66a4-dcec-4344-a977-db48bdc94159
Superblock backups stored on blocks:
->> [stdout] 32768,
->> [stdout] 6389760
->> [stdout] Allocating group tables:
->> [stdout] 0/196�������
->> [stdout] �������done
->> [stdout] Writing inode tables:   0/196�������
->> [stdout] �������done
->> [stdout] Creating journal (32768 blocks):
->> [stdout] done
Writing superblocks and filesystem accounting information:   0/196�������       �������
->> [stdout] done
->> [stderr] resize2fs 1.47.0 (5-Feb-2023)
->> [stdout] Resizing the filesystem on .../build-templates/26c675ca-31cb-4789-8fcf-17189a2e1043/rootfs.filesystem.build to 131072 (4k) blocks.
The filesystem on .../build-templates/26c675ca-31cb-4789-8fcf-17189a2e1043/rootfs.filesystem.build is now 131072 (4k) blocks long.
->> [stdout] tune2fs 1.47.0 (5-Feb-2023)
->> [stderr] resize2fs 1.47.0 (5-Feb-2023)
->> [stdout] Resizing the filesystem on .../build-templates/26c675ca-31cb-4789-8fcf-17189a2e1043/rootfs.filesystem.build to 202240 (4k) blocks.
The filesystem on .../build-templates/26c675ca-31cb-4789-8fcf-17189a2e1043/rootfs.filesystem.build is now 202240 (4k) blocks long.
2026/05/04 19:03:08 tcpproxy: for incoming conn 10.11.0.2:46686, error dialing "185.125.190.81:80": dial tcp 185.125.190.81:80: i/o timeout
2026/05/04 19:03:08 tcpproxy: for incoming conn 10.11.0.2:56160, error dialing "91.189.91.82:80": dial tcp 91.189.91.82:80: i/o timeout
2026/05/04 19:03:38 tcpproxy: for incoming conn 10.11.0.2:41206, error dialing "91.189.92.24:80": dial tcp 91.189.92.24:80: i/o timeout
2026/05/04 19:05:08 tcpproxy: for incoming conn 10.11.0.2:40356, error dialing "185.125.190.82:80": dial tcp 185.125.190.82:80: i/o timeout
2026/05/04 19:05:38 tcpproxy: for incoming conn 10.11.0.2:33400, error dialing "91.189.92.24:80": dial tcp 91.189.92.24:80: i/o timeout
2026/05/04 19:05:41 tcpproxy: for incoming conn 10.11.0.2:54070, error dialing "185.125.190.82:80": dial tcp 185.125.190.82:80: i/o timeout
2026/05/04 19:06:08 tcpproxy: for incoming conn 10.11.0.2:42036, error dialing "185.125.190.82:80": dial tcp 185.125.190.82:80: i/o timeout
2026/05/04 19:06:38 tcpproxy: for incoming conn 10.11.0.2:53198, error dialing "91.189.91.83:80": dial tcp 91.189.91.83:80: i/o timeout
2026/05/04 19:06:45 tcpproxy: for incoming conn 10.11.0.2:47862, error dialing "185.125.190.82:80": dial tcp 185.125.190.82:80: i/o timeout
2026/05/04 19:07:38 tcpproxy: for incoming conn 10.11.0.2:40996, error dialing "91.189.92.23:80": dial tcp 91.189.92.23:80: i/o timeout
2026/05/04 19:08:08 tcpproxy: for incoming conn 10.11.0.2:49586, error dialing "185.125.190.83:80": dial tcp 185.125.190.83:80: i/o timeout
2026/05/04 19:08:38 tcpproxy: for incoming conn 10.11.0.2:43450, error dialing "185.125.190.81:80": dial tcp 185.125.190.81:80: i/o timeout
2026/05/04 19:11:09 tcpproxy: for incoming conn 10.11.0.2:49660, error dialing "185.125.190.83:80": dial tcp 185.125.190.83:80: i/o timeout
    smoke_test.go:97: 
        	Error Trace:	.../cmd/smoketest/smoke_test.go:97
        	Error:      	Received unexpected error:
        	            	error provisioning sandbox: error waiting for provisioning sandbox: exit status: 1
        	Test:       	TestSmokeAllFCVersions/fc-v1.10
        	Messages:   	create build failed for FC v1.10.1_30cbb07
--- FAIL: TestSmokeAllFCVersions/fc-v1.10 (725.32s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/metrics::TestTeamMetrics

Flake rate in main: 57.14% (Passed 3 times, Failed 4 times)

Stack Traces | 2.9s run time
=== RUN   TestTeamMetrics
=== PAUSE TestTeamMetrics
=== CONT  TestTeamMetrics
    team_metrics_test.go:61: 
        	Error Trace:	.../api/metrics/team_metrics_test.go:61
        	Error:      	Should be true
        	Test:       	TestTeamMetrics
        	Messages:   	MaxConcurrentSandboxes should be >= 0
--- FAIL: TestTeamMetrics (2.90s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallAllowAll

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 296s run time
=== RUN   TestEgressFirewallAllowAll
=== PAUSE TestEgressFirewallAllowAll
=== CONT  TestEgressFirewallAllowAll
    sandbox_network_out_test.go:303: Network test template was not built successfully
--- FAIL: TestEgressFirewallAllowAll (296.02s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallAllowAllDomainsWildcard

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestEgressFirewallAllowAllDomainsWildcard
=== PAUSE TestEgressFirewallAllowAllDomainsWildcard
=== CONT  TestEgressFirewallAllowAllDomainsWildcard
    sandbox_network_out_test.go:601: Network test template was not built successfully
--- FAIL: TestEgressFirewallAllowAllDomainsWildcard (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallAllowAllDuplicate

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestEgressFirewallAllowAllDuplicate
=== PAUSE TestEgressFirewallAllowAllDuplicate
=== CONT  TestEgressFirewallAllowAllDuplicate
    sandbox_network_out_test.go:471: Network test template was not built successfully
--- FAIL: TestEgressFirewallAllowAllDuplicate (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallAllowAndBlockCombination

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestEgressFirewallAllowAndBlockCombination
=== PAUSE TestEgressFirewallAllowAndBlockCombination
=== CONT  TestEgressFirewallAllowAndBlockCombination
    sandbox_network_out_test.go:211: Network test template was not built successfully
--- FAIL: TestEgressFirewallAllowAndBlockCombination (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallAllowCIDRRange

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestEgressFirewallAllowCIDRRange
=== PAUSE TestEgressFirewallAllowCIDRRange
=== CONT  TestEgressFirewallAllowCIDRRange
    sandbox_network_out_test.go:161: Network test template was not built successfully
--- FAIL: TestEgressFirewallAllowCIDRRange (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallAllowDomainAndIP

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestEgressFirewallAllowDomainAndIP
=== PAUSE TestEgressFirewallAllowDomainAndIP
=== CONT  TestEgressFirewallAllowDomainAndIP
    sandbox_network_out_test.go:654: Network test template was not built successfully
--- FAIL: TestEgressFirewallAllowDomainAndIP (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallAllowDomainThroughBlockedInternet

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestEgressFirewallAllowDomainThroughBlockedInternet
=== PAUSE TestEgressFirewallAllowDomainThroughBlockedInternet
=== CONT  TestEgressFirewallAllowDomainThroughBlockedInternet
    sandbox_network_out_test.go:522: Network test template was not built successfully
--- FAIL: TestEgressFirewallAllowDomainThroughBlockedInternet (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallAllowOverridesBlock

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 296s run time
=== RUN   TestEgressFirewallAllowOverridesBlock
=== PAUSE TestEgressFirewallAllowOverridesBlock
=== CONT  TestEgressFirewallAllowOverridesBlock
    sandbox_network_out_test.go:328: Network test template was not built successfully
--- FAIL: TestEgressFirewallAllowOverridesBlock (296.48s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallAllowSpecificIP

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 296s run time
=== RUN   TestEgressFirewallAllowSpecificIP
=== PAUSE TestEgressFirewallAllowSpecificIP
=== CONT  TestEgressFirewallAllowSpecificIP
    sandbox_network_out_test.go:110: Network test template was not built successfully
--- FAIL: TestEgressFirewallAllowSpecificIP (296.49s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallAllowWildcardDomainThroughBlockedInternet

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestEgressFirewallAllowWildcardDomainThroughBlockedInternet
=== PAUSE TestEgressFirewallAllowWildcardDomainThroughBlockedInternet
=== CONT  TestEgressFirewallAllowWildcardDomainThroughBlockedInternet
    sandbox_network_out_test.go:548: Network test template was not built successfully
--- FAIL: TestEgressFirewallAllowWildcardDomainThroughBlockedInternet (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallBlockCIDRRange

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestEgressFirewallBlockCIDRRange
=== PAUSE TestEgressFirewallBlockCIDRRange
=== CONT  TestEgressFirewallBlockCIDRRange
    sandbox_network_out_test.go:186: Network test template was not built successfully
--- FAIL: TestEgressFirewallBlockCIDRRange (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallBlockSpecificIP

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestEgressFirewallBlockSpecificIP
=== PAUSE TestEgressFirewallBlockSpecificIP
=== CONT  TestEgressFirewallBlockSpecificIP
    sandbox_network_out_test.go:136: Network test template was not built successfully
--- FAIL: TestEgressFirewallBlockSpecificIP (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallDNSSpoofingNeutralized

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestEgressFirewallDNSSpoofingNeutralized
=== PAUSE TestEgressFirewallDNSSpoofingNeutralized
=== CONT  TestEgressFirewallDNSSpoofingNeutralized
    sandbox_network_out_test.go:846: Network test template was not built successfully
--- FAIL: TestEgressFirewallDNSSpoofingNeutralized (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallDomainCaseInsensitive

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestEgressFirewallDomainCaseInsensitive
=== PAUSE TestEgressFirewallDomainCaseInsensitive
=== CONT  TestEgressFirewallDomainCaseInsensitive
    sandbox_network_out_test.go:628: Network test template was not built successfully
--- FAIL: TestEgressFirewallDomainCaseInsensitive (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallDomainPersistsAfterResume

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestEgressFirewallDomainPersistsAfterResume
=== PAUSE TestEgressFirewallDomainPersistsAfterResume
=== CONT  TestEgressFirewallDomainPersistsAfterResume
    sandbox_network_out_test.go:710: Network test template was not built successfully
--- FAIL: TestEgressFirewallDomainPersistsAfterResume (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallEmptyConfig

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestEgressFirewallEmptyConfig
=== PAUSE TestEgressFirewallEmptyConfig
=== CONT  TestEgressFirewallEmptyConfig
    sandbox_network_out_test.go:280: Network test template was not built successfully
--- FAIL: TestEgressFirewallEmptyConfig (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallExactDomainMatchVsSubdomain

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestEgressFirewallExactDomainMatchVsSubdomain
=== PAUSE TestEgressFirewallExactDomainMatchVsSubdomain
=== CONT  TestEgressFirewallExactDomainMatchVsSubdomain
    sandbox_network_out_test.go:575: Network test template was not built successfully
--- FAIL: TestEgressFirewallExactDomainMatchVsSubdomain (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallHTTPDomainFiltering

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestEgressFirewallHTTPDomainFiltering
=== PAUSE TestEgressFirewallHTTPDomainFiltering
=== CONT  TestEgressFirewallHTTPDomainFiltering
    sandbox_network_out_test.go:758: Network test template was not built successfully
--- FAIL: TestEgressFirewallHTTPDomainFiltering (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallHTTPSByIPNoHostname

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestEgressFirewallHTTPSByIPNoHostname
=== PAUSE TestEgressFirewallHTTPSByIPNoHostname
=== CONT  TestEgressFirewallHTTPSByIPNoHostname
    sandbox_network_out_test.go:683: Network test template was not built successfully
--- FAIL: TestEgressFirewallHTTPSByIPNoHostname (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallMultipleAllowedIPs

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 301s run time
=== RUN   TestEgressFirewallMultipleAllowedIPs
=== PAUSE TestEgressFirewallMultipleAllowedIPs
=== CONT  TestEgressFirewallMultipleAllowedIPs
    sandbox_network_out_test.go:30: Building custom template for network egress tests...
    template.go:44: network-egress-test: [info] Building template kkwqcd7frqr70by4qyec/e1960ff1-1af4-4928-855c-dd666962433e
    template.go:44: network-egress-test: [info] [base] FROM ubuntu:22.04 [ffd709f131f42dfab282de47a91dd2c139e900c1c11fc574b49b517a05ef0a32]
    template.go:44: network-egress-test: [info] Base Docker image size: 30 MB
    template.go:44: network-egress-test: [info] Creating file system and pulling Docker image
    template.go:44: network-egress-test: [info] Uncompressing layer sha256:f63eb04151bcac21ad049f8d781b97b219aba392c5457907f8f3e88e43eb48ec 30 MB
    template.go:44: network-egress-test: [info] Uncompressing layer sha256:d63a768f4e479071670bf4ff79424a74380e49f5e4f53ab7249958fd2b072c3c 12 MB
    template.go:44: network-egress-test: [info] Uncompressing layer sha256:8c4b1b28875140ed3abacaf16ad0d696f6bef912f52d2148f261a23e3349465b 168 B
    template.go:44: network-egress-test: [info] Layers extracted
    template.go:44: network-egress-test: [info] Root filesystem structure: bin, boot, dev, etc, home, lib, lib32, lib64, libx32, media, mnt, opt, proc, root, run, sbin, srv, sys, tmp, usr, var
    template.go:44: network-egress-test: [info] Provisioning sandbox template
    sandbox_network_out_test.go:32: Build timeout exceeded
--- FAIL: TestEgressFirewallMultipleAllowedIPs (300.63s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallPersistsAfterResume

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestEgressFirewallPersistsAfterResume
=== PAUSE TestEgressFirewallPersistsAfterResume
=== CONT  TestEgressFirewallPersistsAfterResume
    sandbox_network_out_test.go:237: Network test template was not built successfully
--- FAIL: TestEgressFirewallPersistsAfterResume (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallPrivateIPRangesAlwaysBlocked

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestEgressFirewallPrivateIPRangesAlwaysBlocked
=== PAUSE TestEgressFirewallPrivateIPRangesAlwaysBlocked
=== CONT  TestEgressFirewallPrivateIPRangesAlwaysBlocked
    sandbox_network_out_test.go:410: Network test template was not built successfully
--- FAIL: TestEgressFirewallPrivateIPRangesAlwaysBlocked (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallRegularIPThenAllowAll

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestEgressFirewallRegularIPThenAllowAll
=== PAUSE TestEgressFirewallRegularIPThenAllowAll
=== CONT  TestEgressFirewallRegularIPThenAllowAll
    sandbox_network_out_test.go:496: Network test template was not built successfully
--- FAIL: TestEgressFirewallRegularIPThenAllowAll (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallUDPAllowedCIDR

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestEgressFirewallUDPAllowedCIDR
=== PAUSE TestEgressFirewallUDPAllowedCIDR
=== CONT  TestEgressFirewallUDPAllowedCIDR
    sandbox_network_out_test.go:814: Network test template was not built successfully
--- FAIL: TestEgressFirewallUDPAllowedCIDR (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallUDPAllowedIP

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestEgressFirewallUDPAllowedIP
=== PAUSE TestEgressFirewallUDPAllowedIP
=== CONT  TestEgressFirewallUDPAllowedIP
    sandbox_network_out_test.go:788: Network test template was not built successfully
--- FAIL: TestEgressFirewallUDPAllowedIP (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestEgressFirewallWithInternetAccessFalse

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestEgressFirewallWithInternetAccessFalse
=== PAUSE TestEgressFirewallWithInternetAccessFalse
=== CONT  TestEgressFirewallWithInternetAccessFalse
    sandbox_network_out_test.go:381: Network test template was not built successfully
--- FAIL: TestEgressFirewallWithInternetAccessFalse (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestGPGKeyserverWorks

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestGPGKeyserverWorks
=== PAUSE TestGPGKeyserverWorks
=== CONT  TestGPGKeyserverWorks
    sandbox_network_out_test.go:978: Network test template was not built successfully
--- FAIL: TestGPGKeyserverWorks (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestNoNetworkConfig_SSHWorks

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestNoNetworkConfig_SSHWorks
=== PAUSE TestNoNetworkConfig_SSHWorks
=== CONT  TestNoNetworkConfig_SSHWorks
    sandbox_network_out_test.go:900: Network test template was not built successfully
--- FAIL: TestNoNetworkConfig_SSHWorks (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestUpdateNetworkConfig

Flake rate in main: 58.33% (Passed 5 times, Failed 7 times)

Stack Traces | 115s run time
=== RUN   TestUpdateNetworkConfig
=== PAUSE TestUpdateNetworkConfig
=== CONT  TestUpdateNetworkConfig
--- FAIL: TestUpdateNetworkConfig (115.07s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestUpdateNetworkConfig/pause_resume_preserves_allow_internet_access_false

Flake rate in main: 50.00% (Passed 5 times, Failed 5 times)

Stack Traces | 1.14s run time
=== RUN   TestUpdateNetworkConfig/pause_resume_preserves_allow_internet_access_false
Executing command curl in sandbox ive9ezbp3lxjvjqjnoy8e
    sandbox_network_update_test.go:372: Command [curl] output: event:{start:{pid:1354}}
    sandbox_network_update_test.go:372: Command [curl] output: event:{end:{exit_code:35 exited:true status:"exit status 35" error:"exit status 35"}}
Executing command curl in sandbox ive9ezbp3lxjvjqjnoy8e
    sandbox_network_update_test.go:372: Command [curl] output: event:{start:{pid:1355}}
    sandbox_network_update_test.go:372: Command [curl] output: event:{end:{exit_code:35 exited:true status:"exit status 35" error:"exit status 35"}}
    sandbox_network_update_test.go:391: Command [curl] output: event:{start:{pid:1356}}
    sandbox_network_update_test.go:391: Command [curl] output: event:{data:{stdout:"HTTP/2 302 \r\nx-content-type-options: nosniff\r\nlocation: https://dns.google/\r\ndate: Mon, 04 May 2026 23:22:52 GMT\r\ncontent-type: text/html; charset=UTF-8\r\nserver: HTTP server (unknown)\r\ncontent-length: 216\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n"}}
    sandbox_network_update_test.go:391: Command [curl] output: event:{end:{exited:true status:"exit status 0"}}
    sandbox_network_update_test.go:391: Command [curl] completed successfully in sandbox ive9ezbp3lxjvjqjnoy8e
    sandbox_network_update_test.go:391: 
        	Error Trace:	.../api/sandboxes/sandbox_network_out_test.go:74
        	            				.../api/sandboxes/sandbox_network_update_test.go:60
        	            				.../api/sandboxes/sandbox_network_update_test.go:391
        	Error:      	An error is expected but got nil.
        	Test:       	TestUpdateNetworkConfig/pause_resume_preserves_allow_internet_access_false
        	Messages:   	https://8.8.8.8 should be blocked
--- FAIL: TestUpdateNetworkConfig/pause_resume_preserves_allow_internet_access_false (1.14s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestWithNetworkConfig_SSHWorks

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestWithNetworkConfig_SSHWorks
=== PAUSE TestWithNetworkConfig_SSHWorks
=== CONT  TestWithNetworkConfig_SSHWorks
    sandbox_network_out_test.go:935: Network test template was not built successfully
--- FAIL: TestWithNetworkConfig_SSHWorks (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestAssignmentOrderingAfterTagReassignment

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestAssignmentOrderingAfterTagReassignment
=== PAUSE TestAssignmentOrderingAfterTagReassignment
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestAssignmentOrderingLatestWins

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestAssignmentOrderingLatestWins
=== PAUSE TestAssignmentOrderingLatestWins
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestDeleteTemplate

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestDeleteTemplate
=== PAUSE TestDeleteTemplate
=== CONT  TestDeleteTemplate
    build_template_test.go:134: test-to-delete: [info] Building template 7msodkdatfsxykknj8lf/0447e7e8-7607-46a6-ab48-e655b0f91a14
    build_template_test.go:134: test-to-delete: [info] [base] FROM ubuntu:22.04 [ffd709f131f42dfab282de47a91dd2c139e900c1c11fc574b49b517a05ef0a32]
    build_template_test.go:134: test-to-delete: [info] Base Docker image size: 30 MB
    build_template_test.go:134: test-to-delete: [info] Creating file system and pulling Docker image
    build_template_test.go:134: test-to-delete: [info] Uncompressing layer sha256:f63eb04151bcac21ad049f8d781b97b219aba392c5457907f8f3e88e43eb48ec 30 MB
    build_template_test.go:134: test-to-delete: [info] Uncompressing layer sha256:d63a768f4e479071670bf4ff79424a74380e49f5e4f53ab7249958fd2b072c3c 12 MB
    build_template_test.go:134: test-to-delete: [info] Uncompressing layer sha256:8c4b1b28875140ed3abacaf16ad0d696f6bef912f52d2148f261a23e3349465b 168 B
    build_template_test.go:134: test-to-delete: [info] Layers extracted
    build_template_test.go:134: test-to-delete: [info] Root filesystem structure: bin, boot, dev, etc, home, lib, lib32, lib64, libx32, media, mnt, opt, proc, root, run, sbin, srv, sys, tmp, usr, var
    build_template_test.go:134: test-to-delete: [info] Provisioning sandbox template
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestDeleteTemplateFromAnotherTeamAPIKey

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestDeleteTemplateFromAnotherTeamAPIKey
=== PAUSE TestDeleteTemplateFromAnotherTeamAPIKey
=== CONT  TestDeleteTemplateFromAnotherTeamAPIKey
    build_template_test.go:134: test-to-delete-another-team-api-key: [info] Building template z0mr7m7vezrbths5ywof/4a2621c5-34b2-47fc-98f7-26a06d0a466c
    build_template_test.go:134: test-to-delete-another-team-api-key: [info] [base] FROM ubuntu:22.04 [ffd709f131f42dfab282de47a91dd2c139e900c1c11fc574b49b517a05ef0a32]
    build_template_test.go:134: test-to-delete-another-team-api-key: [info] Base Docker image size: 30 MB
    build_template_test.go:134: test-to-delete-another-team-api-key: [info] Creating file system and pulling Docker image
    build_template_test.go:134: test-to-delete-another-team-api-key: [info] Uncompressing layer sha256:f63eb04151bcac21ad049f8d781b97b219aba392c5457907f8f3e88e43eb48ec 30 MB
    build_template_test.go:134: test-to-delete-another-team-api-key: [info] Uncompressing layer sha256:d63a768f4e479071670bf4ff79424a74380e49f5e4f53ab7249958fd2b072c3c 12 MB
    build_template_test.go:134: test-to-delete-another-team-api-key: [info] Uncompressing layer sha256:8c4b1b28875140ed3abacaf16ad0d696f6bef912f52d2148f261a23e3349465b 168 B
    build_template_test.go:134: test-to-delete-another-team-api-key: [info] Layers extracted
    build_template_test.go:134: test-to-delete-another-team-api-key: [info] Root filesystem structure: bin, boot, dev, etc, home, lib, lib32, lib64, libx32, media, mnt, opt, proc, root, run, sbin, srv, sys, tmp, usr, var
    build_template_test.go:134: test-to-delete-another-team-api-key: [info] Provisioning sandbox template
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestDeleteTemplateFromAnotherTeamAccessToken

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestDeleteTemplateFromAnotherTeamAccessToken
=== PAUSE TestDeleteTemplateFromAnotherTeamAccessToken
=== CONT  TestDeleteTemplateFromAnotherTeamAccessToken
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestDeleteTemplateWithAccessToken

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestDeleteTemplateWithAccessToken
=== PAUSE TestDeleteTemplateWithAccessToken
=== CONT  TestDeleteTemplateWithAccessToken
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestListTemplatesWithAPIKey

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestListTemplatesWithAPIKey
=== PAUSE TestListTemplatesWithAPIKey
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestListTemplatesWithAPIKeyAndMismatchedTeamID

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestListTemplatesWithAPIKeyAndMismatchedTeamID
=== PAUSE TestListTemplatesWithAPIKeyAndMismatchedTeamID
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestListTemplatesWithAPIKeyAndTeamID

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestListTemplatesWithAPIKeyAndTeamID
=== PAUSE TestListTemplatesWithAPIKeyAndTeamID
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestListTemplatesWithAccessToken

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestListTemplatesWithAccessToken
=== PAUSE TestListTemplatesWithAccessToken
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestListTemplatesWithInvalidAPIKey

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestListTemplatesWithInvalidAPIKey
=== PAUSE TestListTemplatesWithInvalidAPIKey
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestListTemplatesWithSupabaseToken

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestListTemplatesWithSupabaseToken
=== PAUSE TestListTemplatesWithSupabaseToken
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestMultipleTagsOnSameTemplate

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestMultipleTagsOnSameTemplate
=== PAUSE TestMultipleTagsOnSameTemplate
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestRequestTemplateBuild

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestRequestTemplateBuild
=== PAUSE TestRequestTemplateBuild
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestRequestTemplateMemoryNonDivisibleBy2

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestRequestTemplateMemoryNonDivisibleBy2
=== PAUSE TestRequestTemplateMemoryNonDivisibleBy2
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestRequestTemplateOddCPU

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestRequestTemplateOddCPU
=== PAUSE TestRequestTemplateOddCPU
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestRequestTemplateTooHighCPU

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestRequestTemplateTooHighCPU
=== PAUSE TestRequestTemplateTooHighCPU
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestRequestTemplateTooHighMemory

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestRequestTemplateTooHighMemory
=== PAUSE TestRequestTemplateTooHighMemory
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestRequestTemplateTooLowCPU

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestRequestTemplateTooLowCPU
=== PAUSE TestRequestTemplateTooLowCPU
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestRequestTemplateTooLowRAM

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestRequestTemplateTooLowRAM
=== PAUSE TestRequestTemplateTooLowRAM
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestSandboxCreateWithAliasAndTag

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestSandboxCreateWithAliasAndTag
=== PAUSE TestSandboxCreateWithAliasAndTag
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestSandboxCreateWithDefaultTag

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestSandboxCreateWithDefaultTag
=== PAUSE TestSandboxCreateWithDefaultTag
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestSandboxCreateWithNonExistentTag

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestSandboxCreateWithNonExistentTag
=== PAUSE TestSandboxCreateWithNonExistentTag
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestSandboxCreateWithTag

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestSandboxCreateWithTag
=== PAUSE TestSandboxCreateWithTag
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTagReassignment

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTagReassignment
=== PAUSE TestTagReassignment
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateBuildCOPY

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTemplateBuildCOPY
=== PAUSE TestTemplateBuildCOPY
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateBuildCache

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTemplateBuildCache
=== PAUSE TestTemplateBuildCache
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateBuildENV

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTemplateBuildENV
=== PAUSE TestTemplateBuildENV
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateBuildFromTemplate

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTemplateBuildFromTemplate
=== PAUSE TestTemplateBuildFromTemplate
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateBuildFromTemplateBaseCommandsInheritance

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTemplateBuildFromTemplateBaseCommandsInheritance
=== PAUSE TestTemplateBuildFromTemplateBaseCommandsInheritance
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateBuildFromTemplateCommandOverride

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTemplateBuildFromTemplateCommandOverride
=== PAUSE TestTemplateBuildFromTemplateCommandOverride
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateBuildFromTemplateInheritance

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTemplateBuildFromTemplateInheritance
=== PAUSE TestTemplateBuildFromTemplateInheritance
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateBuildFromTemplateLayered

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTemplateBuildFromTemplateLayered
=== PAUSE TestTemplateBuildFromTemplateLayered
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateBuildFromTemplateStartCommand

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTemplateBuildFromTemplateStartCommand
=== PAUSE TestTemplateBuildFromTemplateStartCommand
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateBuildFuseConfiguration

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTemplateBuildFuseConfiguration
=== PAUSE TestTemplateBuildFuseConfiguration
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateBuildInstalledPackagesAvailable

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 301s run time
=== RUN   TestTemplateBuildInstalledPackagesAvailable
=== PAUSE TestTemplateBuildInstalledPackagesAvailable
=== CONT  TestTemplateBuildInstalledPackagesAvailable
    build_template_test.go:134: test-ubuntu-packages-available: [info] Building template rqau7fe93l4amdbsl8g3/9f8690d9-653e-4dc2-9390-bcaf0c6122af
    build_template_test.go:134: test-ubuntu-packages-available: [info] [base] FROM ubuntu:22.04 [ffd709f131f42dfab282de47a91dd2c139e900c1c11fc574b49b517a05ef0a32]
    build_template_test.go:134: test-ubuntu-packages-available: [info] Base Docker image size: 30 MB
    build_template_test.go:134: test-ubuntu-packages-available: [info] Creating file system and pulling Docker image
    build_template_test.go:134: test-ubuntu-packages-available: [info] Uncompressing layer sha256:f63eb04151bcac21ad049f8d781b97b219aba392c5457907f8f3e88e43eb48ec 30 MB
    build_template_test.go:134: test-ubuntu-packages-available: [info] Uncompressing layer sha256:d63a768f4e479071670bf4ff79424a74380e49f5e4f53ab7249958fd2b072c3c 12 MB
    build_template_test.go:134: test-ubuntu-packages-available: [info] Uncompressing layer sha256:8c4b1b28875140ed3abacaf16ad0d696f6bef912f52d2148f261a23e3349465b 168 B
    build_template_test.go:134: test-ubuntu-packages-available: [info] Layers extracted
    build_template_test.go:134: test-ubuntu-packages-available: [info] Root filesystem structure: bin, boot, dev, etc, home, lib, lib32, lib64, libx32, media, mnt, opt, proc, root, run, sbin, srv, sys, tmp, usr, var
    build_template_test.go:134: test-ubuntu-packages-available: [info] Provisioning sandbox template
    build_template_test.go:1057: 
        	Error Trace:	.../api/templates/build_template_test.go:97
        	            				.../api/templates/build_template_test.go:1057
        	Error:      	Received unexpected error:
        	            	Get "http://localhost:.../builds/9f8690d9-653e-4dc2-9390-bcaf0c6122af/status?level=info&logsOffset=10": context deadline exceeded
        	Test:       	TestTemplateBuildInstalledPackagesAvailable
--- FAIL: TestTemplateBuildInstalledPackagesAvailable (300.81s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateBuildRUN

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTemplateBuildRUN
=== PAUSE TestTemplateBuildRUN
=== CONT  TestTemplateBuildRUN
--- FAIL: TestTemplateBuildRUN (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateBuildRUN/Single_RUN_command

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 301s run time
=== RUN   TestTemplateBuildRUN/Single_RUN_command
=== PAUSE TestTemplateBuildRUN/Single_RUN_command
=== CONT  TestTemplateBuildRUN/Single_RUN_command
    build_template_test.go:134: test-ubuntu-run: [info] Building template 6pcvd8gdtfx00juj0py0/fb0ccec6-8ea8-4287-b665-d4c78b4fec2a
    build_template_test.go:134: test-ubuntu-run: [info] [base] FROM ubuntu:22.04 [ffd709f131f42dfab282de47a91dd2c139e900c1c11fc574b49b517a05ef0a32]
    build_template_test.go:134: test-ubuntu-run: [info] Base Docker image size: 30 MB
    build_template_test.go:134: test-ubuntu-run: [info] Creating file system and pulling Docker image
    build_template_test.go:134: test-ubuntu-run: [info] Uncompressing layer sha256:f63eb04151bcac21ad049f8d781b97b219aba392c5457907f8f3e88e43eb48ec 30 MB
    build_template_test.go:134: test-ubuntu-run: [info] Uncompressing layer sha256:d63a768f4e479071670bf4ff79424a74380e49f5e4f53ab7249958fd2b072c3c 12 MB
    build_template_test.go:134: test-ubuntu-run: [info] Uncompressing layer sha256:8c4b1b28875140ed3abacaf16ad0d696f6bef912f52d2148f261a23e3349465b 168 B
    build_template_test.go:134: test-ubuntu-run: [info] Layers extracted
    build_template_test.go:134: test-ubuntu-run: [info] Root filesystem structure: bin, boot, dev, etc, home, lib, lib32, lib64, libx32, media, mnt, opt, proc, root, run, sbin, srv, sys, tmp, usr, var
    build_template_test.go:134: test-ubuntu-run: [info] Provisioning sandbox template
    build_template_test.go:167: 
        	Error Trace:	.../api/templates/build_template_test.go:97
        	            				.../api/templates/build_template_test.go:167
        	Error:      	Received unexpected error:
        	            	Get "http://localhost:.../builds/fb0ccec6-8ea8-4287-b665-d4c78b4fec2a/status?level=info&logsOffset=10": context deadline exceeded
        	Test:       	TestTemplateBuildRUN/Single_RUN_command
--- FAIL: TestTemplateBuildRUN/Single_RUN_command (300.82s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateBuildStartReadyCommandExecution

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTemplateBuildStartReadyCommandExecution
=== PAUSE TestTemplateBuildStartReadyCommandExecution
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateBuildWORKDIR

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTemplateBuildWORKDIR
=== PAUSE TestTemplateBuildWORKDIR
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateBuildWithDifferentSourceImages

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTemplateBuildWithDifferentSourceImages
=== PAUSE TestTemplateBuildWithDifferentSourceImages
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateBuildWithTagInAlias

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTemplateBuildWithTagInAlias
=== PAUSE TestTemplateBuildWithTagInAlias
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateBuildWithTags

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTemplateBuildWithTags
=== PAUSE TestTemplateBuildWithTags
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateBuildWithTagsAndSandboxCreation

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTemplateBuildWithTagsAndSandboxCreation
=== PAUSE TestTemplateBuildWithTagsAndSandboxCreation
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateTagAssign

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTemplateTagAssign
=== PAUSE TestTemplateTagAssign
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateTagAssignFromSourceTag

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTemplateTagAssignFromSourceTag
=== PAUSE TestTemplateTagAssignFromSourceTag
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateTagDeleteLatestNotAllowed

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTemplateTagDeleteLatestNotAllowed
=== PAUSE TestTemplateTagDeleteLatestNotAllowed
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateTagInvalidTagName

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTemplateTagInvalidTagName
=== PAUSE TestTemplateTagInvalidTagName
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestTemplateTagNotFoundForNonExistentTemplate

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestTemplateTagNotFoundForNonExistentTemplate
=== PAUSE TestTemplateTagNotFoundForNonExistentTemplate
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestUpdateNonExistentTemplateWithAPIKey

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestUpdateNonExistentTemplateWithAPIKey
=== PAUSE TestUpdateNonExistentTemplateWithAPIKey
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestUpdateTemplateNotOwnedByTeam

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 301s run time
=== RUN   TestUpdateTemplateNotOwnedByTeam
=== PAUSE TestUpdateTemplateNotOwnedByTeam
=== CONT  TestUpdateTemplateNotOwnedByTeam
    template_update_test.go:206: Build timeout exceeded
--- FAIL: TestUpdateTemplateNotOwnedByTeam (300.82s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestUpdateTemplateVisibilityToPrivateWithAPIKey

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestUpdateTemplateVisibilityToPrivateWithAPIKey
=== PAUSE TestUpdateTemplateVisibilityToPrivateWithAPIKey
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestUpdateTemplateVisibilityToPublicWithAPIKey

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestUpdateTemplateVisibilityToPublicWithAPIKey
=== PAUSE TestUpdateTemplateVisibilityToPublicWithAPIKey
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestUpdateTemplateWithInvalidAPIKey

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 0s run time
=== RUN   TestUpdateTemplateWithInvalidAPIKey
=== PAUSE TestUpdateTemplateWithInvalidAPIKey
github.com/e2b-dev/infra/tests/integration/internal/tests/api/templates::TestUpdateTemplateWithSupabaseToken

Flake rate in main: 100.00% (Passed 0 times, Failed 2 times)

Stack Traces | 301s run time
=== RUN   TestUpdateTemplateWithSupabaseToken
=== PAUSE TestUpdateTemplateWithSupabaseToken
=== CONT  TestUpdateTemplateWithSupabaseToken
    template_update_test.go:149: Build timeout exceeded
--- FAIL: TestUpdateTemplateWithSupabaseToken (300.82s)

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@ValentaTomas ValentaTomas force-pushed the feat/block-state-tracker branch from d5b8ccc to d8ed9f4 Compare May 4, 2026 18:01
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d8ed9f4c8d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/orchestrator/pkg/sandbox/block/tracker.go Outdated
@ValentaTomas ValentaTomas force-pushed the feat/block-state-tracker branch 2 times, most recently from a762cc9 to b65129f Compare May 4, 2026 18:11
@ValentaTomas
Copy link
Copy Markdown
Member Author

Re: Bugbot summary on UFFD page-state offset reconstruction — non-issue. idx is recorded via header.BlockIdx(offset, u.pageSize) where offset originates from ma.GetOffset(addr). UFFD always faults on page-aligned addresses, so idx*pageSize == offset round-trips exactly, matching the prior snapshot semantics. Also note the snapshot helper is test-only (rpc_services_test.go).

@dobrac dobrac enabled auto-merge (squash) May 4, 2026 18:22
@qodo-code-review
Copy link
Copy Markdown

CI Feedback 🧐

A test triggered by this PR failed. Here is an AI-generated analysis of the failure:

Action: integration-tests / integration_tests

Failed stage: Run Integration Tests [❌]

Failed test name: TestTeamMetrics

Failure summary:

The action failed due to an integration test failure:
- TestTeamMetrics failed with an assertion at
tests/integration/internal/tests/api/metrics/team_metrics_test.go:61: Should be true with message
MaxConcurrentSandboxes should be >= 0, meaning the metrics value returned/parsed for
MaxConcurrentSandboxes was not >= 0 (likely missing/invalid/negative), causing the test to fail.

Additional issues appeared in the logs (may be side effects but are not the direct test failure):
-
The API pprof server failed to start: listen tcp 127.0.0.1:6060: bind: address already in use.
-
Docker reported network with name e2b already exists during setup/migrations (commands appear to be
guarded with || true, so this likely did not fail the job by itself).

Relevant error logs:
1:  ##[group]Runner Image Provisioner
2:  Hosted Compute Agent
...

2233:  Waiting for Clickhouse to be healthy...
2234:  Waiting for Clickhouse to be healthy...
2235:  3320bc253b92: Pull complete
2236:  e9c5d9372e23: Pull complete
2237:  d9530588fbf4: Pull complete
2238:  7a1df7252cdc: Pull complete
2239:  495de54b3f05: Pull complete
2240:  3969971854e9: Pull complete
2241:  Digest: sha256:69ced3e6e017fb652d77a0496858806f89fc54653dad8c3c6893939aa05e9833
2242:  Status: Downloaded newer image for clickhouse/clickhouse-server:25.4.5.24
2243:  /entrypoint.sh: neither CLICKHOUSE_USER nor CLICKHOUSE_PASSWORD is set, disabling network access for user 'default'
2244:  Processing configuration file '/etc/clickhouse-server/config.xml'.
2245:  Merging configuration file '/etc/clickhouse-server/config.d/config.xml'.
2246:  Merging configuration file '/etc/clickhouse-server/config.d/docker_related_config.xml'.
2247:  Logging trace to /var/log/clickhouse-server/clickhouse-server.log
2248:  Logging errors to /var/log/clickhouse-server/clickhouse-server.err.log
2249:  Waiting for Clickhouse to be healthy...
2250:  Waiting for Clickhouse to be healthy...
2251:  Clickhouse is healthy!
2252:  make: Entering directory '/home/runner/work/infra/infra/packages/clickhouse'
2253:  Applying Clickhouse migrations *migrate-without-build*
2254:  Error response from daemon: network with name e2b already exists
2255:  2026/05/04 18:18:17 OK   20250521131545_add_metrics_local.sql (7.7ms)
...

2367:  OTEL_COLLECTOR_GRPC_ENDPOINT: localhost:4317
2368:  MAX_PARALLEL_MEMFILE_SNAPSHOTTING: 2
2369:  SHARED_CHUNK_CACHE_PATH: ./.e2b-chunk-cache
2370:  REDIS_URL: localhost:6379
2371:  API_INTERNAL_GRPC_ADDRESS: localhost:5009
2372:  DEFAULT_PERSISTENT_VOLUME_TYPE: test-volume-type
2373:  SANDBOX_STORAGE_BACKEND: redis
2374:  ##[endgroup]
2375:  creating persistent volume mounts
2376:  Start otel-collector
2377:  Starting OtelCollector...
2378:  Waiting for OtelCollector to become healthy at http://localhost:13133/healthz (timeout: 30 seconds)...
2379:  make: Entering directory '/home/runner/work/infra/infra/packages/otel-collector'
2380:  # Fill in the variables in the config file
2381:  docker network create e2b || true
2382:  Error response from daemon: network with name e2b already exists
2383:  docker run --rm --name otel-collector \
...

2543:  [GIN-debug] GET    /templates/:templateID/tags --> github.com/e2b-dev/infra/packages/api/internal/api.(*ServerInterfaceWrapper).GetTemplatesTemplateIDTags-fm (12 handlers)
2544:  [GIN-debug] GET    /v2/sandboxes             --> github.com/e2b-dev/infra/packages/api/internal/api.(*ServerInterfaceWrapper).GetV2Sandboxes-fm (12 handlers)
2545:  [GIN-debug] GET    /v2/sandboxes/:sandboxID/logs --> github.com/e2b-dev/infra/packages/api/internal/api.(*ServerInterfaceWrapper).GetV2SandboxesSandboxIDLogs-fm (12 handlers)
2546:  [GIN-debug] POST   /v2/templates             --> github.com/e2b-dev/infra/packages/api/internal/api.(*ServerInterfaceWrapper).PostV2Templates-fm (12 handlers)
2547:  [GIN-debug] PATCH  /v2/templates/:templateID --> github.com/e2b-dev/infra/packages/api/internal/api.(*ServerInterfaceWrapper).PatchV2TemplatesTemplateID-fm (12 handlers)
2548:  [GIN-debug] POST   /v2/templates/:templateID/builds/:buildID --> github.com/e2b-dev/infra/packages/api/internal/api.(*ServerInterfaceWrapper).PostV2TemplatesTemplateIDBuildsBuildID-fm (12 handlers)
2549:  [GIN-debug] POST   /v3/templates             --> github.com/e2b-dev/infra/packages/api/internal/api.(*ServerInterfaceWrapper).PostV3Templates-fm (12 handlers)
2550:  [GIN-debug] GET    /volumes                  --> github.com/e2b-dev/infra/packages/api/internal/api.(*ServerInterfaceWrapper).GetVolumes-fm (12 handlers)
2551:  [GIN-debug] POST   /volumes                  --> github.com/e2b-dev/infra/packages/api/internal/api.(*ServerInterfaceWrapper).PostVolumes-fm (12 handlers)
2552:  [GIN-debug] DELETE /volumes/:volumeID        --> github.com/e2b-dev/infra/packages/api/internal/api.(*ServerInterfaceWrapper).DeleteVolumesVolumeID-fm (12 handlers)
2553:  [GIN-debug] GET    /volumes/:volumeID        --> github.com/e2b-dev/infra/packages/api/internal/api.(*ServerInterfaceWrapper).GetVolumesVolumeID-fm (12 handlers)
2554:  �[34mINFO�[0m  internal gRPC service starting  {"service": "orchestration-api", "internal": true, "pid": 67184, "port": 5009}
2555:  �[34mINFO�[0m  Http service starting  {"service": "orchestration-api", "internal": true, "pid": 67184, "port": 3000}
2556:  �[34mINFO�[0m  edge gRPC service starting  {"service": "orchestration-api", "internal": true, "pid": 67184, "port": 5109}
2557:  �[34mINFO�[0m  pprof server starting  {"service": "orchestration-api", "internal": true, "pid": 67184, "port": 6060}
2558:  �[31mERROR�[0m  pprof server encountered error  {"service": "orchestration-api", "internal": true, "pid": 67184, "error": "listen tcp 127.0.0.1:6060: bind: address already in use"}
2559:  github.com/e2b-dev/infra/packages/shared/pkg/logger.(*TracedLogger).Error
2560:  /home/runner/work/infra/infra/packages/shared/pkg/logger/logger.go:164
...

3083:  === CONT  TestStdinCantRead
3084:  === CONT  TestWatcher
3085:  build_template_test.go:134: test-ubuntu-run: [info] Building template cuj1kpymhs1vr677xss2/882d4f07-14c8-4d67-873f-59b979cc9a0a
3086:  Executing command apt-get in sandbox i1qnhn7tio1iaqisc01mo (user: root)
3087:  mask_request_host_test.go:39: Command [apt-get] output: event:{start:{pid:1253}}
3088:  Executing command bash in sandbox inbfha4fioukowux7p6y6 (user: root)
3089:  filesystem_pause_resume_integrity_test.go:31: Command [bash] output: event:{start:{pid:1253}}
3090:  sandbox_list_test.go:327: Created sandbox 1/12: i6u3hloc7yjd480n3uvw7
3091:  Executing command bash in sandbox i3zriu1js7jpumfphd3tu (user: root)
3092:  filesystem_pause_resume_integrity_test.go:55: Command [bash] output: event:{start:{pid:1252}}
3093:  sandbox_list_test.go:327: Created sandbox 2/12: ittw2bvecfqna0o5toza0
3094:  --- PASS: TestAccessToAuthorizedPathWithoutToken (0.50s)
3095:  === CONT  TestAccessWithNotCorrespondingSignatureAndSignatureExpiration
3096:  Executing command /bin/bash in sandbox i9c9e3p2t7zz1r9peqt4w (user: root)
3097:  process_test.go:271: Command [/bin/bash] output: event:{start:{pid:1252}}
3098:  process_test.go:271: Command [/bin/bash] output: event:{end:{exit_code:1  exited:true  status:"exit status 1"  error:"exit status 1"}}
3099:  filesystem_pause_resume_integrity_test.go:55: Command [bash] output: event:{end:{exited:true status:"exit status 0"}}
...

3173:  auto_resume_test.go:69: Command [ls] output: event:{start:{pid:1253}}
3174:  auto_resume_test.go:69: Command [ls] output: event:{end:{exited:true  status:"exit status 0"}}
3175:  auto_resume_test.go:69: Command [ls] completed successfully in sandbox impdu7sw5smgeovv5twtq
3176:  --- PASS: TestSandboxAutoResumeViaExec (1.90s)
3177:  === CONT  TestSandboxProxyWorkingPort
3178:  build_template_test.go:134: test-ubuntu-run: [info] Base Docker image size: 30 MB
3179:  sandbox_list_test.go:327: Created sandbox 6/12: iygvkcz0fm5asu5pnb0up
3180:  --- PASS: TestDownloadFileWhenAuthIsDisabled (1.06s)
3181:  === CONT  TestWorkdirPermissionDenied
3182:  Executing command ls in sandbox isjfsygmas4rx1mp40pjf
3183:  --- PASS: TestSandboxProxyClosedPort (2.63s)
3184:  === CONT  TestSandboxAutoResumeWithoutExplicitTimeoutUsesMinimumTimeout
3185:  --- PASS: TestSandboxNoAutoResumeWithoutFlag (2.66s)
3186:  === CONT  TestSandboxAutoResumeUsesInitialTimeoutNotUpdatedTimeout
3187:  team_metrics_test.go:61: 
3188:  Error Trace:	/home/runner/work/infra/infra/tests/integration/internal/tests/api/metrics/team_metrics_test.go:61
3189:  Error:      	Should be true
3190:  Test:       	TestTeamMetrics
3191:  Messages:   	MaxConcurrentSandboxes should be >= 0
3192:  Executing command mount in sandbox ipgbnx58uyp4t7iz57dt7 (user: root)
3193:  crud_test.go:167: Command [mount] output: event:{start:{pid:1297}}
3194:  --- PASS: TestTeamMetricsWithTimeRange (3.44s)
3195:  === CONT  TestTeamMetricsMaxSandboxStartRate
3196:  crud_test.go:167: Command [mount] output: event:{data:{stdout:"/dev/vda on / type ext4 (rw,relatime)\ndevtmpfs on /dev type devtmpfs (rw,relatime,size=501228k,nr_inodes=125307,mode=755)\nproc on /proc type proc (rw,nosuid,nodev,noexec,relatime)\nsysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)\nsecurityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)\nselinuxfs on /sys/fs/selinux type selinuxfs (rw,nosuid,noexec,relatime)\ntmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)\ndevpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)\ntmpfs on /run type tmpfs (rw,nosuid,nodev,size=201780k,nr_inodes=819200,mode=755)\ntmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)\ncgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot)\npstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)\nbpf on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)\nsystemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=30,pgrp=1,timeout=0,minproto=5,maxproto=5,direct)\nmqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)\nhugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)\ndebugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime)\nfusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime)\nramfs on /run/credentials/systemd-sysusers.service type ramfs (ro,nosuid,nodev,noexec,relatime,mode=700)\nramfs on /run/credentials/systemd-sysctl.service type ramfs (ro,nosuid,nodev,noexec,relatime,mode=700)\nramfs on /run/credentials/systemd-tmpfiles-setup-dev.service type ramfs (ro,nosuid,nodev,noexec,relatime,mode=700)\nramfs on /run/credentials/systemd-tmpfiles-setup.service type ramfs (ro,nosuid,nodev,noexec,relatime,mode=700)\nbinfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec,relatime)\nsunrpc on /run/rpc_pipefs type rpc_pipefs (rw,relatime)\ntmpfs on /etc/ssl/certs type tmpfs (rw,nosuid,nodev,size=201780k,nr_inodes=819200,mode=755)\n192.0.2.1:/2bdf4683-3af5-4bf0-9fda-c9f71f2e089a on /home/user/vol type nfs (rw,relatime,sync,vers=3,rsize=1048576,wsize=1048576,namlen=255,acregmin=0,acregmax=0,acdirmin=0,acdirmax=0,hard,noac,proto=tcp,port=2049,timeo=600,retrans=2,sec=sys,mountaddr=192.0.2.1,mountvers=3,mountport=2049,mountproto=tcp,lookupcache=none,local_lock=none,addr=192.0.2.1)\n"}}
3197:  crud_test.go:167: Command [mount] output: event:{end:{exited:true status:"exit status 0"}}
3198:  crud_test.go:167: Command [mount] completed successfully in sandbox ipgbnx58uyp4t7iz57dt7
3199:  --- FAIL: TestTeamMetrics (3.48s)
3200:  === CONT  TestSandboxMetrics
...

3256:  process_test.go:251: Command [/bin/bash] output: event:{start:{pid:1253}}
3257:  process_test.go:251: Command [/bin/bash] output: event:{end:{exited:true  status:"exit status 0"}}
3258:  process_test.go:251: Command [/bin/bash] completed successfully in sandbox iqk83udjlt3xgeczxjae9
3259:  Executing command /bin/bash in sandbox iqk83udjlt3xgeczxjae9
3260:  process_test.go:254: Command [/bin/bash] output: event:{start:{pid:1255}}
3261:  sandbox_memory_integrity_test.go:33: Command [bash] output: event:{data:{stdout:"Hit:1 http://deb.debian.org/debian bookworm InRelease\nHit:2 http://deb.debian.org/debian bookworm-updates InRelease\nHit:3 http://deb.debian.org/debian-security bookworm-security InRelease\n"}}
3262:  process_test.go:254: Command [/bin/bash] output: event:{end:{exited:true  status:"exit status 0"}}
3263:  process_test.go:254: Command [/bin/bash] completed successfully in sandbox iqk83udjlt3xgeczxjae9
3264:  --- PASS: TestTeamMetricsMaxSandboxStartRate (1.45s)
3265:  === CONT  TestTeamMetricsMaxEmpty/concurrent_sandboxes
3266:  Executing command /bin/bash in sandbox iqk83udjlt3xgeczxjae9
3267:  process_test.go:257: Command [/bin/bash] output: event:{start:{pid:1256}}
3268:  --- PASS: TestTeamMetricsMaxEmpty/concurrent_sandboxes (0.02s)
3269:  === CONT  TestTeamMetricsMaxEmpty/sandbox_start_rate
3270:  process_test.go:257: Command [/bin/bash] output: event:{data:{stderr:"ls: cannot open directory '/tmp/restricted-workdir': Permission denied\n"}}
3271:  process_test.go:257: Command [/bin/bash] output: event:{end:{exit_code:2  exited:true  status:"exit status 2"  error:"exit status 2"}}
3272:  --- PASS: TestTeamMetricsMaxEmpty/sandbox_start_rate (0.02s)
...

3565:  ca_cert_test.go:178: Command [update-ca-certificates] completed successfully in sandbox iuaqicv6an3f7nzh0ygy1
3566:  sandbox_memory_integrity_test.go:33: Command [bash] output: event:{data:{stdout:"0 upgraded, 1 newly installed, 0 to remove and 146 not upgraded.\nNeed to get 50.8 kB of archives.\nAfter this operation, 132 kB of additional disk space will be used.\nGet:1 http://deb.debian.org/debian bookworm/main amd64 time amd64 1.9-0.2 [50.8 kB]\n"}}
3567:  Executing command cat in sandbox iuaqicv6an3f7nzh0ygy1 (user: root)
3568:  ca_cert_test.go:181: Command [cat] output: event:{start:{pid:2262}}
3569:  --- PASS: TestSandboxFilesystemPauseResumeIntegrity/scattered_write_hash_survives_pause (7.63s)
3570:  --- PASS: TestSandboxFilesystemPauseResumeIntegrity (0.00s)
3571:  sandbox_memory_integrity_test.go:141: Command [bash] output: event:{data:{stdout:"\nReading state information..."}}
3572:  sandbox_memory_integrity_test.go:141: Command [bash] output: event:{data:{stdout:"\n"}}
3573:  ca_cert_test.go:181: Command [cat] output: event:{data:{stdout:"-----BEGIN CERTIFICATE-----\nMIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE\nAwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw\nCQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ\nBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND\nVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb\nqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY\nHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo\nG2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA\nlHPrzg5XPAOBOp0KoVdDaaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhr\nIA8wKFSVf+DuzgpmndFALW4ir50awQUZ0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/\n0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH\nk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47\n4KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMO\nm3WR5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpa\ncXpkatcnYGMN285J9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPl\nuUsXQA+xtrn13k/c4LOsOxFwYIRKQ26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYI\nKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRwOi8vd3d3LmFjY3YuZXMvZmls\nZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEuY3J0MB8GCCsG\nAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2\nVuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeT\nVfZW6oHlNsyMHj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIG\nCCsGAQUFBwICMIIBFB6CARAAQQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUA\ncgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBhAO0AegAgAGQAZQAgAGwAYQAgAEEA\nQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUAYwBuAG8AbABvAGcA\n7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBjAHQA\ncgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAA\nQwBQAFMAIABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUA\nczAwBggrBgEFBQcCARYkaHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2Mu\naHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRt\naW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2MV9kZXIuY3JsMA4GA1Ud\nDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZIhvcNAQEF\nBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdp\nD70ER9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gU\nJyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m\nAM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD\nvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms\ntn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH\n7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h\nI6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA\nh1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF\nd3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H\npPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsx\nCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJ\nWiBGTk1ULVJDTTAeFw0wODEwMjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJ\nBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBG\nTk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALpxgHpMhm5/\nyBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcfqQgf\nBBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAz\nWHFctPVrbtQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxF\ntBDXaEAUwED653cXeuYLj2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z\n374jNUUeAlz+taibmSXaXvMiwzn15Cou08YfxGyqxRxqAQVKL9LFwag0Jl1mpdIC\nIfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mwWsXmo8RZZUc1g16p6DUL\nmbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnTtOmlcYF7\nwk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peS\nMKGJ47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2\nZSysV4999AeU14ECll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMet\nUqIJ5G+GR4of6ygnXYMgrwTJbFaai0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUw\nAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFPd9xf3E6Jobd2Sn9R2gzL+H\nYJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1odHRwOi8vd3d3\nLmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD\nnFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1\nRXxlDPiyN8+sD8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYM\nLVN0V2Ue1bLdI4E7pWYjJ2cJj+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf\n77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrTQfv6MooqtyuGC2mDOL7Nii4LcK2N\nJpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW+YJF1DngoABd15jm\nfZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7Ixjp\n6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp\n1txyM/1d8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B\n9kiABdcPUXmsEKvU7ANm5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wok\nRqEIr9baRRmW1FMdW4R58MD3R++Lj8UGrp1MYp3/RgT408m2ECVAdf4WqslKYIYv\nuu8wd+RU4riEmViAqhOLUTpPSPaLtrM=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQsw\nCQYDVQQGEwJFUzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgw\nFgYDVQRhDA9WQVRFUy1RMjgyNjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1S\nQ00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4MTIyMDA5MzczM1oXDTQzMTIyMDA5\nMzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQtUkNNMQ4wDAYDVQQL\nDAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNBQyBS\nQUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuB\nBAAiA2IABPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LH\nsbI6GA60XYyzZl2hNPk2LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oK\nUm8BA06Oi6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD\nVR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqGSM49BAMDA2kAMGYCMQCu\nSuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoDzBOQn5IC\nMQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJy\nv+c=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIF7zCCA9egAwIBAgIIDdPjvGz5a7EwDQYJKoZIhvcNAQELBQAwgYQxEjAQBgNV\nBAUTCUc2MzI4NzUxMDELMAkGA1UEBhMCRVMxJzAlBgNVBAoTHkFORiBBdXRvcmlk\nYWQgZGUgQ2VydGlmaWNhY2lvbjEUMBIGA1UECxMLQU5GIENBIFJhaXoxIjAgBgNV\nBAMTGUFORiBTZWN1cmUgU2VydmVyIFJvb3QgQ0EwHhcNMTkwOTA0MTAwMDM4WhcN\nMzkwODMwMTAwMDM4WjCBhDESMBAGA1UEBRMJRzYzMjg3NTEwMQswCQYDVQQGEwJF\nUzEnMCUGA1UEChMeQU5GIEF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uMRQwEgYD\nVQQLEwtBTkYgQ0EgUmFpejEiMCAGA1UEAxMZQU5GIFNlY3VyZSBTZXJ2ZXIgUm9v\ndCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANvrayvmZFSVgpCj\ncqQZAZ2cC4Ffc0m6p6zzBE57lgvsEeBbphzOG9INgxwruJ4dfkUyYA8H6XdYfp9q\nyGFOtibBTI3/TO80sh9l2Ll49a2pcbnvT1gdpd50IJeh7WhM3pIXS7yr/2WanvtH\n2Vdy8wmhrnZEE26cLUQ5vPnHO6RYPUG9tMJJo8gN0pcvB2VSAKduyK9o7PQUlrZX\nH1bDOZ8rbeTzPvY1ZNoMHKGESy9LS+IsJJ1tk0DrtSOOMspvRdOoiXsezx76W0OL\nzc2oD2rKDF65nkeP8Nm2CgtYZRczuSPkdxl9y0oukntPLxB3sY0vaJxizOBQ+OyR\np1RMVwnVdmPF6GUe7m1qzwmd+nxPrWAI/VaZDxUse6mAq4xhj0oHdkLePfTdsiQz\nW7i1o0TJrH93PB0j7IKppuLIBkwC/qxcmZkLLxCKpvR/1Yd0DVlJRfbwcVw5Kda/\nSiOL9V8BY9KHcyi1Swr1+KuCLH5zJTIdC2MKF4EA/7Z2Xue0sUDKIbvVgFHlSFJn\nLNJhiQcND85Cd8BEc5xEUKDbEAotlRyBr+Qc5RQe8TZBAQIvfXOn3kLMTOmJDVb3\nn5HUA8ZsyY/b2BzgQJhdZpmYgG4t/wHFzstGH6wCxkPmrqKEPMVOHj1tyRRM4y5B\nu8o5vzY8KhmqQYdOpc5LMnndkEl/AgMBAAGjYzBhMB8GA1UdIwQYMBaAFJxf0Gxj\no1+TypOYCK2Mh6UsXME3MB0GA1UdDgQWBBScX9BsY6Nfk8qTmAitjIelLFzBNzAO\nBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOC\nAgEATh65isagmD9uw2nAalxJUqzLK114OMHVVISfk/CHGT0sZonrDUL8zPB1hT+L\n9IBdeeUXZ701guLyPI59WzbLWoAAKfLOKyzxj6ptBZNscsdW699QIyjlRRA96Gej\nrw5VD5AJYu9LWaL2U/HANeQvwSS9eS9OICI7/RogsKQOLHDtdD+4E5UGUcjohybK\npFtqFiGS3XNgnhAY3jyB6ugYw3yJ8otQPr0R4hUDqDZ9MwFsSBXXiJCZBMXM5gf0\nvPSQ7RPi6ovDj6MzD8EpTBNO2hVWcXNyglD2mjN8orGoGjR0ZVzO0eurU+AagNjq\nOknkJjCb5RyKqKkVMoaZkgoQI1YS4PbOTOK7vtuNknMBZi9iPrJyJ0U27U1W45eZ\n/zo1PqVUSlJZS2Db7v54EX9K3BR5YLZrZAPbFYPhor72I5dQ8AkzNqdxliXzuUJ9\n2zg/LFis6ELhDtjTO0wugumDLmsx2d1Hhk9tl5EuT+IocTUW0fJz/iUrB0ckYyfI\n+PbZa/wSMVYIwFNCr5zQM378BvAxRAMU8Vjq8moNqRGyg77FGr8H6lnco4g175x2\nMjxNBiLOFeXdntiP2t7SxDnlF4HPOEfrf4htWRvfn0IUrn7PqLBmZdo3r5+qPeoo\ntt7VMVgWglvquxl1AnMaykgaIZOQCo6ThKd9OyMYkomgjaw=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UE\nBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8w\nMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290\nIENBMB4XDTExMDkyMjExMjIwMloXDTMwMDkyMjExMjIwMlowazELMAkGA1UEBhMC\nSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1\nODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENB\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNv\nUTufClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX\n4ay8IMKx4INRimlNAJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9\nKK3giq0itFZljoZUj5NDKd45RnijMCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/\ngCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1fYVEiVRvjRuPjPdA1Yprb\nrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2oxgkg4YQ\n51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2F\nbe8lEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxe\nKF+w6D9Fz8+vm2/7hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4F\nv6MGn8i1zeQf1xcGDXqVdFUNaBr8EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbn\nfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5jF66CyCU3nuDuP/jVo23Eek7\njPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLYiDrIn3hm7Ynz\nezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt\nifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAL\ne3KHwGCmSUyIWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70\njsNjLiNmsGe+b7bAEzlgqqI0JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDz\nWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKxK3JCaKygvU5a2hi/a5iB0P2avl4V\nSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+Xlff1ANATIGk0k9j\npwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC4yyX\nX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+Ok\nfcvHlXHo2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7R\nK4X9p2jIugErsWx0Hbhzlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btU\nZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXemOR/qnuOf0GZvBeyqdn6/axag67XH/JJU\nLysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT\nLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE\nBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz\ndCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL\nMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp\ncm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC\nAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP\nHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr\nba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL\nMeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1\nyHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr\nVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/\nnx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ\nKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG\nXUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj\nvbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt\nZ8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g\nN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC\nnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE\nBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz\ndCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL\nMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp\ncm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC\nAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y\nYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua\nkCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL\nQESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp\n6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG\nyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i\nQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ\nKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO\ntDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu\nQY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ\nLgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u\nolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48\nx3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE\nBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz\ndCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG\nA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U\ncnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf\nqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ\nJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ\n+jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS\ns8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5\nHMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7\n70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG\nV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S\nqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S\n5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia\nC1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX\nOwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE\nFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/\nBAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2\nKI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg\nNt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B\n8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ\nMKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc\n0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ\nu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF\nu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH\nYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8\nGKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO\nRtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e\nKeC2uAloGRwYQw==\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC\nVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ\ncmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ\nBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt\nVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D\n0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9\nss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G\nA1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G\nA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs\naobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I\nflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ==\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF\nADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6\nb24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL\nMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv\nb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj\nca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM\n9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw\nIFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6\nVOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L\n93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm\njgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC\nAYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA\nA4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI\nU5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs\nN+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv\no/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU\n5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy\nrqXRfboQnoZsG4q5WTP468SQvvG5\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwF\nADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6\nb24gUm9vdCBDQSAyMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTEL\nMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv\nb3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK2Wny2cSkxK\ngXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4kHbZ\nW0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg\n1dKmSYXpN+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K\n8nu+NQWpEjTj82R0Yiw9AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r\n2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvdfLC6HM783k81ds8P+HgfajZRRidhW+me\nz/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAExkv8LV/SasrlX6avvDXbR\n8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSSbtqDT6Zj\nmUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz\n7Mt0Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6\n+XUyo05f7O0oYtlNc/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI\n0u1ufm8/0i2BWSlmy5A5lREedCf+3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB\nAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSwDPBMMPQFWAJI/TPlUq9LhONm\nUjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oAA7CXDpO8Wqj2\nLIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY\n+gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kS\nk5Nrp+gvU5LEYFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl\n7uxMMne0nxrpS10gxdr9HIcWxkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygm\nbtmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQgj9sAq+uEjonljYE1x2igGOpm/Hl\nurR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbWaQbLU8uz/mtBzUF+\nfUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoVYh63\nn749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE\n76KlXIx3KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H\n9jVlpNMKVv/1F2Rs76giJUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT\n4PsJYGw=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5\nMQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g\nUm9vdCBDQSAzMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG\nA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg\nQ0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZBf8ANm+gBG1bG8lKl\nui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjrZt6j\nQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSr\nttvXBp43rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkr\nBqWTrBqYaGFy+uGh0PsceGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteM\nYyRIHN8wfdVoOw==\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5\nMQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g\nUm9vdCBDQSA0MB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG\nA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg\nQ0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN/sGKe0uoe0ZLY7Bi\n9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri83Bk\nM6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB\n/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WB\nMAoGCCqGSM49BAMDA2gAMGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlw\nCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1AE47xDqUEpHJWEadIRNyp4iciuRMStuW\n1KyLa2tJElMzrdfkviT8tQp21KW8EA==\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UE\nAwwVQXRvcyBUcnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQG\nEwJERTAeFw0xMTA3MDcxNDU4MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMM\nFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsGA1UECgwEQXRvczELMAkGA1UEBhMC\nREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCVhTuXbyo7LjvPpvMp\nNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr54rM\nVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+\nSZFhyBH+DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ\n4J7sVaE3IqKHBAUsR320HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0L\ncp2AMBYHlT8oDv3FdU9T1nSatCQujgKRz3bFmx5VdJx4IbHwLfELn8LVlhgf8FQi\neowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7Rl+lwrrw7GWzbITAPBgNV\nHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZbNshMBgG\nA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3\nDQEBCwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8j\nvZfza1zv7v1Apt+hk6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kP\nDpFrdRbhIfzYJsdHt6bPWHJxfrrhTZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pc\nmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a961qn8FYiqTxlVMYVqL2Gns2D\nlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G3mB/ufNPRJLv\nKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UE\nBhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h\ncHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEy\nMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg\nQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi\nMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9\nthDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM\ncas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG\nL9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i\nNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h\nX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b\nm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy\nZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja\nEbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T\nKI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF\n6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh\nOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYD\nVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNHDhpkLzCBpgYD\nVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp\ncm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBv\nACAAZABlACAAbABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBl\nAGwAbwBuAGEAIAAwADgAMAAxADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF\n661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx51tkljYyGOylMnfX40S2wBEqgLk9\nam58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qkR71kMrv2JYSiJ0L1\nILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaPT481\nPyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS\n3a/DTg4fJl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5k\nSeTy36LssUzAKh3ntLFlosS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF\n3dvd6qJ2gHN99ZwExEWN57kci57q13XRcrHedUTnQn3iV2t93Jm8PYMo6oCTjcVM\nZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoRsaS8I8nkvof/uZS2+F0g\nStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTDKCOM/icz\nQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQB\njLMi6Et8Vcad+qMUu2WFbm5PEn4KPJ2V\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIGFDCCA/ygAwIBAgIIG3Dp0v+ubHEwDQYJKoZIhvcNAQELBQAwUTELMAkGA1UE\nBhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h\ncHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0xNDA5MjMxNTIyMDdaFw0zNjA1\nMDUxNTIyMDdaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg\nQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi\nMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9\nthDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM\ncas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG\nL9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i\nNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h\nX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b\nm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy\nZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja\nEbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T\nKI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF\n6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh\nOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMB0GA1UdDgQWBBRlzeurNR4APn7VdMAc\ntHNHDhpkLzASBgNVHRMBAf8ECDAGAQH/AgEBMIGmBgNVHSAEgZ4wgZswgZgGBFUd\nIAAwgY8wLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuZmlybWFwcm9mZXNpb25hbC5j\nb20vY3BzMFwGCCsGAQUFBwICMFAeTgBQAGEAcwBlAG8AIABkAGUAIABsAGEAIABC\nAG8AbgBhAG4AbwB2AGEAIAA0ADcAIABCAGEAcgBjAGUAbABvAG4AYQAgADAAOAAw\nADEANzAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBAHSHKAIrdx9m\niWTtj3QuRhy7qPj4Cx2Dtjqn6EWKB7fgPiDL4QjbEwj4KKE1soCzC1HA01aajTNF\nSa9J8OA9B3pFE1r/yJfY0xgsfZb43aJlQ3CTkBW6kN/oGbDbLIpgD7dvlAceHabJ\nhfa9NPhAeGIQcDq+fUs5gakQ1JZBu/hfHAsdCPKxsIl68veg4MSPi3i1O1ilI45P\nVf42O+AMt8oqMEEgtIDNrvx2ZnOorm7hfNoD6JQg5iKj0B+QXSBTFCZX2lSX3xZE\nEAEeiGaPcjiT3SC3NL7X8e5jjkd5KAb881lFJWAiMxujX6i6KtoaPc1A6ozuBRWV\n1aUsIC+nmCjuRfzxuIgALI9C2lHVnOUTaHFFQ4ueCyE8S1wF3BqfmI7avSKecs2t\nCsvMo2ebKHTEm9caPARYpoKdrcd7b/+Alun4jWq9GJAd/0kakFI3ky88Al2CdgtR\n5xbHV/g4+afNmyJU72OwFW1TZQNKXkqgsqeOSQBZONXH9IBk9W6VULgRfhVwOEqw\nf9DEMnDAGf/JOC0ULGb0QkTmVXYbgBVX/8Cnp6o5qtjTcNAuuuuUavpfNIbnYrX9\nivAwhZTJryQCL2/W3Wf+47BVTwSYT6RBVuKT0Gro1vP7ZeDOdcQxWQzugsgMYDNK\nGbqEZycPvEJdvSRUDewdcAZfpLz6IHxV\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ\nRTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD\nVQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX\nDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y\nZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy\nVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr\nmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr\nIZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK\nmpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu\nXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy\ndc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye\njl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1\nBE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3\nDQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92\n9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx\njkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0\nEpn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz\nksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS\nR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd\nMBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg\nQ2xhc3MgMiBSb290IENBMB4XDTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1ow\nTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw\nHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB\nBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1g1Lr\n6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPV\nL4O2fuPn9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC91\n1K2GScuVr1QGbNgGE41b/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHx\nMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqUCqTqc/sLUegTBxj6DvEr0VQVfTzh97QZ\nQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeffawrbD02TTqigzXsu8lkB\narcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgIzRFo1clr\nUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLi\nFRhnBkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRS\nP/TizPJhk9H9Z2vXUq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN\n9SG9dKpN6nIDSdvHXx1iY8f93ZHsM+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxP\nAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMmAd+BikoL1Rpzz\nuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAU18h\n9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s\nA20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3t\nOluwlN5E40EIosHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo\n+fsicdl9sz1Gv7SEr5AcD48Saq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7\nKcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYdDnkM/crqJIByw5c/8nerQyIKx+u2\nDISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWDLfJ6v9r9jv6ly0Us\nH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0oyLQ\nI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK7\n5t98biGCwWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h\n3PFaTWwyI0PurKju7koSCTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPz\nY11aWOIv4x3kqdbQCtCev9eBCfHJxyYNrJgWVqA=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd\nMBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg\nQ2xhc3MgMyBSb290IENBMB4XDTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFow\nTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw\nHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB\nBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRHsJ8Y\nZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3E\nN3coTRiR5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9\ntznDDgFHmV0ST9tD+leh7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX\n0DJq1l1sDPGzbjniazEuOQAnFN44wOwZZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c\n/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH2xc519woe2v1n/MuwU8X\nKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV/afmiSTY\nzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvS\nO1UQRwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D\n34xFMFbG02SrZvPAXpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgP\nK9Dx2hzLabjKSWJtyNBjYt1gD1iqj6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3\nAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFEe4zf/lb+74suwv\nTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAACAj\nQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV\ncSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXS\nIGrs/CIBKM+GuIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2\nHJLw5QY33KbmkJs4j1xrG0aGQ0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsa\nO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8ZORK15FTAaggiG6cX0S5y2CBNOxv\n033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2KSb12tjE8nVhz36u\ndmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz6MkE\nkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg41\n3OEMXbugUZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvD\nu79leNKGef9JOxqDDPDeeOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq\n4/g7u9xN12TyUb7mqqta6THuBrxzvxNiCp/HuZc=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNV\nBAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu\nMRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQy\nMDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx\nEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjIw\nggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbCw3Oe\nNcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNH\nPWSb6WiaxswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3I\nx2ymrdMxp7zo5eFm1tL7A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbe\nQTg06ov80egEFGEtQX6sx3dOy1FU+16SGBsEWmjGycT6txOgmLcRK7fWV8x8nhfR\nyyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqVg8NTEQxzHQuyRpDRQjrO\nQG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa5Beny912\nH9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJ\nQfYEkoopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUD\ni/ZnWejBBhG93c+AAk9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORs\nnLMOPReisjQS1n6yqEm70XooQL6iFh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1\nrqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud\nDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5uQu0wDQYJKoZI\nhvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM\ntCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqf\nGopTpti72TVVsRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkb\nlvdhuDvEK7Z4bLQjb/D907JedR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka\n+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W81k/BfDxujRNt+3vrMNDcTa/F1bal\nTFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjxmHHEt38OFdAlab0i\nnSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01utI3\ngzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18Dr\nG5gPcFw0sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3Os\nzMOl6W8KjptlwlCFtaOgUxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8x\nL4ysEr3vQCj8KWefshNPZiTEUxnpHikV7+ZtsH8tZ/3zbBt1RqPlShfppNcL\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJD\nTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y\naXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkx\nMjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5j\naWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJP\nT1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnVBU03\nsQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpL\nTIpTUnrD7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5\n/ZOkVIBMUtRSqy5J35DNuF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp\n7hZZLDRJGqgG16iI0gNyejLi6mhNbiyWZXvKWfry4t3uMCz7zEasxGPrb382KzRz\nEpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7xzbh72fROdOXW3NiGUgt\nhxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9fpy25IGvP\na931DfSC"}}
3574:  ca_cert_test.go:181: Command [cat] output: event:{data:{stdout:"t/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqot\naK8KgWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNg\nTnYGmE69g60dWIolhdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfV\nPKPtl8MeNPo4+QgO48BdK4PRVmrJtqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hv\ncWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAfBgNVHSMEGDAWgBTj/i39KNAL\ntbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAd\nBgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB\nACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObT\nej/tUxPQ4i9qecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdL\njOztUmCypAbqTuv0axn96/Ua4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBS\nESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sGE5uPhnEFtC+NiWYzKXZUmhH4J/qy\nP5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfXBDrDMlI1Dlb4pd19\nxIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjnaH9d\nCi77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN\n5mydLIhyPDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe\n/v5WOaHIz16eGWRGENoXkbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+Z\nAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3CekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ\n5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB\ngTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G\nA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV\nBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw\nMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl\nYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P\nRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0\naG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3\nUcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI\n2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8\nQ5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp\n+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+\nDT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O\nnKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW\n/zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g\nPKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u\nQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY\nSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv\nIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/\nRxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4\nzJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd\nBA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB\nZQ==\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL\nMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE\nBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT\nIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw\nMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy\nZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N\nT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv\nbiBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR\nFtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J\ncfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW\nBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/\nBAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm\nfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv\nGDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB\nhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G\nA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV\nBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5\nMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT\nEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR\nQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh\ndGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR\n6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X\npz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC\n9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV\n/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf\nZd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z\n+pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w\nqP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah\nSL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC\nu9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf\nFobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq\ncrxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E\nFgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB\n/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl\nwFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM\n4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV\n2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna\nFxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ\nCuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK\nboHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke\njkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL\nS0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb\nQOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl\n0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB\nNVOFBkpdn627G190\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIB9zCCAX2gAwIBAgIQBiUzsUcDMydc+Y2aub/M+DAKBggqhkjOPQQDAzA9MQsw\nCQYDVQQGEwJVUzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0YWlu\nbHkgUm9vdCBFMTAeFw0yMTA0MDEwMDAwMDBaFw00NjA0MDEwMDAwMDBaMD0xCzAJ\nBgNVBAYTAlVTMRIwEAYDVQQKEwlDZXJ0YWlubHkxGjAYBgNVBAMTEUNlcnRhaW5s\neSBSb290IEUxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE3m/4fxzf7flHh4axpMCK\n+IKXgOqPyEpeKn2IaKcBYhSRJHpcnqMXfYqGITQYUBsQ3tA3SybHGWCA6TS9YBk2\nQNYphwk8kXr2vBMj3VlOBF7PyAIcGFPBMdjaIOlEjeR2o0IwQDAOBgNVHQ8BAf8E\nBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ygYy2R17ikq6+2uI1g4\nhevIIgcwCgYIKoZIzj0EAwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozm\nut6Dacpps6kFtZaSF4fC0urQe87YQVt8rgIwRt7qy12a7DLCZRawTDBcMPPaTnOG\nBtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFRzCCAy+gAwIBAgIRAI4P+UuQcWhlM1T01EQ5t+AwDQYJKoZIhvcNAQELBQAw\nPTELMAkGA1UEBhMCVVMxEjAQBgNVBAoTCUNlcnRhaW5seTEaMBgGA1UEAxMRQ2Vy\ndGFpbmx5IFJvb3QgUjEwHhcNMjEwNDAxMDAwMDAwWhcNNDYwNDAxMDAwMDAwWjA9\nMQswCQYDVQQGEwJVUzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0\nYWlubHkgUm9vdCBSMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANA2\n1B/q3avk0bbm+yLA3RMNansiExyXPGhjZjKcA7WNpIGD2ngwEc/csiu+kr+O5MQT\nvqRoTNoCaBZ0vrLdBORrKt03H2As2/X3oXyVtwxwhi7xOu9S98zTm/mLvg7fMbed\naFySpvXl8wo0tf97ouSHocavFwDvA5HtqRxOcT3Si2yJ9HiG5mpJoM610rCrm/b0\n1C7jcvk2xusVtyWMOvwlDbMicyF0yEqWYZL1LwsYpfSt4u5BvQF5+paMjRcCMLT5\nr3gajLQ2EBAHBXDQ9DGQilHFhiZ5shGIXsXwClTNSaa/ApzSRKft43jvRl5tcdF5\ncBxGX1HpyTfcX35pe0HfNEXgO4T0oYoKNp43zGJS4YkNKPl6I7ENPT2a/Z2B7yyQ\nwHtETrtJ4A5KVpK8y7XdeReJkd5hiXSSqOMyhb5OhaRLWcsrxXiOcVTQAjeZjOVJ\n6uBUcqQRBi8LjMFbvrWhsFNunLhgkR9Za/kt9JQKl7XsxXYDVBtlUrpMklZRNaBA\n2CnbrlJ2Oy0wQJuK0EJWtLeIAaSHO1OWzaMWj/Nmqhexx2DgwUMFDO6bW2BvBlyH\nWyf5QBGenDPBt+U1VwV/J84XIIwc/PH72jEpSe31C4SnT8H2TsIonPru4K8H+zMR\neiFPCyEQtkA6qyI6BJyLm4SGcprSp6XEtHWRqSsjAgMBAAGjQjBAMA4GA1UdDwEB\n/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTgqj8ljZ9EXME66C6u\nd0yEPmcM9DANBgkqhkiG9w0BAQsFAAOCAgEAuVevuBLaV4OPaAszHQNTVfSVcOQr\nPbA56/qJYv331hgELyE03fFo8NWWWt7CgKPBjcZq91l3rhVkz1t5BXdm6ozTaw3d\n8VkswTOlMIAVRQdFGjEitpIAq5lNOo93r6kiyi9jyhXWx8bwPWz8HA2YEGGeEaIi\n1wrykXprOQ4vMMM2SZ/g6Q8CRFA3lFV96p/2O7qUpUzpvD5RtOjKkjZUbVwlKNrd\nrRT90+7iIgXr0PK3aBLXWopBGsaSpVo7Y0VPv+E6dyIvXL9G+VoDhRNCX8reU9di\ntaY1BMJH/5n9hN9czulegChB8n3nHpDYT3Y+gjwN/KUD+nsa2UUeYNrEjvn8K8l7\nlcUq/6qJ34IxD3L/DCfXCh5WAFAeDJDBlrXYFIW7pw0WwfgHJBu6haEaBQmAupVj\nyTrsJZ9/nbqkRxWbRHDxakvWOF5D8xh+UG7pWijmZeZ3Gzr9Hb4DJqPb1OG7fpYn\nKx3upPvaJVQTA945xsMfTZDsjxtK0hzthZU4UHlG1sGQUDGpXJpuHfUzVounmdLy\nyCwzk5Iwx06MZTMQZBf9JBeW0Y3COmor6xOLRPIh80oat3df1+2IpHLlOR+Vnb5n\nwXARPbv0+Em34yaXOp/SX3z7wJl8OSngex2/DaeP0ik0biQVy96QXr8axGbqwua6\nOV+KmalBWQewLK8=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNV\nBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4X\nDTA3MDYyOTE1MTMwNVoXDTI3MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQ\nBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwIQ2VydGlnbmEwggEiMA0GCSqGSIb3\nDQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7qXOEm7RFHYeGifBZ4\nQCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyHGxny\ngQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbw\nzBfsV1/pogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q\n130yGLMLLGq/jj8UEYkgDncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2\nJsglrgVKtOdjLPOMFlN+XPsRGgjBRmKfIrjxwo1p3Po6WAbfAgMBAAGjgbwwgbkw\nDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQtCRZvgHyUtVF9lo53BEw\nZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJBgNVBAYT\nAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzj\nAQ/JSP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG\n9w0BAQUFAAOCAQEAhQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8h\nbV6lUmPOEvjvKtpv6zf+EwLHyzs+ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFnc\nfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1kluPBS1xp81HlDQwY9qcEQCYsuu\nHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY1gkIl2PlwS6w\nt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw\nWyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAw\nWjELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAw\nMiA0ODE0NjMwODEwMDAzNjEZMBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0x\nMzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjdaMFoxCzAJBgNVBAYTAkZSMRIwEAYD\nVQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYzMDgxMDAwMzYxGTAX\nBgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw\nggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sO\nty3tRQgXstmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9M\nCiBtnyN6tMbaLOQdLNyzKNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPu\nI9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8JXrJhFwLrN1CTivngqIkicuQstDuI7pm\nTLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16XdG+RCYyKfHx9WzMfgIh\nC59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq4NYKpkDf\nePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3Yz\nIoejwpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWT\nCo/1VTp2lc5ZmIoJlXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1k\nJWumIWmbat10TWuXekG9qxf5kBdIjzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5\nhwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp//TBt2dzhauH8XwIDAQABo4IB\nGjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE\nFBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of\n1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczov\nL3d3d3cuY2VydGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilo\ndHRwOi8vY3JsLmNlcnRpZ25hLmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYr\naHR0cDovL2NybC5kaGlteW90aXMuY29tL2NlcnRpZ25hcm9vdGNhLmNybDANBgkq\nhkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOItOoldaDgvUSILSo3L\n6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxPTGRG\nHVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH6\n0BGM+RFq7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncB\nlA2c5uk5jR+mUYyZDDl34bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdi\no2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1\ngPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS6Cvu5zHbugRqh5jnxV/v\nfaci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaYtlu3zM63\nNwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayh\njWZSaX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw\n3kAP+HwV96LOPNdeE4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQsw\nCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScw\nJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMT\nEENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2MDcyNDU0WhcNNDMwMzI2MDcyNDU0\nWjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBT\nLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAX\nBgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATE\nKI6rGFtqvm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7Tm\nFy8as10CW4kjPMIRBSqniBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68Kj\nQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI0GZnQkdjrzife81r1HfS+8\nEF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNoADBlAjADVS2m5hjEfO/J\nUG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0QoSZ/6vn\nnvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM\nMSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D\nZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU\ncnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3\nWjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg\nUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw\nIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B\nAQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH\nUV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM\nTXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU\nBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM\nkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x\nAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV\nHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV\nHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y\nsHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL\nI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8\nJ9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY\nVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI\n03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCB\ngDELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu\nQS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIG\nA1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQSAyMCIYDzIwMTExMDA2MDgz\nOTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQTDEiMCAGA1UEChMZ\nVW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRp\nZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3\nb3JrIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWA\nDGSdhhuWZGc/IjoedQF97/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn\n0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+oCgCXhVqqndwpyeI1B+twTUrWwbNWuKFB\nOJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40bRr5HMNUuctHFY9rnY3lE\nfktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2puTRZCr+E\nSv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1m\no130GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02i\nsx7QBlrd9pPPV3WZ9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOW\nOZV7bIBaTxNyxtd9KXpEulKkKtVBRgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgez\nTv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pyehizKV/Ma5ciSixqClnrDvFAS\nadgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vMBhBgu4M1t15n\n3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD\nAQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMC\nAQYwDQYJKoZIhvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQ\nF/xlhMcQSZDe28cmk4gmb3DWAl45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTf\nCVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuAL55MYIR4PSFk1vtBHxgP58l1cb29\nXN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMoclm2q8KMZiYcdywm\ndjWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tMpkT/\nWjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jb\nAoJnwTnbw3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksq\nP/ujmv5zMnHCnsZy4YpoJ/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Ko\nb7a6bINDd82Kkhehnlt4Fj1F4jNy3eFmypnTycUm/Q1oBEauttmbjL4ZvrHG8hnj\nXALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLXis7VmFxWlgPF7ncGNf/P\n5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7zAYspsbi\nDrW5viSP\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFwDCCA6igAwIBAgIQHr9ZULjJgDdMBvfrVU+17TANBgkqhkiG9w0BAQ0FADB6\nMQswC...

Copy link
Copy Markdown

@claude claude Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — small, well-tested introduction of block.Tracker; the only production change in userfaultfd.go is a mechanical swap from a map keyed by addr to a bitmap keyed by page index, with equivalent semantics.

Extended reasoning...

Overview

This PR introduces a new block.Tracker type (with NotPresent/Dirty/Zero states backed by two roaring bitmaps) plus comprehensive tests, and migrates the test-only UFFD pageTracker map to it. The only production behavior change in userfaultfd.go is replacing pageTracker.setState(addr, addr+pageSize, faulted) with pageTracker.SetRange(idx, idx+1, block.Dirty) where idx = header.BlockIdx(offset, pageSize). The remaining changes are in test files (rpc_services_test.go, helpers_test.go) and a wire-comment update.

Security risks

None identified. This is sandbox infrastructure for tracking page state metadata — it doesn't grant access, alter permissions, or touch crypto/auth. The tracker is internally consistent (uses RWMutex, Export returns clones), and SetRange defensively no-ops on out-of-range bounds to prevent panics from the underlying 32-bit roaring bitmap.

Level of scrutiny

Low-to-moderate. While the file lives under sandbox/uffd (memory state for guest VMs), the actual prod-side delta is a single equivalent-semantics swap. The new Tracker API has 92.68% patch coverage with regression tests covering transitions, partial overlap, idempotency, empty/inverted ranges, out-of-range bounds (the boundary end == 1<<32 case is explicitly tested), and Export-clone independence. header.BlockIdx is a simple integer division and UFFD page faults are page-aligned, so the offset↔index round-trip is exact (matching prior snapshot semantics, as the author noted).

Other factors

All prior automated review concerns have been addressed: the SetRange unsupported-state issue was fixed by ditching the generic in favor of a fixed enum, the upper-bound panic concern was addressed in b65129f with a guard and a boundary regression test, and reviewer bchalios's design feedback ("does it really need to be that generic?") was incorporated by simplifying to a non-generic type. Codecov reports no failed tests.

@ValentaTomas ValentaTomas disabled auto-merge May 4, 2026 18:35
@ValentaTomas ValentaTomas force-pushed the feat/block-state-tracker branch from b65129f to bf920d8 Compare May 4, 2026 18:38
@ValentaTomas ValentaTomas enabled auto-merge (squash) May 4, 2026 18:49
A small two-state-plus-default tracker backed by roaring bitmaps. Used by
upcoming UFFD work to track page states (Missing/Faulted/Removed) and by
NBD to track zero pages, replacing ad-hoc map-based trackers with O(1)
range ops and cheap snapshot exports.
…state

Replace the map-based pageTracker with block.StateTracker[pageState], a
roaring-bitmap-backed tracker with O(1) range ops. pageState gains a
third value, removed, which is wired at the type level but not yet
written anywhere -- #2520 adds the REMOVE-event handler that produces
it. Page indices are computed at the call site via header.BlockIdx.
pageStateEntries is updated to iterate the exported bitmaps so the
cross-process test harness keeps working.

Inline the 3-line pageState enum into userfaultfd.go and drop the
dedicated page_tracker.go now that pageTracker is gone.

Convert block.StateTracker's NewStateTracker / SetRange API from panics
to errors. Distinct-state validation and unsupported-state checks now
return fmt.Errorf descriptors; the userfaultfd-side init propagates the
constructor error through NewUserfaultfdFromFd, and the SetRange call
in the worker path logs and continues since these errors only fire on
programming bugs.
Replace the generic block.StateTracker[S] with a non-generic block.Tracker
over a fixed block.State enum (NotPresent default, Dirty, Zero). The
same three states cover both UFFD page management (NotPresent=missing,
Dirty=faulted, Zero=removed via DONTNEED/balloon) and upcoming NBD
overlay tracking (NotPresent=fall-through, Dirty=overlay-owned,
Zero=explicit zero/discard).
@ValentaTomas ValentaTomas force-pushed the feat/block-state-tracker branch from 37be905 to dcb7de4 Compare May 4, 2026 18:50
Comment thread packages/orchestrator/pkg/sandbox/block/tracker_test.go Outdated
@ValentaTomas
Copy link
Copy Markdown
Member Author

CI status update: unit-tests / Run tests for packages/orchestrator and integration-tests / integration_tests are failing on this PR but the failures are environmental flakes shared with PR #2560 and the periodic tests on main (run 25338351567template builds && time is synchronized checks failed on e2b-juliett.dev and e2b-foxtrot.dev).

Failure signature: cmd/smoketest TestSmokeAllFCVersions hits the 20-minute timeout (error provisioning sandbox: error waiting for provisioning sandbox: exit status: 1), and many integration template-build tests time out at 5 minutes with Build timeout exceeded. None of these touch the diff in this PR (packages/orchestrator/pkg/sandbox/block/* + UFFD fault-handler page-state recording in pkg/sandbox/uffd/userfaultfd/userfaultfd.go).

@ValentaTomas ValentaTomas merged commit 87016d0 into main May 4, 2026
236 of 243 checks passed
@ValentaTomas ValentaTomas deleted the feat/block-state-tracker branch May 4, 2026 23:27
ValentaTomas added a commit that referenced this pull request May 5, 2026
… COPY (#2520)

Handles `UFFD_EVENT_REMOVE` so balloon-deflate /
`madvise(MADV_DONTNEED)` transitions pages to a `removed` state instead
of leaving stale `faulted` mappings. Drains the REMOVE batch under
`settleRequests.Lock`; workers hold `settleRequests.RLock` across the
state read → `UFFDIO_COPY` → `SetRange` sequence so a concurrent REMOVE
can't slip between the read and the install. Soft-fails `UFFDIO_COPY`
EAGAIN / partial copies onto a `deferredFaults` queue and wakes the poll
loop via a self-pipe.

Depends on #2545.

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants