Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • opensrc/libehp
1 result
Show changes
Commits on Source (47)
Showing
with 365 additions and 61 deletions
before_script:
- "source ~gitlab-runner/cicd_support/cicd_support.shinc"
after_script:
- "echo Test Complete."
stages:
- clean
- build
- test
- fuzz
- deploy
#
# Cleaning
#
do-clean-ubuntu18:
stage: clean
script:
- ./cicd_testing/do-clean.sh
tags:
- ubuntu18
#
# Building
#
do-build-ubuntu18:
stage: build
script:
- ./cicd_testing/do-build.sh
tags:
- ubuntu18
#
# Testing
#
do-test-ubuntu18:
stage: test
script:
- ./cicd_testing/do-test.sh
tags:
- ubuntu18
#
# Turbo Fuzzing
#
do-fuzz-ubuntu18:
stage: fuzz
script:
- ./cicd_testing/do-fuzz.sh
tags:
- libehpfuzzpod
#
# Deploy
#
do-deploy-ubuntu18:
stage: deploy
script:
- ./cicd_testing/do-deploy.sh
tags:
- ubuntu18
......@@ -17,24 +17,23 @@
import os
Import('env')
myenv=env.Clone();
myenv.Replace(debug=ARGUMENTS.get("debug",0))
myenv.Append(CFLAGS=" -DUSE_ELFIO=1 ")
myenv.Append(CXXFLAGS=" -DUSE_ELFIO=1 ")
if int(myenv['debug']) == 1:
env.Replace(debug=ARGUMENTS.get("debug",0))
env.Append(CFLAGS=" -DUSE_ELFIO=1 ")
env.Append(CXXFLAGS=" -DUSE_ELFIO=1 ")
if int(env['debug']) == 1:
print "Setting debug mode"
myenv.Append(CFLAGS=" -g ")
myenv.Append(CXXFLAGS=" -g ")
myenv.Append(LINKFLAGS=" -g ")
env.Append(CFLAGS=" -g ")
env.Append(CXXFLAGS=" -g ")
env.Append(LINKFLAGS=" -g ")
else:
print "Setting release mode"
myenv.Append(CFLAGS=" -O3 ")
myenv.Append(CXXFLAGS=" -O3 ")
myenv.Append(LINKFLAGS=" -O3 ")
env.Append(CFLAGS=" -O3 ")
env.Append(CXXFLAGS=" -O3 ")
env.Append(LINKFLAGS=" -O3 ")
lib=myenv.SConscript("src/SConscript")
lib=env.SConscript("src/SConscript")
Return('lib')
......@@ -19,6 +19,9 @@
env=Environment()
Export('env')
env.Replace(debug=ARGUMENTS.get("debug",0))
lib=SConscript("SConscript")
Return('lib')
name: 'baseline afl config'
fuzzing-time: '10 minutes'
input-timeout: '30 seconds'
memory-limit: '50 MB'
num-cores: 2
working-dir: /tmp/libehp-fuzzing
#!/bin/bash
set -e
set -x
# update submodules
git submodule sync --recursive
git submodule update --recursive --init
# gather info for debugging later, probably not necessary
pwd
hostname
whoami
env|grep CICD
time rsync -a --exclude='.git' $CICD_TO_TEST_DIR/ /tmp/libehp_test
cd /tmp/libehp_test
scons -j 3
#!/bin/bash
set -e
set -x
main()
{
if [[ $CICD_NIGHTLY == 1 ]] ; then
# gather info for debugging later, probably not necessary
pwd
hostname
whoami
env|grep CICD
rm -rf /tmp/libehp_test
fi
}
main "$@"
#!/bin/bash
echo No deploy yet.
#!/bin/bash
function main()
{
set -e
# build software
git submodule sync --recursive
git submodule update --recursive --init
scons -j3
cd test
scons
cd ..
# force reinstall tools so we are always up-to-date
yes | sudo bash -c "$(curl -fsSL allzp.zephyr-software.io/turbo/cli-install.sh)"
# better done with boost add -q -i
turbo-cli boost add libehp || true
local bid=$(turbo-cli boost list|grep libehp|cut -d" " -f1)
# add seeds, ignore errors if they already exist.
turbo-cli seed add $bid cicd_testing/ehp-seed.yaml || true
turbo-cli seed add $bid cicd_testing/ehp-seed2.yaml || true
turbo-cli seed add $bid cicd_testing/ehp-seed3.yaml || true
turbo-cli seed add $bid cicd_testing/ehp-seed4.yaml || true
local vid=$(turbo-cli version add -q $bid lib/libehp.so)
turbo-cli fuzz --fuzz-config cicd_testing/afl.yaml --app-config cicd_testing/ehp-config.yaml --ver-id $vid
local report="$(turbo-cli log get report $vid)"
echo "The report is: "
echo "$report" | tee fail_report.yaml
local declare crash_count=$(echo "$report"|shyaml get-value failing-input-count)
if [[ $crash_count == 0 ]]; then
echo "No crashes found"
exit 0
else
# upload the report.
local proj_id=114
local upload_report=$(curl --request POST --header "PRIVATE-TOKEN: PXLgVFpgjmmugAiHTJzx " --form "file=@fail_report.yaml" https://git.zephyr-software.com/api/v4/projects/$proj_id/uploads)
local date=$(date)
local mach=$(uname -a)
local host=$(hostname)
local md=$(echo $upload_report | shyaml get-value markdown)
local desc=""
read -r -d '' desc || true << EOM
Turbo automatically found $crash_count crashes!
Host: $host
Date: $date
Machine details: $mach
Full crash report is available here: $md
See [job details](https://git.zephyr-software.com/opensrc/libehp/-/jobs/$CI_JOB_ID)
and [pipeline details](https://git.zephyr-software.com/opensrc/libehp/pipelines/$CI_PIPELINE_ID).
EOM
local title="Turbo found $crash_count bugs in libEHP on $date"
local assignee_id="$GITLAB_USER_ID"
# finally post an issue
curl --request POST --data-urlencode "description=$desc" --data-urlencode "title=$title" --header "PRIVATE-TOKEN: PXLgVFpgjmmugAiHTJzx " "https://git.zephyr-software.com//api/v4/projects/$proj_id/issues?&labels=bug,turbo&assignee_ids[]=$assignee_id"
echo "$crash_count count crashes found!"
exit 1
fi
}
main "$@"
#!/bin/bash
set -e
set -x
function main()
{
cd /tmp/libehp_test/test
./test.sh || exit 1
exit 0
}
main "$@"
name: "libehp test config"
ld-path-prepend-version: "libehp.so"
name: long ls
cmdline:
- "test/test.exe"
- filename: foo.exe
env:
files:
- name: foo.exe
contents: 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Y0VTYUljRUVDMUVQS2NSS1MzXwBfWmRsUHYAX1pTdDE2X19vc3RyZWFtX2luc2VydEljU3QxMWNoYXJfdHJhaXRzSWNFRVJTdDEzYmFzaWNfb3N0cmVhbUlUX1QwX0VTNl9QS1MzX2wAX1pTdDRlbmRsSWNTdDExY2hhcl90cmFpdHNJY0VFUlN0MTNiYXNpY19vc3RyZWFtSVRfVDBfRVM2XwBfWlN0MTZfX3Rocm93X2JhZF9jYXN0dgBfWk5TdDhpb3NfYmFzZTRJbml0QzFFdgBfWk5TbzlfTV9pbnNlcnRJbUVFUlNvVF8AX1pTdGxzSVN0MTFjaGFyX3RyYWl0c0ljRUVSU3QxM2Jhc2ljX29zdHJlYW1JY1RfRVM1X1BLYwBfWlN0NGNvdXQAX1pOU281Zmx1c2hFdgBsaWJnY2Nfcy5zby4xAF9VbndpbmRfUmVzdW1lAGxpYmMuc28uNgBfX3N0YWNrX2Noa19mYWlsAF9fYXNzZXJ0X2ZhaWwAX19jeGFfYXRleGl0AF9fY3hhX2ZpbmFsaXplAF9fbGliY19zdGFydF9tYWluAF9lZGF0YQBfX2Jzc19zdGFydABfZW5kAEdDQ18zLjAAR0xJQkNfMi40AEdMSUJDXzIuMi41AENYWEFCSV8xLjMAR0xJQkNYWF8zLjQuMjEAR0xJQkNYWF8zLjQuMTEAR0xJQkNYWF8zLjQuOQBHTElCQ1hYXzMuNAAAAAIAAwACAAMABAACAAAAAwACAAIABQAEAAYAAwACAAcAAgAIAAAACQADAAAAAAACAAEAAQABAAEAAQACAAEAAQCFAgAAEAAAACAAAABQJnkLAAAJABEDAAAAAAAAAQACAKICAAAQAAAAMAAAABRpaQ0AAAUAGQMAABAAAAB1GmkJAAADACMDAAAAAAAAAQAFALIAAAAQAAAAAAAAANOvawUAAAgALwMAABAAAABx+JcCAAAHADoDAAAQAAAAYfiXAgAABgBJAwAAEAAAAIl/KQIAAAQAWAMAABAAAAB0KZIIAAACAGYDAAAAAAAA+BwgAAAAAAAIAAAAAAAAACAPAAAAAAAAAB0gAAAAAAAIAAAAAAAAAPkSAAAAAAAACB0gAAAAAAAIAAAAAAAAAOAOAAAAAAAACCAgAAAAAAAIAAAAAAAAAAggIAAAAAAA0B8gAAAAAAAGAAAAAgAAAAAAAAAAAAAA2B8gAAAAAAAGAAAAEwAAAAAAAAAAAAAA4B8gAAAAAAAGAAAAFQAAAAAAAAAAAAAA6B8gAAAAAAAGAAAAFgAAAAAAAAAAAAAA8B8gAAAAAAAGAAAAFwAAAAAAAAAAAAAA+B8gAAAAAAAGAAAAGAAAAAAAAAAAAAAAECAgAAAAAAABAAAAEgAAAAAAAAAAAAAAICAgAAAAAAAFAAAAHgAAAAAAAAAAAAAASB8gAAAAAAAHAAAAAQAAAAAAAAAAAAAAUB8gAAAAAAAHAAAAAwAAAAAAAAAAAAAAWB8gAAAAAAAHAAAABAAAAAAAAAAAAAAAYB8gAAAAAAAHAAAABQAAAAAAAAAAAAAAaB8gAAAAAAAHAAAABgAAAAAAAAAAAAAAcB8gAAAAAAAHAAAABwAAAAAAAAAAAAAAeB8gAAAAAAAHAAAACAAAAAAAAAAAAAAAgB8gAAAAAAAHAAAACQAAAAAAAAAAAAAAiB8gAAAAAAAHAAAACgAAAAAAAAAAAAAAkB8gAAAAAAAHAAAACwAAAAAAAAAAAAAAmB8gAAAAAAAHAAAADAAAAAAAAAAAAAAAoB8gAAAAAAAHAAAADQAAAAAAAAAAAAAAqB8gAAAAAAAHAAAADgAAAAAAAAAAAAAAsB8gAAAAAAAHAAAADwAAAAAAAAAAAAAAuB8gAAAAAAAHAAAAEAAAAAAAAAAAAAAAwB8gAAAAAAAHAAAAEQAAAAAAAAAAAAAAyB8gAAAAAAAHAAAAFAAAAAAAAAAAAAAASIPsCEiLBQUTIABIhcB0Av/QSIPECMMA/zVCEiAA/yVEEiAADx9AAP8lQhIgAGgAAAAA6eD/////JToSIABoAQAAAOnQ/////yUyEiAAaAIAAADpwP////8lKhIgAGgDAAAA6bD/////JSISIABoBAAAAOmg/////yUaEiAAaAUAAADpkP////8lEhIgAGgGAAAA6YD/////JQoSIABoBwAAAOlw/////yUCEiAAaAgAAADpYP////8l+hEgAGgJAAAA6VD/////JfIRIABoCgAAAOlA/////yXqESAAaAsAAADpMP////8l4hEgAGgMAAAA6SD/////JdoRIABoDQAAAOkQ/////yXSESAAaA4AAADpAP////8lyhEgAGgPAAAA6fD+////JcIRIABoEAAAAOng/v///yW6ESAAZpAAAAAAAAAAADHtSYnRXkiJ4kiD5PBQVEyNBWoFAABIjQ3zBAAASI093gMAAP8VlhEgAPQPH0QAAEiNPcERIABVSI0FuREgAEg5+EiJ5XQZSIsFahEgAEiFwHQNXf/gZi4PH4QAAAAAAF3DDx9AAGYuDx+EAAAAAABIjT2BESAASI01ehEgAFVIKf5IieVIwf4DSInwSMHoP0gBxkjR/nQYSIsFMREgAEiFwHQMXf/gZg8fhAAAAAAAXcMPH0AAZi4PH4QAAAAAAIA9SRIgAAB1L0iDPd8QIAAAVUiJ5XQMSIs9ChEgAOgN////6Ej////GBSESIAABXcMPH4AAAAAA88NmDx9EAABVSInlXelm////U0iJ87oHAAAASI01igQAAEiNPd8QIADoWv7//0iLM0iNPdAQIADoK/7//0iJw7obAAAASI01aAQAAEiJx+g0/v//SInf6Jz9//+/AQAAAOhC/v//QVdBVkFVQVRVU0iD7BhIiwf/UCBIjQ2HECAASIsVgBAgAEgDSuiLURiD4rWDygiJURhMizBIi0AISIlEJAhJOcYPhDACAABMjSVUECAA6VkBAADo+v3//0iJ7+jS/f//SItFAL4KAAAASInv/1Aw6bcBAABIjQ1HBAAAuioAAABIjTX1AwAASI099wMAAOgP/f//SI0NKAQAALosAAAASI011gMAAEiNPd0DAADo8Pz//+ib/f//SInf6HP9//9IiwO+CgAAAEiJ3/9QMA++8EyJ/+iq/P//SInH6OL8//9Ig8UISTntD4SwAAAASItdALoOAAAASI01lwMAAEyJ5+gd/f//SIsDSInf/1AYSInGTInn6Jn8//9Jice6AQAAAEiNNVIDAABIicfo8vz//0iLA0iJ3/9QKEiJxkyJ/+hu/P//SYnHuhUAAABIjTVQAwAASInH6Mf8//9IiwNIid//UDhIicZMif/oQ/z//0mJx0iLAEiLQOhJi5wH8AAAAEiF2w+EKP///4B7OAAPhCP///8PtkND6TD///9Jg8YITDl0JAgPhMsAAABJix66DwAAAEiNNa8CAABMiefoX/z//0iLA0iJ3/9QIEiJxkyJ5+jb+///SInFugEAAABIjTWUAgAASInH6DT8//9IiwNIid//UChIicZIie/osPv//0mJxUiLAEiLQOhJi6wF8AAAAEiF7Q+ENv7//4B9OAAPhDH+//8PtkVDD77wTInv6Ez7//9IicfohPv//0iLA0iJ3/9QQEiFwA+EJP7//0iLEEiJx/9SKEiFwA+EMf7//0iLKEyLaAhJOe0PhXv+///pJv///0iNFSQOIABIiwUdDiAASANQ6ItCGIPgtYPIAolCGEiDxBhbXUFcQV1BXkFfw1NIg+xAZEiLBCUoAAAASIlEJDgxwIP/AnUlSI1UJAdIi3YISI1cJBBIid/ojvv//0iNfCQISIne6PH6///rBejE/P//SIt8JBBIjUQkIEg5x3QF6Pb6//9Ii3wkCEiLB/9QGEiLfCQI6O/8//9Ii3wkCEiF/3QGSIsH/1AIuAAAAABIi0wkOGRIMwwlKAAAAHVASIPEQFvDSInDSIt8JBBIjUQkIEg5x3QF6J/6//9Iid/oJ/v//0iJw0iLfCQISIX/dAZIiwf/UAhIid/oDPv//+iX+v//SIPsCEiNPS0OIADo5/r//0iNFfgMIABIjTUaDiAASIs92gwgAOg9+v//SIPECMMPH4QAAAAAAEFXQVZJiddBVUFUTI0ltgkgAFVIjS2+CSAAU0GJ/UmJ9kwp5UiD7AhIwf0D6Hf5//9Ihe10IDHbDx+EAAAAAABMifpMifZEie9B/xTcSIPDAUg53XXqSIPECFtdQVxBXUFeQV/DkGYuDx+EAAAAAADzwwAASIPsCEiDxAjDAAAAAAAAAAAAAAAAAAAAAAAAAAEAAgBVc2FnZTogACA8cHJvZ3JhbSB0byBwcmludCBlaCBpbmZvPgBGb3VuZCBGREUgYXQgOiAALQB0ZXN0LmNwcABsc2RhAGNhbGxzaXRlcwAJQ2FsbCBzaXRlICgweAApIHdpdGggbGFuZGluZyBwYWQ9MHgAAAAAAAAAAAAAdm9pZCBwcmludF9scHMoY29uc3QgRUhQOjpFSEZyYW1lUGFyc2VyX3QqKQABGwM7UAAAAAkAAACE+P//nAAAAKT5///EAAAAtPn//2wAAAC++v//3AAAABL7///0AAAAtv3//2ABAACN/v//iAEAAMT+//+kAQAANP///+wBAAAUAAAAAAAAAAF6UgABeBABGwwHCJABBxAUAAAAHAAAAED5//8rAAAAAAAAAAAAAAAUAAAAAAAAAAF6UgABeBABGwwHCJABAAAkAAAAHAAAAOD3//8gAQAAAA4QRg4YSg8LdwiAAD8aOyozJCIAAAAAFAAAAEQAAADY+P//CAAAAAAAAAAAAAAAFAAAAFwAAADa+f//VAAAAABBDhCDAgAASAAAAHQAAAAW+v//pAIAAABCDhCPAkIOGI4DQg4gjQRCDiiMBUEOMIYGQQ44gwdEDlADiwIOOEEOMEEOKEIOIEIOGEIOEEIOCAAAABwAAAAAAAAAAXpQTFIAAXgQB5tRCiAAGxsMBwiQAQAAJAAAACQAAABO/P//1wAAAASTAAAAQQ4QgwJEDlACkQoOEEEOCEELABgAAAAIAQAA/fz//y8AAAAARA4Qag4IAAAAAABEAAAAJAEAABj9//9lAAAAAEIOEI8CQg4YjgNFDiCNBEIOKIwFSA4whgZIDjiDB00OQHIOOEEOMEEOKEIOIEIOGEIOEEIOCAAQAAAAbAEAAED9//8CAAAAAAAAAAAAAAD//wEXKwUAADgFmAEAPwUAAGANtwEAsgEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA8AAAAAAAD5EgAAAAAAAOAOAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAsgAAAAAAAAABAAAAAAAAAIUCAAAAAAAAAQAAAAAAAACiAgAAAAAAAAwAAAAAAAAA2AwAAAAAAAANAAAAAAAAAKQTAAAAAAAAGQAAAAAAAAD4HCAAAAAAABsAAAAAAAAAEAAAAAAAAAAaAAAAAAAAAAgdIAAAAAAAHAAAAAAAAAAIAAAAAAAAAPX+/28AAAAAmAIAAAAAAAAFAAAAAAAAAMAFAAAAAAAABgAAAAAAAADYAgAAAAAAAAoAAAAAAAAAcgMAAAAAAAALAAAAAAAAABgAAAAAAAAAFQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAMB8gAAAAAAACAAAAAAAAAJgBAAAAAAAAFAAAAAAAAAAHAAAAAAAAABcAAAAAAAAAQAsAAAAAAAAHAAAAAAAAACAKAAAAAAAACAAAAAAAAAAgAQAAAAAAAAkAAAAAAAAAGAAAAAAAAAAeAAAAAAAAAAgAAAAAAAAA+///bwAAAAABAAAIAAAAAP7//28AAAAAcAkAAAAAAAD///9vAAAAAAMAAAAAAAAA8P//bwAAAAAyCQAAAAAAAPn//28AAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAdIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYNAAAAAAAAFg0AAAAAAAAmDQAAAAAAADYNAAAAAAAARg0AAAAAAABWDQAAAAAAAGYNAAAAAAAAdg0AAAAAAACGDQAAAAAAAJYNAAAAAAAApg0AAAAAAAC2DQAAAAAAAMYNAAAAAAAA1g0AAAAAAADmDQAAAAAAAPYNAAAAAAAABg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggIAAAAAAAAAAAAAAAAABHQ0M6IChVYnVudHUgNy40LjAtMXVidW50dTF+MTguMDQuMSkgNy40LjAAAC5zaHN0cnRhYgAuaW50ZXJwAC5ub3RlLkFCSS10YWcALm5vdGUuZ251LmJ1aWxkLWlkAC5nbnUuaGFzaAAuZHluc3ltAC5keW5zdHIALmdudS52ZXJzaW9uAC5nbnUudmVyc2lvbl9yAC5yZWxhLmR5bgAucmVsYS5wbHQALmluaXQALnBsdC5nb3QALnRleHQALmZpbmkALnJvZGF0YQAuZWhfZnJhbWVfaGRyAC5laF9mcmFtZQAuZ2NjX2V4Y2VwdF90YWJsZQAuaW5pdF9hcnJheQAuZmluaV9hcnJheQAuZHluYW1pYwAuZGF0YQAuYnNzAC5jb21tZW50AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAAAAgAAAAAAAAA4AgAAAAAAADgCAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAABwAAAAIAAAAAAAAAVAIAAAAAAABUAgAAAAAAACAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAIQAAAAcAAAACAAAAAAAAAHQCAAAAAAAAdAIAAAAAAAAkAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAADQAAAD2//9vAgAAAAAAAACYAgAAAAAAAJgCAAAAAAAAPAAAAAAAAAAFAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAA+AAAACwAAAAIAAAAAAAAA2AIAAAAAAADYAgAAAAAAAOgCAAAAAAAABgAAAAEAAAAIAAAAAAAAABgAAAAAAAAARgAAAAMAAAACAAAAAAAAAMAFAAAAAAAAwAUAAAAAAAByAwAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAE4AAAD///9vAgAAAAAAAAAyCQAAAAAAADIJAAAAAAAAPgAAAAAAAAAFAAAAAAAAAAIAAAAAAAAAAgAAAAAAAABbAAAA/v//bwIAAAAAAAAAcAkAAAAAAABwCQAAAAAAALAAAAAAAAAABgAAAAMAAAAIAAAAAAAAAAAAAAAAAAAAagAAAAQAAAACAAAAAAAAACAKAAAAAAAAIAoAAAAAAAAgAQAAAAAAAAUAAAAAAAAACAAAAAAAAAAYAAAAAAAAAHQAAAAEAAAAQgAAAAAAAABACwAAAAAAAEALAAAAAAAAmAEAAAAAAAAFAAAAFwAAAAgAAAAAAAAAGAAAAAAAAAB+AAAAAQAAAAYAAAAAAAAA2AwAAAAAAADYDAAAAAAAABcAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAeQAAAAEAAAAGAAAAAAAAAPAMAAAAAAAA8AwAAAAAAAAgAQAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAIQAAAABAAAABgAAAAAAAAAQDgAAAAAAABAOAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAACNAAAAAQAAAAYAAAAAAAAAIA4AAAAAAAAgDgAAAAAAAIIFAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAkwAAAAEAAAAGAAAAAAAAAKQTAAAAAAAApBMAAAAAAAAJAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAJkAAAABAAAAAgAAAAAAAADAEwAAAAAAAMATAAAAAAAArAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAChAAAAAQAAAAIAAAAAAAAAbBQAAAAAAABsFAAAAAAAAFQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAArwAAAAEAAAACAAAAAAAAAMAUAAAAAAAAwBQAAAAAAACwAQAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAALkAAAABAAAAAgAAAAAAAABwFgAAAAAAAHAWAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAADLAAAADgAAAAMAAAAAAAAA+BwgAAAAAAD4HAAAAAAAABAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAA1wAAAA8AAAADAAAAAAAAAAgdIAAAAAAACB0AAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAOMAAAAGAAAAAwAAAAAAAAAQHSAAAAAAABAdAAAAAAAAIAIAAAAAAAAGAAAAAAAAAAgAAAAAAAAAEAAAAAAAAACIAAAAAQAAAAMAAAAAAAAAMB8gAAAAAAAwHwAAAAAAANAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAA7AAAAAEAAAADAAAAAAAAAAAgIAAAAAAAACAAAAAAAAAYAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAPIAAAAIAAAAAwAAAAAAAAAgICAAAAAAABggAAAAAAAAGAEAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAD3AAAAAQAAADAAAAAAAAAAAAAAAAAAAAAYIAAAAAAAACsAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAQyAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==
perms: rw
network: ~
name: long ls
cmdline:
- test/test.exe
- filename: foo.exe
env: ~
network: ~
files:
- name: foo.exe
contents: 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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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aXRfYXJyYXlfc3RhcnQAX19HTlVfRUhfRlJBTUVfSERSAF9HTE9CQUxfT0ZGU0VUX1RBQkxFXwBfX2xpYmNfY3N1X2ZpbmkAX0lUTV9kZXJlZ2lzdGVyVE1DbG9uZVRhYmxlAF9feDg2LmdldF9wY190aHVuay5ieABfZWRhdGEAX194ODYuZ2V0X3BjX3RodW5rLmR4AF9fY3hhX2ZpbmFsaXplQEBHTElCQ18yLjEuMwBfX2RhdGFfc3RhcnQAcHV0c0BAR0xJQkNfMi4wAF9fZ21vbl9zdGFydF9fAF9fZHNvX2hhbmRsZQBfSU9fc3RkaW5fdXNlZABfX2xpYmNfc3RhcnRfbWFpbkBAR0xJQkNfMi4wAF9fbGliY19jc3VfaW5pdABfZnBfaHcAX19ic3Nfc3RhcnQAbWFpbgBfX1RNQ19FTkRfXwBfSVRNX3JlZ2lzdGVyVE1DbG9uZVRhYmxlAAAuc3ltdGFiAC5zdHJ0YWIALnNoc3RydGFiAC5pbnRlcnAALm5vdGUuQUJJLXRhZwAubm90ZS5nbnUuYnVpbGQtaWQALmdudS5oYXNoAC5keW5zeW0ALmR5bnN0cgAuZ251LnZlcnNpb24ALmdudS52ZXJzaW9uX3IALnJlbC5keW4ALnJlbC5wbHQALmluaXQALnBsdC5nb3QALnRleHQALmZpbmkALnJvZGF0YQAuZWhfZnJhbWVfaGRyAC5laF9mcmFtZQAuaW5pdF9hcnJheQAuZmluaV9hcnJheQAuZHluYW1pYwAuZGF0YQAuYnNzAC5jb21tZW50AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAABAAAAAgAAAFQBAABUAQAAEwAAAAAAAAAAAAAAAQAAAAAAAAAjAAAABwAAAAIAAABoAQAAaAEAACAAAAAAAAAAAAAAAAQAAAAAAAAAMQAAAAcAAAACAAAAiAEAAIgBAAAkAAAAAAAAAAAAAAAEAAAAAAAAAEQAAAD2//9vAgAAAKwBAACsAQAAIAAAAAUAAAAAAAAABAAAAAQAAABOAAAACwAAAAIAAADMAQAAzAEAAIAAAAAGAAAAAQAAAAQAAAAQAAAAVgAAAAMAAAACAAAATAIAAEwCAACbAAAAAAAAAAAAAAABAAAAAAAAAF4AAAD///9vAgAAAOgCAADoAgAAEAAAAAUAAAAAAAAAAgAAAAIAAABrAAAA/v//bwIAAAD4AgAA+AIAADAAAAAGAAAAAQAAAAQAAAAAAAAAegAAAAkAAAACAAAAKAMAACgDAABAAAAABQAAAAAAAAAEAAAACAAAAIMAAAAJAAAAQgAAAGgDAABoAwAAEAAAAAUAAAAWAAAABAAAAAgAAACMAAAAAQAAAAYAAAB4AwAAeAMAACMAAAAAAAAAAAAAAAQAAAAAAAAAhwAAAAEAAAAGAAAAoAMAAKADAAAwAAAAAAAAAAAAAAAQAAAABAAAAJIAAAABAAAABgAAANADAADQAwAAEAAAAAAAAAAAAAAACAAAAAgAAACbAAAAAQAAAAYAAADgAwAA4AMAAOIBAAAAAAAAAAAAABAAAAAAAAAAoQAAAAEAAAAGAAAAxAUAAMQFAAAUAAAAAAAAAAAAAAAEAAAAAAAAAKcAAAABAAAAAgAAANgFAADYBQAADgAAAAAAAAAAAAAABAAAAAAAAACvAAAAAQAAAAIAAADoBQAA6AUAADQAAAAAAAAAAAAAAAQAAAAAAAAAvQAAAAEAAAACAAAAHAYAABwGAADoAAAAAAAAAAAAAAAEAAAAAAAAAMcAAAAOAAAAAwAAANgeAADYDgAABAAAAAAAAAAAAAAABAAAAAQAAADTAAAADwAAAAMAAADcHgAA3A4AAAQAAAAAAAAAAAAAAAQAAAAEAAAA3wAAAAYAAAADAAAA4B4AAOAOAAD4AAAABgAAAAAAAAAEAAAACAAAAJYAAAABAAAAAwAAANgfAADYDwAAKAAAAAAAAAAAAAAABAAAAAQAAADoAAAAAQAAAAMAAAAAIAAAABAAAAgAAAAAAAAAAAAAAAQAAAAAAAAA7gAAAAgAAAADAAAACCAAAAgQAAAEAAAAAAAAAAAAAAABAAAAAAAAAPMAAAABAAAAMAAAAAAAAAAIEAAAKwAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAgAAAAAAAAAAAAAANBAAACAEAAAbAAAAKwAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAAFQUAAAqAgAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAAB+FgAA/AAAAAAAAAAAAAAAAQAAAAAAAAA=
perms: rw
\ No newline at end of file
name: long ls
cmdline:
- test/test.exe
- filename: foo.exe
env: ~
network: ~
files:
- name: foo.exe
contents: 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T7gAAAAASIPECMO/AQAAAOjb/f//xgAEugAAAABIjTXsDiAASInH6FT+//+/BAAAAOi6/f//xwADAAAAugAAAABIjTWoDiAASInH6DD+//+/BAAAAOiW/f//xwDD9UhAugAAAABIjTWUDiAASInH6Az+//9VU0iD7AjoS////4nFugkAAABIjTVYAgAASI09nBEgAOiH/f//SIsFkBEgAEiLQOhIjRWFESAASIucAvAAAABIhdt0KoB7OAB0KQ+2Q0MPvvBIjT1kESAA6O/8//9IicfoJ/3//4noSIPECFtdw+hp/f//SInf6EH9//9IiwO+CgAAAEiJ3/9QMOvDSInHSIP6AXQF6JP9///ovvz//w+2KLoQAAAASI01zgEAAEiNPQgRIADo8/z//0APvu2J7kiNPfYQIADoUf3//0iJx+iZ/P//6CT9///ri0iJw+ga/f//SInf6EL9//9T6BD////rSEiJx0iD+gF1Qehc/P//ixi6EAAAAEiNNX4BAABIjT2nECAA6JL8//+J3kiNPZkQIADo9Pz//0iJx+g8/P//6Mf8//+4AQAAAFvD6Bv8//+6EwAAAEiNNVABAABIjT1oECAA6FP8//9IjT1cECAA6Af8///okvz//7gBAAAA68lIicPog/z//0iJ3+ir/P//SInD6HP8//9Iid/om/z//0iD7AhIjT0xESAA6Ev8//9IjRXcDyAASI01HhEgAEiLPb4PIADo4fv//0iDxAjDZi4PH4QAAAAAAGaQQVdBVkmJ10FVQVRMjSWGDCAAVUiNLY4MIABTQYn9SYn2TCnlSIPsCEjB/QPoJ/v//0iF7XQgMdsPH4QAAAAAAEyJ+kyJ9kSJ70H/FNxIg8MBSDnddepIg8QIW11BXEFdQV5BX8OQZi4PH4QAAAAAAPPDAABIg+wISIPECMMAAAABAAIAVEhST1dfQ0hBUgBUSFJPV19JTlQAVEhST1dfRkxPQVQATm8gdGhyb3chAGZvbyBjYXVnaHQgY2hhcjoAbWFpbiBjYXVnaHQgaW50OgBtYWluIGNhdWdodCB1bm5hbWVkAAAAAAEbAztUAAAACQAAAIj6//+gAAAAiPv//8gAAACY+///cAAAAKL8///gAAAATP3//xwBAAA2/v//TAEAAN3+//9wAQAAGP///4gBAACI////0AEAAAAAAAAUAAAAAAAAAAF6UgABeBABGwwHCJABBxAUAAAAHAAAACD7//8rAAAAAAAAAAAAAAAUAAAAAAAAAAF6UgABeBABGwwHCJABAAAkAAAAHAAAAOD5//8AAQAAAA4QRg4YSg8LdwiAAD8aOyozJCIAAAAAFAAAAEQAAAC4+v//CAAAAAAAAAAAAAAAGAAAAFwAAAC6+///qgAAAABEDhB8Cg4IQQsAABwAAAAAAAAAAXpQTFIAAXgQB5vZDSAAGxsMBwiQAQAALAAAACQAAAAo/P//6gAAAAS7AAAAQQ4QhgJBDhiDA0QOIAJlCg4YQQ4QQQ4IQQsAIAAAAFQAAADi/P//pwAAAASrAAAAQQ4QgwICUAoOCEELAAAAFAAAAOwAAABl/f//LwAAAABEDhBqDggARAAAAAQBAACI/f//ZQAAAABCDhCPAkIOGI4DRQ4gjQRCDiiMBUgOMIYGSA44gwdNDkByDjhBDjBBDihCDiBCDhhCDhBCDggAEAAAAEwBAACw/f//AgAAAAAAAAAAAAAA/5sdARQGBYsBASB5AAC0AR/aAQDlAQUAAAEAANQMIAD/myUBFwEFCAMrG4cBAGoRlwEAexwAAKIBBQAAAgABfQAAAAC0DCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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QEBDWFhBQklfMS4zAF9aTlNvM3B1dEVjQEBHTElCQ1hYXzMuNABfZWRhdGEARFcucmVmLl9aVEljAF9JT19zdGRpbl91c2VkAF9fY3hhX2JlZ2luX2NhdGNoQEBDWFhBQklfMS4zAF9fY3hhX2ZpbmFsaXplQEBHTElCQ18yLjIuNQBtYWluAF9aU3Q0ZW5kbEljU3QxMWNoYXJfdHJhaXRzSWNFRVJTdDEzYmFzaWNfb3N0cmVhbUlUX1QwX0VTNl9AQEdMSUJDWFhfMy40AF9fY3hhX2FsbG9jYXRlX2V4Y2VwdGlvbkBAQ1hYQUJJXzEuMwBfX2Rzb19oYW5kbGUARFcucmVmLl9fZ3h4X3BlcnNvbmFsaXR5X3YwAF9aTlNvNWZsdXNoRXZAQEdMSUJDWFhfMy40AF9fY3hhX2F0ZXhpdEBAR0xJQkNfMi4yLjUAX19UTUNfRU5EX18AX1pTdDE2X19vc3RyZWFtX2luc2VydEljU3QxMWNoYXJfdHJhaXRzSWNFRVJTdDEzYmFzaWNfb3N0cmVhbUlUX1QwX0VTNl9QS1MzX2xAQEdMSUJDWFhfMy40LjkAX1pOS1N0NWN0eXBlSWNFMTNfTV93aWRlbl9pbml0RXZAQEdMSUJDWFhfMy40LjExAGdldGVudkBAR0xJQkNfMi4yLjUAX1pTdDE2X190aHJvd19iYWRfY2FzdHZAQEdMSUJDWFhfMy40AF9aU3Q0Y291dEBAR0xJQkNYWF8zLjQAX19kYXRhX3N0YXJ0AF9aVElmQEBDWFhBQklfMS4zAF9fYnNzX3N0YXJ0AF9aM2Zvb3YAX1pOU3Q4aW9zX2Jhc2U0SW5pdEMxRXZAQEdMSUJDWFhfMy40AF9fbGliY19jc3VfaW5pdABfX2N4YV9lbmRfY2F0Y2hAQENYWEFCSV8xLjMAX19neHhfcGVyc29uYWxpdHlfdjBAQENYWEFCSV8xLjMARFcucmVmLl9aVElpAF9fY3hhX3Rocm93QEBDWFhBQklfMS4zAF9aTlNvbHNFaUBAR0xJQkNYWF8zLjQAX0lUTV9kZXJlZ2lzdGVyVE1DbG9uZVRhYmxlAF9VbndpbmRfUmVzdW1lQEBHQ0NfMy4wAF9fbGliY19jc3VfZmluaQBfX2xpYmNfc3RhcnRfbWFpbkBAR0xJQkNfMi4yLjUAX19n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AAAAAAAdIAAAAAAAAB0AAAAAAAAwAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAABAAAGAAAAAwAAAAAAAAAwHSAAAAAAADAdAAAAAAAAEAIAAAAAAAAGAAAAAAAAAAgAAAAAAAAAEAAAAAAAAACYAAAAAQAAAAMAAAAAAAAAQB8gAAAAAABAHwAAAAAAAMAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACQEAAAEAAAADAAAAAAAAAAAgIAAAAAAAACAAAAAAAAAoAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAA8BAAAIAAAAAwAAAAAAAABAICAAAAAAACggAAAAAAAAGAEAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAUAQAAAQAAADAAAAAAAAAAAAAAAAAAAAAoIAAAAAAAACsAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAWCAAAAAAAACgCAAAAAAAAB0AAAAvAAAACAAAAAAAAAAYAAAAAAAAAAkAAAADAAAAAAAAAAAAAAAAAAAAAAAAAPgoAAAAAAAAGQUAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAARLgAAAAAAAB0BAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA
perms: rw
\ No newline at end of file
name: long ls
cmdline:
- test/test.exe
- filename: foo.exe
env: ~
network: ~
files:
- name: foo.exe
contents: f0VMRgEBAQAAAAAAAAAAAAMAAwABAAAAUAkAADQAAACcLAAAAAAAADQAIAAJACgAHgAdAAYAAAA0AAAANAAAADQAAAAgAQAAIAEAAAQAAAAEAAAAAwAAAFQBAABUAQAAVAEAABMAAAATAAAABAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAIBEAACARAAAFAAAAABAAAAEAAAB4HgAAeC4AAHguAACcAQAAoAEAAAYAAAAAEAAAAgAAAIQeAACELgAAhC4AAAgBAAAIAQAABgAAAAQAAAAEAAAAaAEAAGgBAABoAQAARAAAAEQAAAAEAAAABAAAAFDldGRkDgAAZA4AAGQOAABUAAAAVAAAAAQAAAAEAAAAUeV0ZAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAABAAAABS5XRkeB4AAHguAAB4LgAAiAEAAIgBAAAEAAAAAQAAAC9saWIvbGQtbGludXguc28uMgAABAAAABAAAAABAAAAR05VAAAAAAADAAAAAgAAAAAAAAAEAAAAFAAAAAMAAABHTlUAYPSBBz0w61qXnsgZvIH1l+fZz3oCAAAAGwAAAAEAAAAFAAAAACAAIAAAAAAbAAAArUvjwAAAAAAAAAAAAAAAAAAAAAC7AQAAAAAAAAAAAAARAAAAUQEAAAAAAAAAAAAAEgAAAC0CAAAAAAAAAAAAACIAAACJAAAAAAAAAAAAAAASAAAAmwAAAAAAAAAAAAAAEgAAAHUBAAAAAAAAAAAAABIAAABvAAAAAAAAAAAAAAASAAAAGQIAAAAAAAAAAAAAEgAAACYCAAAAAAAAAAAAABIAAAA8AgAAAAAAAAAAAAASAAAAjgEAAAAAAAAAAAAAEgAAAMEBAAAAAAAAAAAAABIAAABVAAAAAAAAAAAAAAARAAAA1gAAAAAAAAAAAAAAEgAAALUBAAAAAAAAAAAAABEAAABdAQAAAAAAAAAAAAASAAAAXwAAAAAAAAAAAAAAEgAAADwBAAAAAAAAAAAAABIAAAB9AAAAAAAAAAAAAAASAAAA2QEAAAAAAAAAAAAAEgAAAB8AAAAAAAAAAAAAACAAAADxAQAAAAAAAAAAAAASAAAAEAAAAAAAAAAAAAAAIAAAADsAAAAAAAAAAAAAACAAAACvAQAAAAAAAAAAAAARAAAAJAEAAAAAAAAAAAAAEgAAAAoCAAD8DQAABAAAABEAEAAAbGlic3RkYysrLnNvLjYAX19nbW9uX3N0YXJ0X18AX0lUTV9kZXJlZ2lzdGVyVE1DbG9uZVRhYmxlAF9JVE1fcmVnaXN0ZXJUTUNsb25lVGFibGUAX1pTdDRjb3V0AF9fY3hhX2VuZF9jYXRjaABfWk5TbzVmbHVzaEV2AF9fY3hhX3Rocm93AF9fY3hhX2JlZ2luX2NhdGNoAF9aU3Q0ZW5kbEljU3QxMWNoYXJfdHJhaXRzSWNFRVJTdDEzYmFzaWNfb3N0cmVhbUlUX1QwX0VTNl8AX1pTdDE2X19vc3RyZWFtX2luc2VydEljU3QxMWNoYXJfdHJhaXRzSWNFRVJTdDEzYmFzaWNfb3N0cmVhbUlUX1QwX0VTNl9QS1MzX2kAX1pOU3Q4aW9zX2Jhc2U0SW5pdEQxRXYAX19neHhfcGVyc29uYWxpdHlfdjAAX1pOU28zcHV0RWMAX1pOU3Q4aW9zX2Jhc2U0SW5pdEMxRXYAX19jeGFfYWxsb2NhdGVfZXhjZXB0aW9uAF9aTktTdDVjdHlwZUljRTEzX01fd2lkZW5faW5pdEV2AF9aVEljAF9aVElmAF9aVElpAF9aU3QxNl9fdGhyb3dfYmFkX2Nhc3R2AF9aTlNvbHNFaQBsaWJnY2Nfcy5zby4xAF9VbndpbmRfUmVzdW1lAGxpYmMuc28uNgBfSU9fc3RkaW5fdXNlZABfX2N4YV9hdGV4aXQAZ2V0ZW52AF9fY3hhX2ZpbmFsaXplAF9fbGliY19zdGFydF9tYWluAEdDQ18zLjAAR0xJQkNfMi4wAEdMSUJDXzIuMS4zAEdMSUJDWFhfMy40LjkAR0xJQkNYWF8zLjQuMTEAR0xJQkNYWF8zLjQAQ1hYQUJJXzEuMwAAAAIAAwAEAAIAAwACAAMABAAFAAUABgADAAMABwACAAMAAgACAAIAAwAAAAgAAAAAAAIAAwABAAEAAQDjAQAAEAAAACAAAABQJnkLAAAIAE4CAAAAAAAAAQACAAACAAAQAAAAMAAAABBpaQ0AAAUAVgIAABAAAABzH2kJAAAEAGACAAAAAAAAAQAEAAEAAAAQAAAAAAAAAIl/KQIAAAcAbAIAABAAAABh+JcCAAAGAHoCAAAQAAAAdCmSCAAAAwCJAgAAEAAAANOvawUAAAIAlQIAAAAAAAB4LgAACAAAAHwuAAAIAAAAgC4AAAgAAADgLwAACAAAAAQwAAAIAAAA2C8AAAYBAAAMMAAAAQEAANwvAAAGAwAA5C8AAAYNAADoLwAABg8AAOwvAAAGFQAA8C8AAAYXAAD0LwAABhgAAPgvAAAGGQAACDAAAAEZAAD8LwAABhoAABAwAAABEgAAmC8AAAcCAACcLwAABwQAAKAvAAAHBQAApC8AAAcGAACoLwAABwcAAKwvAAAHCAAAsC8AAAcJAAC0LwAABwoAALgvAAAHCwAAvC8AAAcMAADALwAABw4AAMQvAAAHEAAAyC8AAAcRAADMLwAABxMAANAvAAAHFAAA1C8AAAcWAABTg+wI6HsBAACBw3cnAACLg2QAAACFwHQF6B4BAACDxAhbwwD/swQAAAD/owgAAAAAAAAA/6MMAAAAaAAAAADp4P////+jEAAAAGgIAAAA6dD/////oxQAAABoEAAAAOnA/////6MYAAAAaBgAAADpsP////+jHAAAAGggAAAA6aD/////oyAAAABoKAAAAOmQ/////6MkAAAAaDAAAADpgP////+jKAAAAGg4AAAA6XD/////oywAAABoQAAAAOlg/////6MwAAAAaEgAAADpUP////+jNAAAAGhQAAAA6UD/////ozgAAABoWAAAAOkw/////6M8AAAAaGAAAADpIP////+jQAAAAGhoAAAA6RD/////o0QAAABocAAAAOkA/////6NIAAAAaHgAAADp8P7///+jUAAAAGaQ/6NkAAAAZpAx7V6J4YPk8FBUUugiAAAAgcMsJgAAjYNU3v//UI2D9N3//1BRVv+zVAAAAOgv////9IscJMNmkGaQZpBmkGaQixwkw2aQZpBmkGaQZpBmkOjkAAAAgcLnJQAAjYqIAAAAjYKIAAAAOch0HYuCYAAAAIXAdBNVieWD7BRR/9CDxBDJw5CNdCYA88ONtgAAAADopAAAAIHCpyUAAFWNiogAAACNgogAAAApyInlU8H4AonDg+wEwesfAdjR+HQUi5JoAAAAhdJ0CoPsCFBR/9KDxBCLXfzJw4n2jbwnAAAAAFWJ5VPoV////4HDUyUAAIPsBIC7iAAAAAB1J4uDUAAAAIXAdBGD7Az/s3gAAADo3f7//4PEEOg1////xoOIAAAAAYtd/MnDifaNvCcAAAAAVYnlXelX////ixQk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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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cmFtZV9kdW1teV9pbml0X2FycmF5X2VudHJ5AHNpbXBsZV90aHJvdy5jcHAAX0dMT0JBTF9fc3ViX0lfX1ozYmFydgBfWlN0TDhfX2lvaW5pdABfX0ZSQU1FX0VORF9fAF9fR05VX0VIX0ZSQU1FX0hEUgBfRFlOQU1JQwBfX2luaXRfYXJyYXlfZW5kAF9faW5pdF9hcnJheV9zdGFydABfR0xPQkFMX09GRlNFVF9UQUJMRV8AX1pUSWlAQENYWEFCSV8xLjMAX1pOU28zcHV0RWNAQEdMSUJDWFhfMy40AF9fY3hhX2ZpbmFsaXplQEBHTElCQ18yLjEuMwBfZWRhdGEARFcucmVmLl9aVEljAF9JT19zdGRpbl91c2VkAF9fY3hhX2JlZ2luX2NhdGNoQEBDWFhBQklfMS4zAF9mcF9odwBtYWluAF9aU3Q0ZW5kbEljU3QxMWNoYXJfdHJhaXRzSWNFRVJTdDEzYmFzaWNfb3N0cmVhbUlUX1QwX0VTNl9AQEdMSUJDWFhfMy40AF9fY3hhX2FsbG9jYXRlX2V4Y2VwdGlvbkBAQ1hYQUJJXzEuMwBfX2Rzb19oYW5kbGUARFcucmVmLl9fZ3h4X3BlcnNvbmFsaXR5X3YwAF9aTlNvNWZsdXNoRXZAQEdMSUJDWFhfMy40AF9fY3hhX2F0ZXhpdEBAR0xJQkNfMi4xLjMAX194ODYuZ2V0X3BjX3RodW5rLmJ4AGdldGVudkBAR0xJQkNfMi4wAF9fbGliY19zdGFydF9tYWluQEBHTElCQ18yLjAAX19UTUNfRU5EX18AX1pOS1N0NWN0eXBlSWNFMTNfTV93aWRlbl9pbml0RXZAQEdMSUJDWFhfMy40LjExAF9aU3QxNl9fdGhyb3dfYmFkX2Nhc3R2QEBHTElCQ1hYXzMuNABfWlN0NGNvdXRAQEdMSUJDWFhfMy40AF9aU3QxNl9fb3N0cmVhbV9pbnNlcnRJY1N0MTFjaGFyX3RyYWl0c0ljRUVSU3QxM2Jhc2ljX29zdHJlYW1JVF9UMF9FUzZfUEtTM19pQEBHTElCQ1hYXzMuNC45AF9fZGF0YV9zdGFydABfX3g4Ni5nZXRfcGNfdGh1bmsuZHgAX1pUSWZAQENYWEFCSV8xLjMAX19ic3Nfc3RhcnQAX1ozZm9vdgBfWk5TdDhpb3NfYmFzZTRJbml0QzFFdkBAR0xJQkNYWF8zLjQAX19saWJjX2NzdV9pbml0AF9fY3hhX2VuZF9jYXRjaEBAQ1hYQUJJXzEuMwBfX2d4eF9wZXJzb25hbGl0eV92MEBAQ1hYQUJJXzEuMwBEVy5yZWYuX1pUSWkAX19jeGFfdGhyb3dAQENYWEFCSV8xLjMAX1pOU29sc0VpQEBHTElCQ1hYXzMuNABfSVRNX2RlcmVnaXN0ZXJUTUNsb25lVGFibGUAX1Vud2luZF9SZXN1bWVAQEdDQ18zLjAAX19saWJjX2NzdV9maW5pAF9fZ21vbl9zdGFydF9fAF9JVE1fcmVnaXN0ZXJUTUNsb25lVGFibGUAX1pUSWNAQENYWEFCSV8xLjMAX194ODYuZ2V0X3BjX3RodW5rLnNpAF9aTlN0OGlvc19iYXNlNEluaXREMUV2QEBHTElCQ1hYXzMuNAAALnN5bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAuaW50ZXJwAC5ub3RlLkFCSS10YWcALm5vdGUuZ251LmJ1aWxkLWlkAC5nbnUuaGFzaAAuZHluc3ltAC5keW5zdHIALmdudS52ZXJzaW9uAC5nbnUudmVyc2lvbl9yAC5yZWwuZHluAC5yZWwucGx0AC5pbml0AC5wbHQuZ290AC50ZXh0AC5maW5pAC5yb2RhdGEALmVoX2ZyYW1lX2hkcgAuZWhfZnJhbWUALmdjY19leGNlcHRfdGFibGUALmluaXRfYXJyYXkALmZpbmlfYXJyYXkALmR5bmFtaWMALmRhdGEALmJzcwAuY29tbWVudAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAACAAAAVAEAAFQBAAATAAAAAAAAAAAAAAABAAAAAAAAACMAAAAHAAAAAgAAAGgBAABoAQAAIAAAAAAAAAAAAAAABAAAAAAAAAAxAAAABwAAAAIAAACIAQAAiAEAACQAAAAAAAAAAAAAAAQAAAAAAAAARAAAAPb//28CAAAArAEAAKwBAAAgAAAABQAAAAAAAAAEAAAABAAAAE4AAAALAAAAAgAAAMwBAADMAQAAwAEAAAYAAAABAAAABAAAABAAAABWAAAAAwAAAAIAAACMAwAAjAMAAKACAAAAAAAAAAAAAAEAAAAAAAAAXgAAAP///28CAAAALAYAACwGAAA4AAAABQAAAAAAAAACAAAAAgAAAGsAAAD+//9vAgAAAGQGAABkBgAAoAAAAAYAAAADAAAABAAAAAAAAAB6AAAACQAAAAIAAAAEBwAABAcAAIgAAAAFAAAAAAAAAAQAAAAIAAAAgwAAAAkAAABCAAAAjAcAAIwHAACAAAAABQAAABcAAAAEAAAACAAAAIwAAAABAAAABgAAAAwIAAAMCAAAIwAAAAAAAAAAAAAABAAAAAAAAACHAAAAAQAAAAYAAAAwCAAAMAgAABABAAAAAAAAAAAAABAAAAAEAAAAkgAAAAEAAAAGAAAAQAkAAEAJAAAQAAAAAAAAAAAAAAAIAAAACAAAAJsAAAABAAAABgAAAFAJAABQCQAAkgQAAAAAAAAAAAAAEAAAAAAAAAChAAAAAQAAAAYAAADkDQAA5A0AABQAAAAAAAAAAAAAAAQAAAAAAAAApwAAAAEAAAACAAAA+A0AAPgNAABpAAAAAAAAAAAAAAAEAAAAAAAAAK8AAAABAAAAAgAAAGQOAABkDgAAVAAAAAAAAAAAAAAABAAAAAAAAAC9AAAAAQAAAAIAAAC4DgAAuA4AABwCAAAAAAAAAAAAAAQAAAAAAAAAxwAAAAEAAAACAAAA1BAAANQQAABMAAAAAAAAAAAAAAAEAAAAAAAAANkAAAAOAAAAAwAAAHguAAB4HgAACAAAAAAAAAAAAAAABAAAAAQAAADlAAAADwAAAAMAAACALgAAgB4AAAQAAAAAAAAAAAAAAAQAAAAEAAAA8QAAAAYAAAADAAAAhC4AAIQeAAAIAQAABgAAAAAAAAAEAAAACAAAAJYAAAABAAAAAwAAAIwvAACMHwAAdAAAAAAAAAAAAAAABAAAAAQAAAD6AAAAAQAAAAMAAAAAMAAAACAAABQAAAAAAAAAAAAAAAQAAAAAAAAAAAEAAAgAAAADAAAAFDAAABQgAAAEAAAAAAAAAAAAAAABAAAAAAAAAAUBAAABAAAAMAAAAAAAAAAUIAAAKwAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAgAAAAAAAAAAAAAAQCAAAPAFAAAcAAAALgAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAADAmAABeBQAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAACOKwAADgEAAAAAAAAAAAAAAQAAAAAAAAA=
perms: rw
// @HEADER_COMPONENT libehp
// @HEADER_LANG C++
// @HEADER_BEGIN
/*
Copyright 2017-2018 University of Virginia
Copyright 2017-2019 University of Virginia
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
......@@ -12,9 +16,12 @@
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// @HEADER_END
#ifndef ehp_hpp
#define ehp_hpp
......
# Copyright 2017-2018 University of Virginia
# @HEADER_COMPONENT libehp
# @HEADER_LANG python
# @HEADER_BEGIN
#
# Copyright 2017-2019 University of Virginia
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# @HEADER_END
import os
......
# @HEADER_COMPONENT libehp
# @HEADER_LANG python
# @HEADER_BEGIN
# Copyright 2017-2018 University of Virginia
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# Copyright 2017-2019 University of Virginia
#
# http://www.apache.org/licenses/LICENSE-2.0
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# @HEADER_END
env=Environment()
......
// @HEADER_COMPONENT libehp
// @HEADER_LANG C++
// @HEADER_BEGIN
/*
Copyright 2017-2018 University of Virginia
Copyright 2017-2019 University of Virginia
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
......@@ -12,8 +16,10 @@
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// @HEADER_END
#include <iostream>
#include <iomanip>
#include <fstream>
......@@ -21,11 +27,11 @@
#include <stdlib.h>
#include <string.h>
#include <map>
#include <assert.h>
#include <algorithm>
#include <memory>
#include <ehp.hpp>
#include "throw_assert.h"
#include "ehp_priv.hpp"
#include "scoop_replacement.hpp"
......@@ -137,7 +143,7 @@ bool eh_frame_util_t<ptrsize>::read_type_with_encoding
return true;
break;
}
assert(0);
throw_assert(0);
}
case DW_EH_PE_sdata2 :
......@@ -167,7 +173,7 @@ bool eh_frame_util_t<ptrsize>::read_type_with_encoding
case DW_EH_PE_signed :
default:
assert(0);
throw_assert(0);
};
switch(encoding_upper8)
......@@ -183,7 +189,7 @@ bool eh_frame_util_t<ptrsize>::read_type_with_encoding
case DW_EH_PE_aligned:
case DW_EH_PE_indirect:
default:
assert(0);
throw_assert(0);
return true;
}
return false;
......@@ -243,10 +249,12 @@ bool eh_frame_util_t<ptrsize>::read_sleb128 (
auto byte=uint8_t(0);
do
{
if ( position > max )
return true;
byte = data [position];
position++;
result |= ((byte & 0x7f)<< shift);
shift += 7;
position++;
} while( (byte & 0x80) != 0);
/* sign bit of byte is second high order bit (0x40) */
......@@ -442,7 +450,6 @@ void eh_program_insn_t<ptrsize>::print(uint64_t &pc, int64_t caf) const
if(eh_frame_util_t<ptrsize>::read_uleb128(uleb, pos, (const uint8_t* const)data.data(), max))
return ;
cout<<" def_cfa_expression "<<dec<<uleb<<endl;
pos+=uleb; // doing this old school for now, as we aren't printing the expression.
break;
}
case DW_CFA_expression:
......@@ -454,7 +461,6 @@ void eh_program_insn_t<ptrsize>::print(uint64_t &pc, int64_t caf) const
if(eh_frame_util_t<ptrsize>::read_uleb128(uleb2, pos, (const uint8_t* const)data.data(), max))
return ;
cout<<" expression "<<dec<<uleb1<<" "<<uleb2<<endl;
pos+=uleb2;
break;
}
case DW_CFA_val_expression:
......@@ -466,7 +472,6 @@ void eh_program_insn_t<ptrsize>::print(uint64_t &pc, int64_t caf) const
if(eh_frame_util_t<ptrsize>::read_uleb128(uleb2, pos, (const uint8_t* const)data.data(), max))
return ;
cout<<" val_expression "<<dec<<uleb1<<" "<<uleb2<<endl;
pos+=uleb2;
break;
}
case DW_CFA_def_cfa_offset_sf:
......@@ -753,18 +758,26 @@ bool eh_program_insn_t<ptrsize>::parse_insn(
case DW_CFA_set_loc:
pos+=ptrsize;
if(pos>max)
return true;
break;
case DW_CFA_advance_loc1:
pos+=1;
if(pos>max)
return true;
break;
case DW_CFA_advance_loc2:
pos+=2;
if(pos>max)
return true;
break;
case DW_CFA_advance_loc4:
pos+=4;
if(pos>max)
return true;
break;
case DW_CFA_offset_extended:
......@@ -796,6 +809,10 @@ bool eh_program_insn_t<ptrsize>::parse_insn(
if(eh_frame_util_t<ptrsize>::read_uleb128(uleb, pos, data, max))
return true;
pos+=uleb;
if(pos>max)
return true;
if(pos>max)
return true;
break;
}
case DW_CFA_expression:
......@@ -808,6 +825,8 @@ bool eh_program_insn_t<ptrsize>::parse_insn(
if(eh_frame_util_t<ptrsize>::read_uleb128(uleb2, pos, data, max))
return true;
pos+=uleb2;
if(pos>max)
return true;
break;
}
case DW_CFA_def_cfa_offset_sf:
......@@ -946,7 +965,7 @@ bool eh_program_insn_t<ptrsize>::advance(uint64_t &cur_addr, uint64_t CAF) const
{
case DW_CFA_set_loc:
{
assert(0);
throw_assert(0);
return true;
}
case DW_CFA_advance_loc1:
......@@ -1149,7 +1168,7 @@ bool cie_contents_t<ptrsize>::parse_cie(
return_address_register_column=return_address_register_column_64;
}
else
assert(0);
throw_assert(0);
auto augmentation_data_length=uint64_t(0);
if(augmentation.find("z") != string::npos)
......@@ -1319,7 +1338,7 @@ bool lsda_type_table_entry_t<ptrsize>::parse(
tt_encoding_size=ptrsize;
break;
default:
assert(0);
throw_assert(0);
}
const auto orig_act_pos=uint32_t(tt_pos+(-index*tt_encoding_size));
auto act_pos=uint32_t(tt_pos+(-index*tt_encoding_size));
......@@ -1382,23 +1401,24 @@ bool lsda_call_site_t<ptrsize>::parse_lcs(
const uint8_t cs_table_encoding,
uint32_t &pos,
const uint8_t* const data,
const uint64_t max, /* call site table max */
const uint64_t cs_max, /* call site table max */
const uint64_t data_addr,
const uint64_t landing_pad_base_addr,
const uint64_t gcc_except_table_max)
{
const auto smallest_max = min(cs_max,gcc_except_table_max);
call_site_addr_position = pos + data_addr;
if(this->read_type_with_encoding(cs_table_encoding, call_site_offset, pos, data, max, data_addr))
if(this->read_type_with_encoding(cs_table_encoding, call_site_offset, pos, data, smallest_max, data_addr))
return true;
call_site_addr=landing_pad_base_addr+call_site_offset;
call_site_end_addr_position = pos + data_addr;
if(this->read_type_with_encoding(cs_table_encoding, call_site_length, pos, data, max, data_addr))
if(this->read_type_with_encoding(cs_table_encoding, call_site_length, pos, data, smallest_max, data_addr))
return true;
call_site_end_addr=call_site_addr+call_site_length;
landing_pad_addr_position = pos + data_addr;
if(this->read_type_with_encoding(cs_table_encoding, landing_pad_offset, pos, data, max, data_addr))
if(this->read_type_with_encoding(cs_table_encoding, landing_pad_offset, pos, data, smallest_max, data_addr))
return true;
landing_pad_addr_end_position = pos + data_addr;
......@@ -1408,7 +1428,7 @@ bool lsda_call_site_t<ptrsize>::parse_lcs(
else
landing_pad_addr=landing_pad_base_addr+landing_pad_offset;
if(this->read_uleb128(action, pos, data, max))
if(this->read_uleb128(action, pos, data, smallest_max))
return true;
if(action == 0)
......@@ -1424,7 +1444,7 @@ bool lsda_call_site_t<ptrsize>::parse_lcs(
while(!end)
{
lsda_call_site_action_t<ptrsize> lcsa;
if(lcsa.parse_lcsa(act_table_pos, data, gcc_except_table_max, end))
if(lcsa.parse_lcsa(act_table_pos, data, gcc_except_table_max, end)) /* expect action table after cs_max */
return true;
action_table.push_back(lcsa);
......@@ -1432,11 +1452,11 @@ bool lsda_call_site_t<ptrsize>::parse_lcs(
}
else if( action < 0 )
{
assert(0); // how can the index into the action table be negative?
throw_assert(0); // how can the index into the action table be negative?
}
else
{
assert(0); // how is this possible?
throw_assert(0); // how is this possible?
}
return false;
......@@ -1600,7 +1620,7 @@ bool lsda_t<ptrsize>::parse_lsda(
// we ignore for now. A warning is printed if they are found in build_ir.
}
else
assert(0);
throw_assert(0);
};
......@@ -1829,7 +1849,7 @@ bool split_eh_frame_impl_t<ptrsize>::iterate_fdes()
// next CIE/FDE
assert(position<=next_position); // so we don't accidentally over-read a CIE/FDE
throw_assert(position<=next_position); // so we don't accidentally over-read a CIE/FDE
position=next_position;
}
return false;
......
// @HEADER_COMPONENT libehp
// @HEADER_LANG C++
// @HEADER_BEGIN
/*
Copyright 2017-2018 University of Virginia
Copyright 2017-2019 University of Virginia
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
......@@ -12,9 +16,10 @@
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// @HEADER_END
#ifndef _DWARF2_H
#define _DWARF2_H 1
......
// @HEADER_COMPONENT libehp
// @HEADER_LANG C++
// @HEADER_BEGIN
/*
Copyright 2017-2018 University of Virginia
Copyright 2017-2019 University of Virginia
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
......@@ -13,6 +17,9 @@
See the License for the specific language governing permissions and
limitations under the License.
*/
// @HEADER_END
#ifndef ehp_priv_hpp
#define ehp_priv_hpp
......@@ -23,7 +30,6 @@
#include <stdlib.h>
#include <string.h>
#include <map>
#include <assert.h>
#include <algorithm>
#include <memory>
#include <set>
......