update to 1.7

This commit is contained in:
.[d]. 2022-03-19 12:24:47 -05:00
parent 57c5ef6271
commit ed903b2263
2 changed files with 479 additions and 399 deletions

@ -34,11 +34,18 @@ MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMdyymMMMMMMMMMMMMMMMMMMMMMMMMMMM
```
## summary
```
dp3 v1.6 - parallel music ripping batch processing automation utility
dp3 v1.7 - parallel music ripping batch processing automation utility
```
## update - v1.6
- added multiline mode - rather than feeding arguments as parameters you can paste a bunch on boot
- added mixed processing - can multiline playlists from soundcloud/youtube/bandcamp intermingled
## changelog - v1.7
- added a sense of progess indication to the site indexing, helpful if you are ripping channels
- updated the dp3 tagging tool, mishandled unicode splitting and would omit downloaded files
- altered some ui elements, examples, indications and color coding
- updated the tmux layout, it wasn't tiling in fractions between perfect vertical/horizontal splits
- updated the way file progress is realized so window panes close accordingly
- changed some flags to youtube-dl so that stale downloads were not hanging large batches
## changelog - v1.6
- added MULTI-LINE mode - rather than feeding arguments as parameters you can paste a bunch on boot
- added mixed processing - can MULTI-LINE playlists from soundcloud/youtube/bandcamp intermingled
- sets/playlists/channels - these now all operate no differently than a single media link
- stepped up parallelism
- increased thread count - variable set at top of dp3.sh
@ -51,7 +58,7 @@ dp3 v1.6 - parallel music ripping batch processing automation utility
## screenshots
---
```
multiline mode
MULTI-LINE mode
```
---
![screenshots](screenshots/ssa.jpg)
@ -95,14 +102,14 @@ command line mode
- syntax: `bash dp3.sh name_of_playlist genre_of_playlist url_to_playlist`
- example: `bash dp3.sh dr1pp1ng techno https://www.youtube.com/playlist?list=PLrdcKN79B4UG1xoQ8-L3eiaI1cYzFCiW`
```
multiline mode
MULTI-LINE mode
```
- syntax: `bash dp3.sh` - *without arguments* - when the script loads it will be accepting multiline input
- example: multiline paste.. first line - playlist name, 2nd line - genre, rest of the lines can be intermingled
- syntax: `bash dp3.sh` - *without arguments* - when the script loads it will be accepting MULTI-LINE input
- example: MULTI-LINE paste.. first line - playlist name, 2nd line - genre, rest of the lines can be intermingled
```
`bash dp3.sh`
[ ENTER MULTILINE PLAYLISTS, PRESS CTRL+D WHEN YOU'RE DONE OR CTRL+C TO ABORT ]
[ ENTER MULTI-LINE PLAYLISTS, PRESS CTRL+D WHEN YOU'RE DONE OR CTRL+C TO ABORT ]
dr1pr3kt_dp3_t3st
mixed

853
dp3.sh

@ -1,5 +1,5 @@
#!/usr/bin/env bash
################################################################################################# VERSION 1.6 ### SOF
################################################################################################# VERSION 1.7 ### SOF
echo -e '\033[0;31m'" .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. "
echo -e '\033[0;31m'" /mMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNd- "
echo -e '\033[0;31m'"-MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN."
@ -61,28 +61,32 @@ PREFIX="dr1p__"
THREADS=20
#####################################################################################################################
usage () {
echo -e "\n\033[0;31m INFO: \033[0;91m[\033[0m COMMAND LINE HELP \033[0;91m]\033[0m"
echo -e "\n\033[0;31m USAGE: \033[0;91m./$0 name_of_playlist genre_of_playlist url_of_playlist\033[0m"
echo -e "\033[0;31mEXAMPLE: \033[0;91m./$0 dr1pp1ng rap https://www.youtu.be/playlist?list=BLABLABLABLABLA\033[0m"
echo -e "\n\033[0;31m INFO: \033[0;91m[\033[0m MULTILINE HELP \033[0;91m]\033[0m"
echo -e "\n\033[0;31m USAGE:\033[0;91m first line: what to name this playlist, it's just a chosen name\033[0m"
echo -e "\033[0;31m USAGE: \033[0;91msecond line: genre of this playlist, can be anything you want \033[0m"
echo -e "\033[0;31mEXAMPLE: \033[0;91mdr1pp1ng_m1x3s\033[0m"
echo -e "\033[0;31mEXAMPLE: \033[0;91mindustrial\033[0m"
echo -e "\033[0;31mEXAMPLE: \033[0;91mwww.youtube.com/playlist?list=PLrdcKN79B4UG1xoQ8-L3eiaI1cYzFCiWD\033[0m"
echo -e "\033[0;31mEXAMPLE: \033[0;91mhttps://soundcloud.com/vanta_sec/sets/dr1pp1ng\033[0m"
echo -e "\033[0;31mEXAMPLE: \033[0;91mhttps://the--hacker.bandcamp.com/\033[0m"
echo -e "\033[0;31mEXAMPLE: \033[0;91mhttps://soundcloud.com/user-786674423\033[0m"
echo -e "\n\t\033[0;31m INFO: \033[0;91m[\033[0m COMMAND LINE HELP \033[0;91m]\033[0m"
echo -e "\n\t\033[0;31m USAGE: \033[0;91m./$0 name_of_playlist genre_of_playlist url_of_playlist\033[0m"
echo -e "\t\033[0;31mEXAMPLE: \033[0;91m./$0 dr1pp1ng rap https://www.youtu.be/playlist?list=BLABLABLABLABLA\033[0m"
echo -e "\n\t\033[0;31m INFO: \033[0;91m[\033[0m MULTI-LINE HELP \033[0;91m]\033[0m"
echo -e "\n\033[0;31m USAGE_LINE_1:\033[0;91m first line: what to name this playlist, it's just a chosen name\033[0m"
echo -e "\033[0;31m USAGE_LINE_2: \033[0;91msecond line: genre of this playlist, can be anything you want \033[0m"
echo -e "\033[0;31m USAGE_LINE_3: \033[0;91mthird line and more: a url to a song, playlist, set or channel \033[0m\n"
echo -e "\t\033[0;31mEXAMPLE: \033[0;91m[\033[0m TRY THE SIX LINE BATCH BELOW IF YOU ARE UNSURE\033[0;91m ]\033[0m\n"
echo -e "\033[0;31m EXAMPLE_LINE_1: \033[0;91mdr1pp1ng_m1x3s\033[0m"
echo -e "\033[0;31m EXAMPLE_LINE_2: \033[0;91mindustrial\033[0m"
echo -e "\033[0;31m EXAMPLE_LINE_3: \033[0;91mwww.youtube.com/playlist?list=PLrdcKN79B4UG1xoQ8-L3eiaI1cYzFCiWD\033[0m"
echo -e "\033[0;31m EXAMPLE_LINE_4: \033[0;91mhttps://soundcloud.com/vanta_sec/sets/dr1pp1ng\033[0m"
echo -e "\033[0;31m EXAMPLE_LINE_5: \033[0;91mhttps://the--hacker.bandcamp.com/\033[0m"
echo -e "\033[0;31m EXAMPLE_LINE_6: \033[0;91mhttps://soundcloud.com/user-786674423\033[0m"
}
#####################################################################################################################
if [ $# -lt 3 ]; then echo -e "\n\t\033[0;91m [\033[0m ERROR: NOT ENOUGH PARAMETERS SUPPLIED \033[0;91m]"; usage; fi
#####################
if [ $# -lt 3 ]; then
echo -e "\n[ \033[0;31mENTER MULTILINE PLAYLISTS, PRESS CTRL+D WHEN YOU'RE DONE OR CTRL+C TO ABORT\033[0m ]\n";
echo -e "\n\t\033[0;31m ERROR: \033[0;91m[\033[0m NOT ENOUGH PARAMETERS SUPPLIED \033[0;91m]"; usage
fi
#####################
if [ $# -lt 3 ]; then
echo -e "\n\033[0;91m[ \033[0;31mMULTI-LINE MODE, PRESS CTRL+D WHEN DONE OR CTRL+C TO ABORT\033[0;91m ]\033[0;91m\n";
DP3=$(cat);
fi
#####################################################################################################################
echo -e "\033[0;33m\n[ PREREQUISITES CHECK ]\033[0m\n"
echo -e "\033[0;33m\n[ PREREQUISITES CHECK ]\033[0;91m\n"
#####################################################################################################################
[ -e _cover.png ] || wget https://dr1p.black/assets/dr1p.pentagram.png -O $PLAYLIST_ARTWORK
#####################################################################################################################
@ -151,8 +155,8 @@ if [ -z "$DP3" ]; then
cat $PLAYLIST_URLSTEXT|grep -v "soundcloud\|bandcamp"|xargs -n 1|sed 's_^_https://youtu.be/_' > $PLAYLIST_URLBATCH
cat $PLAYLIST_URLSTEXT|grep "soundcloud\|bandcamp" >> $PLAYLIST_URLBATCH
####################################################################################
if [ $(cat $PLAYLIST_URLBATCH|grep youtu.be|wc -c) -eq 18 ]; then
cat $PLAYLIST_URLBATCH|grep -v youtu.be >> buffer && mv buffer $PLAYLIST_URLBATCH;
if [ $(cat $PLAYLIST_URLBATCH|grep youtu.be|wc -c) -eq 18 ]; then
cat $PLAYLIST_URLBATCH|grep -v youtu.be >> buffer && mv buffer $PLAYLIST_URLBATCH;
fi
####################################################################################
echo -e "\033[0;34m[ `cat $PLAYLIST_URLSTEXT|wc -l` OF `cat $PLAYLIST_URLBATCH|wc -l` URLS PARSED ]\033[0m"
@ -162,29 +166,55 @@ else
PLAYLIST_NAME=$(echo $DP3|xargs -n1|sed -n 1p)
PLAYLIST_GENRE=$(echo $DP3|xargs -n1|sed -n 2p)
PLAYLIST_URL=$(echo $DP3|xargs -n1|sed -n '3,$p')
####################################################################################
echo -e "\033[0;33m[ FETCHING CONTENT IDS FROM PLAYLISTS ]\033[0m"
echo -e "\033[0;31m[ THIS MAY TAKE A VERY LONG MOMENT TO RECURSIVELY INDEX CONTENT ]\033[0m"
####################################################################################
echo $PLAYLIST_URL|xargs -n1|grep youtube|xargs -I{} youtube-dl -j --flat-playlist {}|jq -r '.url'|grep -v \
youtube|sed 's_^_https://youtu.be/_' > $PLAYLIST_URLBATCH
echo $PLAYLIST_URL|xargs -n1|grep youtube|xargs -I{} youtube-dl -j --flat-playlist {}| jq -r '.url'|grep \
youtube|xargs -I{} youtube-dl -j --flat-playlist {}|jq -r '.id'|sed 's_^_https://youtu.be/_' >> $PLAYLIST_URLBATCH
youtube|xargs -I{} youtube-dl -j --flat-playlist {}|jq -r '.id'|sed 's_^_https://youtu.be/_' >> $PLAYLIST_URLBATCH & disown
YOUTUBE_PID=$!
####################################################################################
echo $PLAYLIST_URL|xargs -n1|grep soundcloud|xargs -I{} youtube-dl -j \
--flat-playlist {}|jq -r '.url' >> $PLAYLIST_URLBATCH
--flat-playlist {}|jq -r '.url' >> $PLAYLIST_URLBATCH & disown
SOUNDCLOUD_PID=$!
####################################################################################
echo $PLAYLIST_URL|xargs -n1|grep bandcamp| awk -F[/:] '{print $4}'|xargs -I{} elinks --dump --no-numbering \
{}|grep -e '.com/album' -e '.com/track'|sed 's/.*https/https/g'|uniq|xargs -I{} youtube-dl -j --flat-playlist \
{}|jq -r '.url' >> $PLAYLIST_URLBATCH
cat $PLAYLIST_URLBATCH
echo -e "\033[0;31m[ FINISHED INDEXING - `wc -l $PLAYLIST_URLBATCH` ITEMS SORTED ]\033[0m"
{}|jq -r '.url' >> $PLAYLIST_URLBATCH & disown
BANDCAMP_PID=$!
####################################################################################
[ -e dp3_finished_yt ] && rm dp3_finished_yt; [ -e dp3_finished_sc ] && rm dp3_finished_sc; [ -e dp3_finished_bc ] && rm dp3_finished_bc
while [ -z $YOUTUBE_TRAP ]; do if [ $(ps -aux|grep $YOUTUBE_PID|grep -v "grep" > /dev/null 2>&1;echo $?) -eq 1 ]; then YOUTUBE_TRAP=1; touch dp3_finished_yt; echo -e "\n\033[0;31m[\033[0m YOUTUBE INDEX DONE \033[0;31m]\n"; fi; done & disown
while [ -z $SOUNDCLOUD_TRAP ]; do if [ $(ps -aux|grep $SOUNDCLOUD_PID|grep -v "grep" > /dev/null 2>&1;echo $?) -eq 1 ]; then SOUNDCLOUD_TRAP=1; touch dp3_finished_sc; echo -e "\n\033[0;31m[\033[0m SOUNDCLOUD INDEX DONE \033[0;31m]\n"; fi; done & disown
while [ -z $BANDCAMP_TRAP ]; do if [ $(ps -aux|grep $BANDCAMP_PID|grep -v "grep" > /dev/null 2>&1;echo $?) -eq 1 ]; then BANDCAMP_TRAP=1; touch dp3_finished_bc; echo -e "\n\033[0;31m[\033[0m BANDCAMP INDEX DONE \033[0;31m]\n"; fi; done & disown
####################################################################################
echo -e "\033[0;31m" && tail -f $PLAYLIST_URLBATCH & disown && TAIL_PID=$!
####################################################################################
FINITE_TRAP=0
while [ $FINITE_TRAP == 0 ]; do
if [ -e dp3_finished_yt ] && [ -e dp3_finished_sc ] && [ -e dp3_finished_bc ]; then
FINITE_TRAP=1;
sleep .1;
echo -e "\n\033[0;31m[\033[0m JOBS FINITE \033[0;31m]"
rm dp3_finished_* > /dev/null 2>&1;
kill -9 $TAIL_PID;
echo -e "\033[0;31m[\033[0m FINISHED INDEXING \033[0;31m-\033[0m `wc -l $PLAYLIST_URLBATCH` ITEMS SORTED \033[0;31m]\033[0m\n"
else
sleep 1; echo -n .
fi
done
####################################################################################
fi
#####################################################################################################################
[ -d "$PLAYLIST_NAME"= ] || mkdir "$PLAYLIST_NAME"
[ -d "$PLAYLIST_NAME" ] || mkdir "$PLAYLIST_NAME"
##################################################
mv "$PLAYLIST_URLBATCH" "$PLAYLIST_NAME/url_batch.log"; cd "$PLAYLIST_NAME"
#####################################################################################################################
ENABLED_YOUTUBE=0; ENABLED_BANDCAMP=0; ENABLED_SOUNDCLOUD=0;
cat "url_batch.log"|grep "youtu.\|YOUTU.\|youtube.\|YOUTUBE." 2>&1>/dev/null
############################################################################
if [ $? -eq 0 ]; then
if [ $? -eq 0 ]; then
cat "url_batch.log"|grep "youtu.\|YOUTU.\|youtube.\|YOUTUBE." > "youtube_url_batch.log"
ENABLED_YOUTUBE=1
fi
@ -201,27 +231,30 @@ cat "url_batch.log"|grep "bandcamp.\|BANDCAMP." 2>&1>/dev/null
if [ $? -eq 0 ]; then
cat "url_batch.log"|grep "bandcamp.\|BANDCAMP." > "bandcamp_url_batch.log"
ENABLED_BANDCAMP=1
fi
fi
#####################################################################################################################
echo -e "\033[0;33m[ STARTING PARALLEL DOWNLOADS ]\033[0m\n"
#####################################################################################################################
echo $PWD
#####################################################################################################################
if [ -f "youtube_url_batch.log" ]; then
[ ! -d "rips_youtube" ] && mkdir "rips_youtube"
mv "youtube_url_batch.log" "rips_youtube/youtube_url_batch.log"
echo 'cd rips_youtube; touch youtube_downloaded.log; clear; echo -e "\033[0;3mprogress window - youtube - [ \
initializing ]"; sleep 1; while :; do clear; [ $(ps -aux|grep youtube-dl|grep -v "tmux\|bash\|grep" \
> /dev/null 2>&1;echo $?) -eq 1 ] && exit; echo -e "\033[0;31mprogress window - youtube - \033[0;92m`cat \
youtube_downloaded.log|wc -l`\033[0;31m/\033[0;92m`cat youtube_url_batch.log|wc -l`\033[0;31m files \
downloaded - \033[0;92m`ls -al *|grep -v "log\|mp3"|wc -l`\033[0;31m files actively downloading\033[0;94m"; \
ls -al|grep webm; sleep 0.3; done' > youtube_progress.sh
echo 'cd rips_youtube; touch youtube_downloaded.log; clear; echo -e "\033[0;3mprogress window - \
youtube - [ initializing ]"; while :; do clear; [ $(ps -aux|grep youtube_download.sh|grep -v \
"eval\|grep" > /dev/null 2>&1;echo $?) -eq 1 ] && exit; echo -e "\033[0;31mprogress window -\
youtube - \033[0;92m`cat youtube_downloaded.log|wc -l`\033[0;31m/\033[0;92m\
`cat youtube_url_batch.log|wc -l`\033[0;31m files downloaded - \033[0;92m`ls -al *|grep \
-v "log\|mp3"|wc -l`\033[0;31m files actively downloading\033[0;94m"; ls -al|grep webm; sleep 0.3; \
done' > youtube_progress.sh
fi
#####################################################################################################################
if [ -f "soundcloud_url_batch.log" ]; then
[ ! -d "rips_soundcloud" ] && mkdir "rips_soundcloud"
mv "soundcloud_url_batch.log" "rips_soundcloud/soundcloud_url_batch.log"
echo 'cd rips_soundcloud; touch soundcloud_downloaded.log; clear; echo -e "\033[0;3mprogress window - \
soundcloud - [ initializing ]"; sleep 1; while :; do clear; [ $(ps -aux|grep youtube-dl|grep -v \
"tmux\|bash\|grep" > /dev/null 2>&1;echo $?) -eq 1 ] && exit;echo -e "\033[0;31mprogress window - \
soundcloud - [ initializing ]"; while :; do clear; [ $(ps -aux|grep soundcloud_download.sh|grep -v \
"eval\|grep" > /dev/null 2>&1;echo $?) -eq 1 ] && exit;echo -e "\033[0;31mprogress window -\
soundcloud - \033[0;92m `cat soundcloud_downloaded.log|wc -l`\033[0;31m/\033[0;92m\
`cat soundcloud_url_batch.log|wc -l`\033[0;31m files downloaded - \033[0;92m`ls -al *|grep \
-v "log\|mp3"|wc -l`\033[0;31m files actively downloading\033[0;94m"; ls -al|grep webm; sleep 0.3; \
@ -231,41 +264,52 @@ fi
if [ -f "bandcamp_url_batch.log" ]; then
[ ! -d "rips_bandcamp" ] && mkdir "rips_bandcamp"
mv "bandcamp_url_batch.log" "rips_bandcamp/bandcamp_url_batch.log"
echo 'cd rips_bandcamp; touch bandcamp_downloaded.log; clear; echo -e "\033[0;3mprogress window - bandcamp - [ \
initializing ]"; sleep 1; while :; do clear; [ $(ps -aux|grep youtube-dl|grep -v "tmux\|bash\|grep" > /dev/null \
2>&1;echo $?) -eq 1 ] && exit;echo -e "\033[0;31mprogress window - bandcamp - \033[0;92m\
`cat bandcamp_downloaded.log|wc -l`\033[0;31m/\033[0;92m`cat bandcamp_url_batch.log|wc -l`\033[0;31m files \
downloaded - \033[0;92m`ls -al *|grep -v "log\|mp3"|wc -l`\033[0;31m files actively downloading\033[0;94m";\
ls -al|grep webm; sleep 0.3; done' > bandcamp_progress.sh
echo 'cd rips_bandcamp; touch bandcamp_downloaded.log; clear; echo -e "\033[0;3mprogress window - \
bandcamp - [ initializing ]"; while :; do clear; [ $(ps -aux|grep bandcamp_download.sh|grep -v \
"eval\|grep" > /dev/null 2>&1;echo $?) -eq 1 ] && exit;echo -e "\033[0;31mprogress window -\
bandcamp - \033[0;92m `cat bandcamp_downloaded.log|wc -l`\033[0;31m/\033[0;92m\
`cat bandcamp_url_batch.log|wc -l`\033[0;31m files downloaded - \033[0;92m`ls -al *|grep \
-v "log\|mp3"|wc -l`\033[0;31m files actively downloading\033[0;94m"; ls -al|grep webm; sleep 0.3; \
done' > bandcamp_progress.sh
fi
#####################################################################################################################
CMD_YT_D="cd rips_youtube; clear; echo -e '\033[0;31mdownload window - youtube\033[0;94m'; parallel \
-j $THREADS youtube-dl -f bestaudio -i --download-archive youtube_downloaded.log \
--socket-timeout 180 --fragment-retries 10 --abort-on-unavailable-fragment --no-part --no-post-overwrites \
-ciw --extract-audio --audio-format mp3 --audio-quality 0 < youtube_url_batch.log"
echo "cd rips_youtube; clear; echo -e '\033[0;31mdownload window - youtube\033[0;94m'; parallel \
-j $THREADS youtube-dl -f bestaudio -i --download-archive youtube_downloaded.log \
--socket-timeout 180 --fragment-retries 10 --abort-on-unavailable-fragment --no-part --no-post-overwrites \
-ciw --extract-audio --audio-format mp3 --audio-quality 0 < youtube_url_batch.log" > youtube_download.sh
#####################################################################################################################
CMD_YT_D="bash youtube_download.sh"
#####################################################################################################################
echo "cd rips_soundcloud; clear; echo -e '\033[0;31mdownload window - soundcloud\033[0;94m'; \
parallel -j $THREADS youtube-dl -f bestaudio -i --download-archive soundcloud_downloaded.log \
--socket-timeout 180 --fragment-retries 10 --abort-on-unavailable-fragment --no-part --no-post-overwrites \
-ciw -o '%\(uploader\)s-%\(title\)s-%\(id\)s.%\(ext\)s' --extract-audio --audio-format mp3 --audio-quality \
0 < soundcloud_url_batch.log" > soundcloud_download.sh
#####################################################################################################################
CMD_SC_D="bash soundcloud_download.sh"
#####################################################################################################################
echo "cd rips_bandcamp; clear; echo -e '\033[0;31mdownload window - bandcamp\033[0;94m'; parallel \
-j $THREADS youtube-dl -f bestaudio -i --download-archive bandcamp_downloaded.log \
--socket-timeout 180 --fragment-retries 10 --abort-on-unavailable-fragment --no-part --no-post-overwrites \
-ciw --extract-audio --audio-format mp3 --audio-quality 0 < bandcamp_url_batch.log" > bandcamp_download.sh
#####################################################################################################################
CMD_BC_D="bash bandcamp_download.sh"
#####################################################################################################################
#####################################################################################################################
#####################################################################################################################
CMD_SC_D="cd rips_soundcloud; clear; echo -e '\033[0;31mdownload window - soundcloud\033[0;94m'; \
parallel -j $THREADS youtube-dl -f bestaudio -i --download-archive soundcloud_downloaded.log \
--socket-timeout 180 --fragment-retries 10 --abort-on-unavailable-fragment --no-part --no-post-overwrites \
-ciw -o '%\(uploader\)s-%\(title\)s-%\(id\)s.%\(ext\)s' --extract-audio --audio-format mp3 --audio-quality \
0 < soundcloud_url_batch.log"
#####################################################################################################################
CMD_BC_D="cd rips_bandcamp; clear; echo -e '\033[0;31mdownload window - bandcamp\033[0;94m'; parallel \
-j $THREADS youtube-dl -f bestaudio -i --download-archive bandcamp_downloaded.log \
--socket-timeout 180 --fragment-retries 10 --abort-on-unavailable-fragment --no-part --no-post-overwrites \
-ciw --extract-audio --audio-format mp3 --audio-quality 0 < bandcamp_url_batch.log"
#####################################################################################################################
CMD_YT_P="bash youtube_progress.sh"
####################################
CMD_SC_P="bash soundcloud_progress.sh"
######################################
CMD_BC_P="bash bandcamp_progress.sh"
#####################################################################################################################
#####################################################################################################################
#####################################################################################################################
COUNT=0; TASKS=(); LENGTH=()
if [ $ENABLED_YOUTUBE -eq 1 ]; then
COUNT=$((COUNT+2))
LENGTH+=(${#TASKS[@]}); TASKS+=($CMD_YT_D); LENGTH+=(${#TASKS[@]}); TASKS+=($CMD_YT_P);
fi
fi
###############################################################################################
if [ $ENABLED_SOUNDCLOUD -eq 1 ]; then
COUNT=$((COUNT+2))
@ -307,13 +351,17 @@ if [ $COUNT -eq 6 ]; then
DYNARGS_E=$(echo ${TASKS[@]}|cut -d ' ' -f $((LENGTH[4]+1))-${LENGTH[5]})
DYNARGS_F=$(echo ${TASKS[@]}|cut -d ' ' -f $((LENGTH[5]+1))-${LENGTH[6]})
tmux \
new-session "eval $DYNARGS_A; exit; read" \; \
split-window "eval $DYNARGS_B; exit; read" \; \
split-window "eval $DYNARGS_C; exit; read" \; \
split-window "eval $DYNARGS_D; exit; read" \; \
split-window "eval $DYNARGS_E; exit; read" \; \
split-window "eval $DYNARGS_F; exit; read" \; \
select-layout tiled
new-session "eval $DYNARGS_B; exit; read" \; \
select-pane -t 0 \; \
split-window -h "eval $DYNARGS_A; exit; read" \; \
split-window -v -p 33 "eval $DYNARGS_C; exit; read" \; \
select-pane -t 0 \; \
split-window -v -p 33 "eval $DYNARGS_D; exit; read" \; \
select-pane -t 0 \; \
split-window -v -p 50 "eval $DYNARGS_F; exit; read" \; \
select-pane -t 3 \; \
split-window -v -p 50 "eval $DYNARGS_E; exit; read" \; \
select-layout default
fi
#####################################################################################################################
if [ $ENABLED_YOUTUBE -eq 1 ]; then
@ -336,12 +384,10 @@ if [ $ENABLED_BANDCAMP -eq 1 ]; then
mv *.{mp3,log} .. && cd ..
rm -Rf rips_bandcamp && rm -f bandcamp_progress.sh
fi
#####################################################################################################################
#####################################################################################################################
cd .. ###################################################################################### DP3 TOOL ENCODED BELOW #
#####################################################################################################################
echo "IyAtKi0gY29kaW5nOiB1dGYtOCAtKi0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" > dr1p
echo "IyAtKi0gY29kaW5nOiB1dGYtOCAtKi0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" > dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMgU09GDQpfX2RvY19fID0gJycnOjo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6" >> dr1p
echo "Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Lg0KIC9tTU1NTU1NTU1N" >> dr1p
@ -429,362 +475,389 @@ echo "Li4uLi4uLi4uLi4uLi4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgIC4tLi4uLi4uLi4uLi
echo "Li4uLi4uLi4uLi4uLi4uLi4uLi4NCiAgICAuLi4uLi4gICAgICAgLi4uLi4uLi4uICAgICAgICAg" >> dr1p
echo "IC4uLi4uLi4uLi4uLi4uICAgICAgICAgIC4uLi4uLi4uLi4gICAgICAgICAgICAgIC4uLicnJw0K" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmltcG9ydCBvcyxzeXMsc2h1" >> dr1p
echo "dGlsLGV5ZWQzDQpmcm9tIGV5ZWQzLmlkMyBpbXBvcnQgSUQzX1YxXzEsIElEM19WMl8zLCBJRDNf" >> dr1p
echo "VjJfNA0KZnJvbSBleWVkMy5pZDMuZnJhbWVzIGltcG9ydCBJbWFnZUZyYW1lDQpmcm9tIGRhdGV0" >> dr1p
echo "aW1lIGltcG9ydCBkYXRldGltZQ0KZnJvbSBnbG9iIGltcG9ydCBnbG9iDQojIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmltcG9ydCBvcyxzeXMscmUs" >> dr1p
echo "c3RyaW5nLHNodXRpbCxleWVkMw0KZnJvbSBleWVkMy5pZDMgaW1wb3J0IElEM19WMV8xLCBJRDNf" >> dr1p
echo "VjJfMywgSUQzX1YyXzQNCmZyb20gZXllZDMuaWQzLmZyYW1lcyBpbXBvcnQgSW1hZ2VGcmFtZQ0K" >> dr1p
echo "ZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUNCmZyb20gZ2xvYiBpbXBvcnQgZ2xvYg0KIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KZXllZDMubG9nLnNldExldmVsKCJFUlJPUiIpDQoj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KaWYgX19uYW1lX189PSdfX21h" >> dr1p
echo "aW5fXyc6DQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIHRyeToN" >> dr1p
echo "CiAgICAgICAgc29uZ19hbGJ1bT1zdHIoc3lzLmFyZ3ZbMV0pDQogICAgZXhjZXB0Og0KICAgICAg" >> dr1p
echo "ICBwcmludCgnbm8gYWxidW0gc3BlY2lmaWVkJykNCiAgICAgICAgc3lzLmV4aXQoMSkNCiAgICAj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgdHJ5Og0KICAgICAgICBzb25n" >> dr1p
echo "X2dlbnJlPXN0cihzeXMuYXJndlsyXSkNCiAgICBleGNlcHQ6DQogICAgICAgIHByaW50KCdubyBn" >> dr1p
echo "ZW5yZSBzcGVjaWZpZWQnKQ0KICAgICAgICBzeXMuZXhpdCgxKQ0KICAgICMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICB0cnk6DQogICAgICAgIHBhdGhfdG9faW1hZ2U9c3Ry" >> dr1p
echo "KHN5cy5hcmd2WzNdKQ0KICAgIGV4Y2VwdDoNCiAgICAgICAgcHJpbnQoIm5vIHBhdGggdG8gJ2Nv" >> dr1p
echo "dmVyLmpwZycgc3BlY2lmaWVkIikNCiAgICAgICAgc3lzLmV4aXQoMSkNCiAgICAjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgc2h1dGlsLmNvcHkocGF0aF90b19pbWFnZSxz" >> dr1p
echo "b25nX2FsYnVtKQ0KICAgIG9zLmNoZGlyKHNvbmdfYWxidW0pDQogICAgIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIGV4cG9ydF90aW1lPWRhdGV0aW1lLm5vdygpLnN0cmZ0" >> dr1p
echo "aW1lKCclbSVkJVkuJUglTSVTJykNCiAgICBleHBvcnRfdGltZVs6NF0rZXhwb3J0X3RpbWVbNjpd" >> dr1p
echo "DQogICAgZXhwb3J0X2RpcmVjdG9yeT1mImRyMXBfX3tzb25nX2FsYnVtfSINCiAgICB0cnk6DQog" >> dr1p
echo "ICAgICAgIHNodXRpbC5ybXRyZWUoZXhwb3J0X2RpcmVjdG9yeSkNCiAgICBleGNlcHQ6DQogICAg" >> dr1p
echo "ICAgIHBhc3MNCiAgICBvcy5ta2RpcihleHBvcnRfZGlyZWN0b3J5KQ0KICAgIHByaW50KGYiXG5c" >> dr1p
echo "eDFiWzkwbVsgXHgxYlszMW1leHBvcnQgZGlyZWN0b3J5XHgxYls5MG06IFx4MWJbOTFte2V4cG9y" >> dr1p
echo "dF9kaXJlY3Rvcnl9IFx4MWJbOTBtXSIpDQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIw0KICAgIGZpbGVsaXN0PWdsb2IoJyoubXAzJykNCiAgICB0cmFja19jb3VudD1sZW4o" >> dr1p
echo "ZmlsZWxpc3QpDQogICAgcHJpbnQoZiJceDFiWzkwbVsgXHgxYls5MW17dHJhY2tfY291bnR9IFx4" >> dr1p
echo "MWJbMzFtc29uZ3MgZGlzY292ZXJlZCBceDFiWzkwbV0iKQ0KICAgICMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMNCiAgICBwbGF5bGlzdD0iX3BsYXlsaXN0Lm0zdSINCiAgICBwbGF5" >> dr1p
echo "bGlzdF9wYXRoMmZpbGU9Zid7ZXhwb3J0X2RpcmVjdG9yeX0ve3BsYXlsaXN0fScNCiAgICBmPW9w" >> dr1p
echo "ZW4ocGxheWxpc3RfcGF0aDJmaWxlLCd3JykNCiAgICBmLndyaXRlKCIjRVhUTTNVXG4iKQ0KICAg" >> dr1p
echo "IGYuY2xvc2UoKQ0KICAgIHByaW50KGYiXHgxYls5MG1bIFx4MWJbMzFtcGxheWxpc3QgY3JlYXRl" >> dr1p
echo "ZFx4MWJbOTBtOiBceDFiWzkxbXtwbGF5bGlzdH0gXHgxYls5MG1dXHgxYlswbVxuIikNCiAgICAj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgdHJ5Og0KICAgICAgICBmb3Ig" >> dr1p
echo "dHJhY2tfaW5kZXgsdGhlbXAzIGluIGVudW1lcmF0ZShmaWxlbGlzdCk6DQogICAgICAgICAgICAj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgdHJhY2tfcGFkPWxlbihzdHIo" >> dr1p
echo "dHJhY2tfY291bnQpKQ0KICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAg" >> dr1p
echo "ICAgICAgICAgIHByaW50KGYiXHgxYls5MG1bIFx4MWJbMzFtcHJvY2Vzc2luZyBzb25nIFx4MWJb" >> dr1p
echo "OTFte3N0cih0cmFja19pbmRleCsxKS56ZmlsbCh0cmFja19wYWQpfSBceDFiWzkwbS8gXHgxYls5" >> dr1p
echo "MW17c3RyKHRyYWNrX2NvdW50KS56ZmlsbCh0cmFja19wYWQpfSBceDFiWzkwbV1ceDFiWzBtIikN" >> dr1p
echo "CiAgICAgICAgICAgIHByaW50KGYiXHgxYls5MG1cdGZpbGVuYW1lOiB7dGhlbXAzfVx4MWJbMG0i" >> dr1p
echo "KQ0KICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgIHNo" >> dr1p
echo "dXRpbC5jb3B5KHRoZW1wMyxmJ3tleHBvcnRfZGlyZWN0b3J5fScpDQogICAgICAgICAgICBzb25n" >> dr1p
echo "PWV5ZWQzLmxvYWQoZid7ZXhwb3J0X2RpcmVjdG9yeX0ve3RoZW1wM30nKQ0KICAgICAgICAgICAg" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgIGlmIG5vdCBzb25nLnRhZzoN" >> dr1p
echo "CiAgICAgICAgICAgICAgICBzb25nLmluaXRUYWcoKQ0KICAgICAgICAgICAgIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgIHNvbmdfZmlsZW5hbWU9dGhlbXAzDQogICAgICAg" >> dr1p
echo "ICAgICBzb25nX2V4dGVuc2lvbj1zb25nX2ZpbGVuYW1lWy0zOl0NCiAgICAgICAgICAgICMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAgICAgICBpZiBzb25nX2ZpbGVuYW1lLmZpbmQo" >> dr1p
echo "J1BSRU1JRVJFIC0gJyk+LTE6DQogICAgICAgICAgICAgICAgc29uZ19maWxlbmFtZT1zb25nX2Zp" >> dr1p
echo "bGVuYW1lLnJlcGxhY2UoJ1BSRU1JRVJFIC0gJywnJykNCiAgICAgICAgICAgICMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjDQogICAgICAgICAgICBpZiBzb25nX2ZpbGVuYW1lLmZpbmQoJ1BSRU1J" >> dr1p
echo "RVJFIF8gJyk+LTE6DQogICAgICAgICAgICAgICAgc29uZ19maWxlbmFtZT1zb25nX2ZpbGVuYW1l" >> dr1p
echo "LnJlcGxhY2UoJ1BSRU1JRVJFIF8gJywnJykNCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIDw8PCBZT1VUVUJFIDw8PCBZT1VUVUJFDQogICAgICAgICAgICBpZiBzb25nX2Zp" >> dr1p
echo "bGVuYW1lLnN0YXJ0c3dpdGgoJ3lvdXR1YmVfJyk6DQogICAgICAgICAgICAgICAgIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgICAgIHNvbmdfdmlkZW9pZD1zb25nX2ZpbGVuYW1l" >> dr1p
echo "Wy0xNTotNF0NCiAgICAgICAgICAgICAgICBzb25nX2FydGlzdD1zb25nX2ZpbGVuYW1lWzotMTZd" >> dr1p
echo "LnNwbGl0KCcgLSAnKVswXS5zdHJpcCgpW2xlbigneW91dHViZV8nKTpdDQogICAgICAgICAgICAg" >> dr1p
echo "ICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgICAgIHRyeToNCiAgICAgICAg" >> dr1p
echo "ICAgICAgICAgICAgc29uZ190aXRsZT1zb25nX2ZpbGVuYW1lWzotMTZdLnNwbGl0KCcgLSAnKVsx" >> dr1p
echo "XS5zdHJpcCgpDQogICAgICAgICAgICAgICAgZXhjZXB0Og0KICAgICAgICAgICAgICAgICAgICBz" >> dr1p
echo "b25nX3RpdGxlPScnDQogICAgICAgICAgICAgICAgI3ByaW50KGYnXHRcdHNvbmdfYXJ0aXN0OiB7" >> dr1p
echo "c29uZ19hcnRpc3R9XG5cdFx0c29uZ190aXRsZToge3NvbmdfdGl0bGV9JykNCiAgICAgICAgICAg" >> dr1p
echo "ICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAgICAgICAgICAgdXJsPWYiaHR0cDov" >> dr1p
echo "L3lvdXR1LmJlL3tzb25nX3ZpZGVvaWR9Ig0KICAgICAgICAgICAgICAgICMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMNCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIDw8PCBCQU5E" >> dr1p
echo "Q0FNUCA8PDwgQkFORENBTVANCiAgICAgICAgICAgIGlmIHNvbmdfZmlsZW5hbWUuc3RhcnRzd2l0" >> dr1p
echo "aCgnYmFuZGNhbXBfJyk6DQogICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0K" >> dr1p
echo "ICAgICAgICAgICAgICAgIHNvbmdfdmlkZW9pZD1zb25nX2ZpbGVuYW1lLnNwbGl0KCctJylbLTFd" >> dr1p
echo "WzotNF0NCiAgICAgICAgICAgICAgICBidWZmZXI9c29uZ19maWxlbmFtZS5yZXBsYWNlKCItIitz" >> dr1p
echo "b25nX2ZpbGVuYW1lLnNwbGl0KCctJylbLTFdLCcnKVtsZW4oJ2JhbmRjYW1wXycpOl0uc3BsaXQo" >> dr1p
echo "JyAtICcpDQogICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAg" >> dr1p
echo "ICAgICAgIGlmIGxlbihidWZmZXIpPT0zOg0KICAgICAgICAgICAgICAgICAgICBpZiBidWZmZXJb" >> dr1p
echo "MF0gPT0gYnVmZmVyWzFdOg0KICAgICAgICAgICAgICAgICAgICAgICAgc29uZ19hcnRpc3Q9YnVm" >> dr1p
echo "ZmVyWzFdDQogICAgICAgICAgICAgICAgICAgICAgICBzb25nX3RpdGxlPWJ1ZmZlclsyXQ0KICAg" >> dr1p
echo "ICAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgICAgICBpZiBs" >> dr1p
echo "ZW4oYnVmZmVyKT09MjoNCiAgICAgICAgICAgICAgICAgICAgc29uZ19hcnRpc3Q9YnVmZmVyWzBd" >> dr1p
echo "DQogICAgICAgICAgICAgICAgICAgIHNvbmdfdGl0bGU9YnVmZmVyWzFdDQogICAgICAgICAgICAg" >> dr1p
echo "ICAgI3ByaW50KGYnXHRcdHNvbmdfYXJ0aXN0OiB7c29uZ19hcnRpc3R9XG5cdFx0c29uZ190aXRs" >> dr1p
echo "ZToge3NvbmdfdGl0bGV9JykNCiAgICAgICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "DQogICAgICAgICAgICAgICAgdXJsPWYiaHR0cHM6Ly9iYW5kY2FtcC5jb20vRW1iZWRkZWRQbGF5" >> dr1p
echo "ZXIvdj0yL3RyYWNrPXtzb25nX3ZpZGVvaWR9Ig0KICAgICAgICAgICAgICAgICMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMNCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIDw8PCBT" >> dr1p
echo "T1VORENMT1VEIDw8PCBTT1VORENMT1VEDQogICAgICAgICAgICBpZiBzb25nX2ZpbGVuYW1lLnN0" >> dr1p
echo "YXJ0c3dpdGgoJ3NvdW5kY2xvdWRfJyk6DQogICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIw0KICAgICAgICAgICAgICAgIHNvbmdfdmlkZW9pZD1zb25nX2ZpbGVuYW1lLnNwbGl0" >> dr1p
echo "KCctJylbLTFdWzotNF0NCiAgICAgICAgICAgICAgICBidWZmZXI9c29uZ19maWxlbmFtZVtsZW4o" >> dr1p
echo "J3NvdW5kY2xvdWRfJyk6LWxlbihzb25nX2ZpbGVuYW1lLnNwbGl0KCctJylbLTFdKS0xXQ0KICAg" >> dr1p
echo "ICAgICAgICAgICAgIHVuY2xvc2VkX2NvdW50PTANCiAgICAgICAgICAgICAgICBpZiBidWZmZXIu" >> dr1p
echo "ZmluZCgnKCcpPi0xOiB1bmNsb3NlZF9jb3VudCs9MQ0KICAgICAgICAgICAgICAgIGlmIGJ1ZmZl" >> dr1p
echo "ci5maW5kKCcpJyk+LTE6IHVuY2xvc2VkX2NvdW50Kz0xDQogICAgICAgICAgICAgICAgaWYgdW5j" >> dr1p
echo "bG9zZWRfY291bnQ9PTE6IGJ1ZmZlcj1idWZmZXIucmVwbGFjZSgnKCcsJyAtICcpLnJlcGxhY2Uo" >> dr1p
echo "JyknLCcgLSAnKQ0KICAgICAgICAgICAgICAgIGlmICh1bmNsb3NlZF9jb3VudCAlIDIpID09IDA6" >> dr1p
echo "DQogICAgICAgICAgICAgICAgICAgIGJ1ZmZlcj1zb25nX2ZpbGVuYW1lWzotbGVuKHNvbmdfdmlk" >> dr1p
echo "ZW9pZCktbGVuKHNvbmdfZXh0ZW5zaW9uKS1sZW4oJy4nKS1sZW4oJy0nKV0ucmVwbGFjZSgnKCAn" >> dr1p
echo "LCcnKS5yZXBsYWNlKCcgKScsJycpLmxvd2VyKCkucmVwbGFjZSgnc291bmRjbG91ZF8nLCcnKS5z" >> dr1p
echo "cGxpdCgnLScpDQogICAgICAgICAgICAgICAgICAgIGJ1ZmZlcg0KICAgICAgICAgICAgICAgIGlm" >> dr1p
echo "IGxlbihidWZmZXIpPT0zOg0KICAgICAgICAgICAgICAgICAgICBpZiBidWZmZXJbMF09PWJ1ZmZl" >> dr1p
echo "clsxXToNCiAgICAgICAgICAgICAgICAgICAgICAgIHNvbmdfYXJ0aXN0PWJ1ZmZlclsxXS5zdHJp" >> dr1p
echo "cCgpDQogICAgICAgICAgICAgICAgICAgICAgICBzb25nX3RpdGxlPWJ1ZmZlclsyXS5zdHJpcCgp" >> dr1p
echo "DQogICAgICAgICAgICAgICAgICAgIGVsc2U6DQogICAgICAgICAgICAgICAgICAgICAgICBzb25n" >> dr1p
echo "X2FydGlzdD1idWZmZXJbMF0uc3RyaXAoKStidWZmZXJbMV0uc3RyaXAoKQ0KICAgICAgICAgICAg" >> dr1p
echo "ICAgICAgICAgICAgc29uZ190aXRsZT1idWZmZXJbMl0uc3RyaXAoKQ0KICAgICAgICAgICAgICAg" >> dr1p
echo "IGVsaWYgbGVuKGJ1ZmZlcik9PTI6DQogICAgICAgICAgICAgICAgICAgIHNvbmdfYXJ0aXN0PWJ1" >> dr1p
echo "ZmZlclswXS5zdHJpcCgpDQogICAgICAgICAgICAgICAgICAgIHNvbmdfdGl0bGU9YnVmZmVyWzFd" >> dr1p
echo "LnN0cmlwKCkNCiAgICAgICAgICAgICAgICBlbGlmIGxlbihidWZmZXIpPj00Og0KICAgICAgICAg" >> dr1p
echo "ICAgICAgICAgICBzb25nX2FydGlzdD1idWZmZXIuc3BsaXQoJy0nKVswXS5zdHJpcCgpDQogICAg" >> dr1p
echo "ICAgICAgICAgICAgICAgIHNvbmdfdGl0bGU9YnVmZmVyLnNwbGl0KCctJylbMV0uc3RyaXAoKS5y" >> dr1p
echo "ZXBsYWNlKCdfJywnLicpDQogICAgICAgICAgICAgICAgICAgIHNvbmdfdGl0bGUrPSJfXyIrJycu" >> dr1p
echo "am9pbihidWZmZXIuc3BsaXQoJy0nKVsyOl0pLnN0cmlwKCkucmVwbGFjZSgnICcsJy4nKQ0KICAg" >> dr1p
echo "ICAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgICAgICBpZiBz" >> dr1p
echo "b25nX2FydGlzdC5maW5kKCdmcmVlIGRsJykgPiAtMToNCiAgICAgICAgICAgICAgICAgICAgc29u" >> dr1p
echo "Z19hcnRpc3Q9c29uZ19hcnRpc3QucmVwbGFjZSgnZnJlZSBkbCcsJycpDQogICAgICAgICAgICAg" >> dr1p
echo "ICAgaWYgc29uZ190aXRsZS5maW5kKCdmcmVlIGRsJykgPiAtMToNCiAgICAgICAgICAgICAgICAg" >> dr1p
echo "ICAgc29uZ190aXRsZT1zb25nX3RpdGxlLnJlcGxhY2UoJ2ZyZWUgZGwnLCcnKQ0KICAgICAgICAg" >> dr1p
echo "ICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgICAgICAjcHJpbnQoZidc" >> dr1p
echo "dFx0c29uZ19hcnRpc3Q6IHtzb25nX2FydGlzdH1cblx0XHRzb25nX3RpdGxlOiB7c29uZ190aXRs" >> dr1p
echo "ZX0nKQ0KICAgICAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAg" >> dr1p
echo "ICAgICB1cmw9ZiJodHRwczovL3cuc291bmRjbG91ZC5jb20vcGxheWVyLz91cmw9aHR0cHM6Ly9h" >> dr1p
echo "cGkuc291bmRjbG91ZC5jb20vdHJhY2tzL3tzb25nX3ZpZGVvaWR9Ig0KICAgICAgICAgICAgICAg" >> dr1p
echo "ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjDQogICAgICAgICAgICBpZiBzb25nX2FydGlzdC5maW5kKCdbJykgPiAtMToNCiAgICAg" >> dr1p
echo "ICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAgICAgICAgICAgc3g9c29u" >> dr1p
echo "Z19hcnRpc3QuZmluZCgnWycpDQogICAgICAgICAgICAgICAgc3k9c29uZ19hcnRpc3QuZmluZCgn" >> dr1p
echo "XScpKzENCiAgICAgICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAgICAg" >> dr1p
echo "ICAgICAgaWYgbGVuKHNvbmdfYXJ0aXN0W3N4OnN5XSkgPiA1Og0KICAgICAgICAgICAgICAgICAg" >> dr1p
echo "ICBzb25nX2FydGlzdD1zb25nX2FydGlzdC5yZXBsYWNlKHNvbmdfYXJ0aXN0W3N4OnN5XSwnJyku" >> dr1p
echo "c3RyaXAoKQ0KICAgICAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAg" >> dr1p
echo "ICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAgICAgICBpZiBzb25nX3RpdGxl" >> dr1p
echo "LmZpbmQoJ1snKSA+IC0xOg0KICAgICAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmV5ZWQzLmxvZy5zZXRMZXZlbCgi" >> dr1p
echo "RVJST1IiKQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmlmIF9fbmFt" >> dr1p
echo "ZV9fPT0nX19tYWluX18nOg0KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMN" >> dr1p
echo "CiAgICAgICAgICAgICAgICBzeD1zb25nX3RpdGxlLmZpbmQoJ1snKQ0KICAgICAgICAgICAgICAg" >> dr1p
echo "IHN5PXNvbmdfdGl0bGUuZmluZCgnXScpKzENCiAgICAgICAgICAgICAgICAjIyMjIyMjIyMjIyMj" >> dr1p
echo "CiAgICBlbW9qaV9wYXR0ZXJuID0gcmUuY29tcGlsZSgiWyINCiAgICAgICAgdSJcVTAwMDFGNjAw" >> dr1p
echo "LVxVMDAwMUY2NEYiICAjIGVtb3RpY29ucw0KICAgICAgICB1IlxVMDAwMUYzMDAtXFUwMDAxRjVG" >> dr1p
echo "RiIgICMgc3ltYm9scyAmIHBpY3RvZ3JhcGhzDQogICAgICAgIHUiXFUwMDAxRjY4MC1cVTAwMDFG" >> dr1p
echo "NkZGIiAgIyB0cmFuc3BvcnQgJiBtYXAgc3ltYm9scw0KICAgICAgICB1IlxVMDAwMUYxRTAtXFUw" >> dr1p
echo "MDAxRjFGRiIgICMgZmxhZ3MgKGlPUykNCiAgICAgICAgIl0rIiwgZmxhZ3M9cmUuVU5JQ09ERSkg" >> dr1p
echo "ICAgDQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIHRyeToNCiAg" >> dr1p
echo "ICAgICAgc29uZ19hbGJ1bT1zdHIoc3lzLmFyZ3ZbMV0pDQogICAgZXhjZXB0Og0KICAgICAgICBw" >> dr1p
echo "cmludCgnbm8gYWxidW0gc3BlY2lmaWVkJykNCiAgICAgICAgc3lzLmV4aXQoMSkNCiAgICAjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjDQogICAgICAgICAgICAgICAgaWYgbGVuKHNvbmdfdGl0bGVbc3g6c3ldKSA+IDU6" >> dr1p
echo "DQogICAgICAgICAgICAgICAgICAgIHNvbmdfdGl0bGU9c29uZ190aXRsZS5yZXBsYWNlKHNvbmdf" >> dr1p
echo "dGl0bGVbc3g6c3ldLCcnKS5zdHJpcCgpDQogICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgdHJ5Og0KICAgICAgICBzb25nX2dl" >> dr1p
echo "bnJlPXN0cihzeXMuYXJndlsyXSkNCiAgICBleGNlcHQ6DQogICAgICAgIHByaW50KCdubyBnZW5y" >> dr1p
echo "ZSBzcGVjaWZpZWQnKQ0KICAgICAgICBzeXMuZXhpdCgxKQ0KICAgICMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMNCiAgICB0cnk6DQogICAgICAgIHBhdGhfdG9faW1hZ2U9c3RyKHN5" >> dr1p
echo "cy5hcmd2WzNdKQ0KICAgIGV4Y2VwdDoNCiAgICAgICAgcHJpbnQoIm5vIHBhdGggdG8gJ2NvdmVy" >> dr1p
echo "LmpwZycgc3BlY2lmaWVkIikNCiAgICAgICAgc3lzLmV4aXQoMSkNCiAgICAjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgc2h1dGlsLmNvcHkocGF0aF90b19pbWFnZSxzb25n" >> dr1p
echo "X2FsYnVtKQ0KICAgIG9zLmNoZGlyKHNvbmdfYWxidW0pDQogICAgIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIw0KICAgIGV4cG9ydF90aW1lPWRhdGV0aW1lLm5vdygpLnN0cmZ0aW1l" >> dr1p
echo "KCclbSVkJVkuJUglTSVTJykNCiAgICBleHBvcnRfdGltZVs6NF0rZXhwb3J0X3RpbWVbNjpdDQog" >> dr1p
echo "ICAgZXhwb3J0X2RpcmVjdG9yeT1mImRyMXBfX3tzb25nX2FsYnVtfSINCiAgICB0cnk6DQogICAg" >> dr1p
echo "ICAgIHNodXRpbC5ybXRyZWUoZXhwb3J0X2RpcmVjdG9yeSkNCiAgICBleGNlcHQ6DQogICAgICAg" >> dr1p
echo "IHBhc3MNCiAgICBvcy5ta2RpcihleHBvcnRfZGlyZWN0b3J5KQ0KICAgIHByaW50KGYiXG5ceDFi" >> dr1p
echo "WzkwbVsgXHgxYlszMW1leHBvcnQgZGlyZWN0b3J5XHgxYls5MG06IFx4MWJbOTFte2V4cG9ydF9k" >> dr1p
echo "aXJlY3Rvcnl9IFx4MWJbOTBtXSIpDQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIw0KICAgIGZpbGVsaXN0PWdsb2IoJyoubXAzJykNCiAgICB0cmFja19jb3VudD1sZW4oZmls" >> dr1p
echo "ZWxpc3QpDQogICAgcHJpbnQoZiJceDFiWzkwbVsgXHgxYls5MW17dHJhY2tfY291bnR9IFx4MWJb" >> dr1p
echo "MzFtc29uZ3MgZGlzY292ZXJlZCBceDFiWzkwbV0iKQ0KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMNCiAgICBwbGF5bGlzdD0iX3BsYXlsaXN0Lm0zdSINCiAgICBwbGF5bGlz" >> dr1p
echo "dF9wYXRoMmZpbGU9Zid7ZXhwb3J0X2RpcmVjdG9yeX0ve3BsYXlsaXN0fScNCiAgICBmPW9wZW4o" >> dr1p
echo "cGxheWxpc3RfcGF0aDJmaWxlLCd3JykNCiAgICBmLndyaXRlKCIjRVhUTTNVXG4iKQ0KICAgIGYu" >> dr1p
echo "Y2xvc2UoKQ0KICAgIHByaW50KGYiXHgxYls5MG1bIFx4MWJbMzFtcGxheWxpc3QgY3JlYXRlZFx4" >> dr1p
echo "MWJbOTBtOiBceDFiWzkxbXtwbGF5bGlzdH0gXHgxYls5MG1dXHgxYlswbVxuIikNCiAgICAjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgdHJ5Og0KICAgICAgICBmb3IgdHJh" >> dr1p
echo "Y2tfaW5kZXgsdGhlbXAzIGluIGVudW1lcmF0ZShmaWxlbGlzdCk6DQogICAgICAgICAgICAjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgdHJhY2tfcGFkPWxlbihzdHIodHJh" >> dr1p
echo "Y2tfY291bnQpKQ0KICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAg" >> dr1p
echo "ICAgICAgIHByaW50KGYiXHgxYls5MG1bIFx4MWJbMzFtcHJvY2Vzc2luZyBzb25nIFx4MWJbOTFt" >> dr1p
echo "e3N0cih0cmFja19pbmRleCsxKS56ZmlsbCh0cmFja19wYWQpfSBceDFiWzkwbS8gXHgxYls5MW17" >> dr1p
echo "c3RyKHRyYWNrX2NvdW50KS56ZmlsbCh0cmFja19wYWQpfSBceDFiWzkwbV1ceDFiWzBtIikNCiAg" >> dr1p
echo "ICAgICAgICAgIHByaW50KGYiXHgxYls5MG1cdGZpbGVuYW1lOiB7dGhlbXAzfVx4MWJbMG0iKQ0K" >> dr1p
echo "ICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgIHNodXRp" >> dr1p
echo "bC5jb3B5KHRoZW1wMyxmJ3tleHBvcnRfZGlyZWN0b3J5fScpDQogICAgICAgICAgICBzb25nPWV5" >> dr1p
echo "ZWQzLmxvYWQoZid7ZXhwb3J0X2RpcmVjdG9yeX0ve3RoZW1wM30nKQ0KICAgICAgICAgICAgIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgIGlmIG5vdCBzb25nLnRhZzoNCiAg" >> dr1p
echo "ICAgICAgICAgICAgICBzb25nLmluaXRUYWcoKQ0KICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMNCiAgICAgICAgICAgIHNvbmdfZmlsZW5hbWU9dGhlbXAzDQogICAgICAgICAg" >> dr1p
echo "ICBzb25nX2V4dGVuc2lvbj1zb25nX2ZpbGVuYW1lWy0zOl0NCiAgICAgICAgICAgICMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAgICAgICBpZiBzb25nX2ZpbGVuYW1lLmZpbmQoJ1BS" >> dr1p
echo "RU1JRVJFIC0gJyk+LTE6DQogICAgICAgICAgICAgICAgc29uZ19maWxlbmFtZT1zb25nX2ZpbGVu" >> dr1p
echo "YW1lLnJlcGxhY2UoJ1BSRU1JRVJFIC0gJywnJykNCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjDQogICAgICAgICAgICBpZiBzb25nX2ZpbGVuYW1lLmZpbmQoJ1BSRU1JRVJF" >> dr1p
echo "IF8gJyk+LTE6DQogICAgICAgICAgICAgICAgc29uZ19maWxlbmFtZT1zb25nX2ZpbGVuYW1lLnJl" >> dr1p
echo "cGxhY2UoJ1BSRU1JRVJFIF8gJywnJykNCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIDw8PCBZT1VUVUJFIDw8PCBZT1VUVUJFDQogICAgICAgICAgICBpZiBzb25nX2ZpbGVu" >> dr1p
echo "YW1lLnN0YXJ0c3dpdGgoJ3lvdXR1YmVfJyk6DQogICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIw0KICAgICAgICAgICAgICAgIHNvbmdfdmlkZW9pZD1zb25nX2ZpbGVuYW1lWy0x" >> dr1p
echo "NTotNF0NCiAgICAgICAgICAgICAgICBzb25nX2FydGlzdD1zb25nX2ZpbGVuYW1lWzotMTZdLnNw" >> dr1p
echo "bGl0KCcgLSAnKVswXS5zdHJpcCgpW2xlbigneW91dHViZV8nKTpdDQogICAgICAgICAgICAgICAg" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgICAgIHRyeToNCiAgICAgICAgICAg" >> dr1p
echo "ICAgICAgICAgc29uZ190aXRsZT1zb25nX2ZpbGVuYW1lWzotMTZdLnNwbGl0KCcgLSAnKVsxXS5z" >> dr1p
echo "dHJpcCgpDQogICAgICAgICAgICAgICAgZXhjZXB0Og0KICAgICAgICAgICAgICAgICAgICBzb25n" >> dr1p
echo "X3RpdGxlPScnDQogICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAg" >> dr1p
echo "ICAgICAgICAgIHVybD1mImh0dHA6Ly95b3V0dS5iZS97c29uZ192aWRlb2lkfSINCiAgICAgICAg" >> dr1p
echo "ICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAgICAgICAjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyA8PDwgQkFORENBTVAgPDw8IEJBTkRDQU1QDQogICAgICAgICAgICBpZiBz" >> dr1p
echo "b25nX2ZpbGVuYW1lLnN0YXJ0c3dpdGgoJ2JhbmRjYW1wXycpOg0KICAgICAgICAgICAgICAgICMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgICAgICBzb25nX3ZpZGVvaWQ9c29uZ19m" >> dr1p
echo "aWxlbmFtZS5zcGxpdCgnLScpWy0xXVs6LTRdDQogICAgICAgICAgICAgICAgYnVmZmVyPXNvbmdf" >> dr1p
echo "ZmlsZW5hbWUucmVwbGFjZSgiLSIrc29uZ19maWxlbmFtZS5zcGxpdCgnLScpWy0xXSwnJylbbGVu" >> dr1p
echo "KCdiYW5kY2FtcF8nKTpdLnNwbGl0KCcgLSAnKQ0KICAgICAgICAgICAgICAgICMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMNCiAgICAgICAgICAgICAgICBpZiBsZW4oYnVmZmVyKT09MzoNCiAgICAgICAg" >> dr1p
echo "ICAgICAgICAgICAgaWYgYnVmZmVyWzBdID09IGJ1ZmZlclsxXToNCiAgICAgICAgICAgICAgICAg" >> dr1p
echo "ICAgICAgIHNvbmdfYXJ0aXN0PWJ1ZmZlclsxXQ0KICAgICAgICAgICAgICAgICAgICAgICAgc29u" >> dr1p
echo "Z190aXRsZT1idWZmZXJbMl0NCiAgICAgICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "DQogICAgICAgICAgICAgICAgaWYgbGVuKGJ1ZmZlcik9PTI6DQogICAgICAgICAgICAgICAgICAg" >> dr1p
echo "IHNvbmdfYXJ0aXN0PWJ1ZmZlclswXQ0KICAgICAgICAgICAgICAgICAgICBzb25nX3RpdGxlPWJ1" >> dr1p
echo "ZmZlclsxXQ0KICAgICAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAg" >> dr1p
echo "ICAgICAgICB1cmw9ZiJodHRwczovL2JhbmRjYW1wLmNvbS9FbWJlZGRlZFBsYXllci92PTIvdHJh" >> dr1p
echo "Y2s9e3NvbmdfdmlkZW9pZH0iDQogICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "Iw0KICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgPDw8IFNPVU5EQ0xPVUQg" >> dr1p
echo "PDw8IFNPVU5EQ0xPVUQNCiAgICAgICAgICAgIGlmIHNvbmdfZmlsZW5hbWUuc3RhcnRzd2l0aCgn" >> dr1p
echo "c291bmRjbG91ZF8nKToNCiAgICAgICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQog" >> dr1p
echo "ICAgICAgICAgICAgICAgc29uZ192aWRlb2lkPXNvbmdfZmlsZW5hbWUuc3BsaXQoJy0nKVstMV1b" >> dr1p
echo "Oi00XQ0KICAgICAgICAgICAgICAgIGJ1ZmZlcj1zb25nX2ZpbGVuYW1lW2xlbignc291bmRjbG91" >> dr1p
echo "ZF8nKTotbGVuKHNvbmdfZmlsZW5hbWUuc3BsaXQoJy0nKVstMV0pLTFdDQogICAgICAgICAgICAg" >> dr1p
echo "ICAgdW5jbG9zZWRfY291bnQ9MA0KICAgICAgICAgICAgICAgIGlmIGJ1ZmZlci5maW5kKCcoJyk+" >> dr1p
echo "LTE6IHVuY2xvc2VkX2NvdW50Kz0xDQogICAgICAgICAgICAgICAgaWYgYnVmZmVyLmZpbmQoJykn" >> dr1p
echo "KT4tMTogdW5jbG9zZWRfY291bnQrPTENCiAgICAgICAgICAgICAgICBpZiB1bmNsb3NlZF9jb3Vu" >> dr1p
echo "dD09MTogYnVmZmVyPWJ1ZmZlci5yZXBsYWNlKCcoJywnIC0gJykucmVwbGFjZSgnKScsJyAtICcp" >> dr1p
echo "DQogICAgICAgICAgICAgICAgaWYgKHVuY2xvc2VkX2NvdW50ICUgMikgPT0gMDoNCiAgICAgICAg" >> dr1p
echo "ICAgICAgICAgICAgYnVmZmVyPXNvbmdfZmlsZW5hbWVbOi1sZW4oc29uZ192aWRlb2lkKS1sZW4o" >> dr1p
echo "c29uZ19leHRlbnNpb24pLWxlbignLicpLWxlbignLScpXS5yZXBsYWNlKCcoICcsJycpLnJlcGxh" >> dr1p
echo "Y2UoJyApJywnJykubG93ZXIoKS5yZXBsYWNlKCdzb3VuZGNsb3VkXycsJycpLnNwbGl0KCctJykN" >> dr1p
echo "CiAgICAgICAgICAgICAgICAgICAgYnVmZmVyDQogICAgICAgICAgICAgICAgaWYgbGVuKGJ1ZmZl" >> dr1p
echo "cik9PTM6DQogICAgICAgICAgICAgICAgICAgIGlmIGJ1ZmZlclswXT09YnVmZmVyWzFdOg0KICAg" >> dr1p
echo "ICAgICAgICAgICAgICAgICAgICAgc29uZ19hcnRpc3Q9YnVmZmVyWzFdLnN0cmlwKCkNCiAgICAg" >> dr1p
echo "ICAgICAgICAgICAgICAgICAgIHNvbmdfdGl0bGU9YnVmZmVyWzJdLnN0cmlwKCkNCiAgICAgICAg" >> dr1p
echo "ICAgICAgICAgICAgZWxzZToNCiAgICAgICAgICAgICAgICAgICAgICAgIHNvbmdfYXJ0aXN0PWJ1" >> dr1p
echo "ZmZlclswXS5zdHJpcCgpK2J1ZmZlclsxXS5zdHJpcCgpDQogICAgICAgICAgICAgICAgICAgICAg" >> dr1p
echo "ICBzb25nX3RpdGxlPWJ1ZmZlclsyXS5zdHJpcCgpDQogICAgICAgICAgICAgICAgZWxpZiBsZW4o" >> dr1p
echo "YnVmZmVyKT09MjoNCiAgICAgICAgICAgICAgICAgICAgc29uZ19hcnRpc3Q9YnVmZmVyWzBdLnN0" >> dr1p
echo "cmlwKCkNCiAgICAgICAgICAgICAgICAgICAgc29uZ190aXRsZT1idWZmZXJbMV0uc3RyaXAoKQ0K" >> dr1p
echo "ICAgICAgICAgICAgICAgIGVsaWYgbGVuKGJ1ZmZlcik+PTQ6DQogICAgICAgICAgICAgICAgICAg" >> dr1p
echo "IHRyeToNCiAgICAgICAgICAgICAgICAgICAgICAgIHNvbmdfYXJ0aXN0PWJ1ZmZlci5zcGxpdCgn" >> dr1p
echo "LScpWzBdLnN0cmlwKCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHNvbmdfdGl0bGU9YnVmZmVy" >> dr1p
echo "LnNwbGl0KCctJylbMV0uc3RyaXAoKS5yZXBsYWNlKCdfJywnLicpDQogICAgICAgICAgICAgICAg" >> dr1p
echo "ICAgICAgICBzb25nX3RpdGxlKz0iX18iKycnLmpvaW4oYnVmZmVyLnNwbGl0KCctJylbMjpdKS5z" >> dr1p
echo "dHJpcCgpLnJlcGxhY2UoJyAnLCcuJykNCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0Og0KICAg" >> dr1p
echo "ICAgICAgICAgICAgICAgICAgICAgc29uZ19hcnRpc3Q9YnVmZmVyWzBdLnNwbGl0KCctJylbMF0u" >> dr1p
echo "c3RyaXAoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgc29uZ190aXRsZT1idWZmZXJbMV0uc3Bs" >> dr1p
echo "aXQoIi0iKVswXS5zdHJpcCgpLnJlcGxhY2UoIl8iLCAiLiIpLnJlcGxhY2UoIlsiLCIuIikucmVw" >> dr1p
echo "bGFjZSgiXSIsIi4iKQ0KICAgICAgICAgICAgICAgICAgICAgICAgc29uZ190aXRsZSs9c3RyKCJf" >> dr1p
echo "XyIgKyAiIi5qb2luKGJ1ZmZlclsyOl0pKS5zdHJpcCgpLnJlcGxhY2UoIiAiLCAiLiIpDQogICAg" >> dr1p
echo "ICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgICAgIGlmIHNv" >> dr1p
echo "bmdfYXJ0aXN0LmZpbmQoJ2ZyZWUgZGwnKSA+IC0xOg0KICAgICAgICAgICAgICAgICAgICBzb25n" >> dr1p
echo "X2FydGlzdD1zb25nX2FydGlzdC5yZXBsYWNlKCdmcmVlIGRsJywnJykNCiAgICAgICAgICAgICAg" >> dr1p
echo "ICBpZiBzb25nX3RpdGxlLmZpbmQoJ2ZyZWUgZGwnKSA+IC0xOg0KICAgICAgICAgICAgICAgICAg" >> dr1p
echo "ICBzb25nX3RpdGxlPXNvbmdfdGl0bGUucmVwbGFjZSgnZnJlZSBkbCcsJycpDQogICAgICAgICAg" >> dr1p
echo "ICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgICAgIHVybD1mImh0dHBz" >> dr1p
echo "Oi8vdy5zb3VuZGNsb3VkLmNvbS9wbGF5ZXIvP3VybD1odHRwczovL2FwaS5zb3VuZGNsb3VkLmNv" >> dr1p
echo "bS90cmFja3Mve3NvbmdfdmlkZW9pZH0iDQogICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIw0KICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAg" >> dr1p
echo "ICAgIGlmIHNvbmdfYXJ0aXN0LmZpbmQoJygnKSA+IC0xOg0KICAgICAgICAgICAgICAgICMjIyMj" >> dr1p
echo "ICAgIGlmIHNvbmdfYXJ0aXN0LmZpbmQoJ1snKSA+IC0xOg0KICAgICAgICAgICAgICAgICMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgICAgICBzeD1zb25nX2FydGlzdC5maW5kKCco" >> dr1p
echo "JykNCiAgICAgICAgICAgICAgICBzeT1zb25nX2FydGlzdC5maW5kKCcpJykrMQ0KICAgICAgICAg" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgICAgICBzeD1zb25nX2FydGlzdC5maW5kKCdb" >> dr1p
echo "JykNCiAgICAgICAgICAgICAgICBzeT1zb25nX2FydGlzdC5maW5kKCddJykrMQ0KICAgICAgICAg" >> dr1p
echo "ICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgICAgICBpZiBzb25nX2Fy" >> dr1p
echo "dGlzdFtzeDpzeV0ubG93ZXIoKS5maW5kKCdvZmZpY2lhbCcpID4gLTE6DQogICAgICAgICAgICAg" >> dr1p
echo "ICAgICAgIGlmIHNvbmdfYXJ0aXN0W3N4OnN5XS5sb3dlcigpLmZpbmQoJ2F1ZGlvJykgPiAtMSBv" >> dr1p
echo "ciBzb25nX2FydGlzdFtzeDpzeV0ubG93ZXIoKS5maW5kKCd2aWRlbycpID4gLTE6DQogICAgICAg" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgICAgICBpZiBsZW4oc29u" >> dr1p
echo "Z19hcnRpc3Rbc3g6c3ldKSA+IDU6DQogICAgICAgICAgICAgICAgICAgIHNvbmdfYXJ0aXN0PXNv" >> dr1p
echo "bmdfYXJ0aXN0LnJlcGxhY2Uoc29uZ19hcnRpc3Rbc3g6c3ldLCcnKS5zdHJpcCgpDQogICAgICAg" >> dr1p
echo "ICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgIGlmIHNvbmdfdGl0bGUuZmluZCgnWycpID4gLTE6" >> dr1p
echo "DQogICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgICAg" >> dr1p
echo "IHN4PXNvbmdfdGl0bGUuZmluZCgnWycpDQogICAgICAgICAgICAgICAgc3k9c29uZ190aXRsZS5m" >> dr1p
echo "aW5kKCddJykrMQ0KICAgICAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAg" >> dr1p
echo "ICAgICAgICAgICBpZiBsZW4oc29uZ190aXRsZVtzeDpzeV0pID4gNToNCiAgICAgICAgICAgICAg" >> dr1p
echo "ICAgICAgc29uZ190aXRsZT1zb25nX3RpdGxlLnJlcGxhY2Uoc29uZ190aXRsZVtzeDpzeV0sJycp" >> dr1p
echo "LnN0cmlwKCkNCiAgICAgICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAg" >> dr1p
echo "ICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgaWYgc29uZ19hcnRp" >> dr1p
echo "c3QuZmluZCgnKCcpID4gLTE6DQogICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "Iw0KICAgICAgICAgICAgICAgIHN4PXNvbmdfYXJ0aXN0LmZpbmQoJygnKQ0KICAgICAgICAgICAg" >> dr1p
echo "ICAgIHN5PXNvbmdfYXJ0aXN0LmZpbmQoJyknKSsxDQogICAgICAgICAgICAgICAgIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgICAgIGlmIHNvbmdfYXJ0aXN0W3N4OnN5XS5sb3dl" >> dr1p
echo "cigpLmZpbmQoJ29mZmljaWFsJykgPiAtMToNCiAgICAgICAgICAgICAgICAgICAgaWYgc29uZ19h" >> dr1p
echo "cnRpc3Rbc3g6c3ldLmxvd2VyKCkuZmluZCgnYXVkaW8nKSA+IC0xIG9yIHNvbmdfYXJ0aXN0W3N4" >> dr1p
echo "OnN5XS5sb3dlcigpLmZpbmQoJ3ZpZGVvJykgPiAtMToNCiAgICAgICAgICAgICAgICAgICAgICAg" >> dr1p
echo "IHNvbmdfYXJ0aXN0PXNvbmdfYXJ0aXN0LnJlcGxhY2Uoc29uZ19hcnRpc3Rbc3g6c3ldLCcnKS5z" >> dr1p
echo "dHJpcCgpDQogICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAg" >> dr1p
echo "ICAgICAgIGlmIHNvbmdfYXJ0aXN0W3N4OnN5XS5sb3dlcigpLmZpbmQoJyMnKSA+IC0xOg0KICAg" >> dr1p
echo "ICAgICAgICAgICAgICAgICBzb25nX2FydGlzdD1zb25nX2FydGlzdC5yZXBsYWNlKHNvbmdfYXJ0" >> dr1p
echo "aXN0W3N4OnN5XSwnJykuc3RyaXAoKQ0KICAgICAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMNCiAgICAgICAgICAgICAgICBpZiBzb25nX2FydGlzdFtzeDpzeV0ubG93ZXIoKS5maW5k" >> dr1p
echo "KCcjJykgPiAtMToNCiAgICAgICAgICAgICAgICAgICAgc29uZ19hcnRpc3Q9c29uZ19hcnRpc3Qu" >> dr1p
echo "cmVwbGFjZShzb25nX2FydGlzdFtzeDpzeV0sJycpLnN0cmlwKCkNCiAgICAgICAgICAgICAgICAj" >> dr1p
echo "IyMjIyMNCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAgICAg" >> dr1p
echo "ICBpZiBzb25nX3RpdGxlLmZpbmQoJygnKSA+IC0xOg0KICAgICAgICAgICAgICAgICMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIw0KICAgICAgICAgICAgaWYgc29uZ190aXRsZS5maW5kKCcoJykgPiAtMToNCiAgICAgICAg" >> dr1p
echo "ICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAgICAgICAgICAgc3g9c29uZ190" >> dr1p
echo "aXRsZS5maW5kKCcoJykNCiAgICAgICAgICAgICAgICBzeT1zb25nX3RpdGxlLmZpbmQoJyknKSsx" >> dr1p
echo "DQogICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgICAg" >> dr1p
echo "IGlmIHNvbmdfdGl0bGVbc3g6c3ldLmxvd2VyKCkuZmluZCgnb2ZmaWNpYWwnKSA+IC0xOg0KICAg" >> dr1p
echo "ICAgICAgICAgICAgICAgICBpZiBzb25nX3RpdGxlW3N4OnN5XS5sb3dlcigpLmZpbmQoJ2F1ZGlv" >> dr1p
echo "JykgPiAtMSBvciBzb25nX3RpdGxlW3N4OnN5XS5sb3dlcigpLmZpbmQoJ3ZpZGVvJykgPiAtMToN" >> dr1p
echo "CiAgICAgICAgICAgICAgICAgICAgICAgIHNvbmdfdGl0bGU9c29uZ190aXRsZS5yZXBsYWNlKHNv" >> dr1p
echo "bmdfdGl0bGVbc3g6c3ldLCcnKS5zdHJpcCgpDQogICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIw0KICAgICAgICAgICAgICAgIGlmIHNvbmdfdGl0bGVbc3g6c3ldLmxvd2VyKCku" >> dr1p
echo "ZmluZCgnIycpID4gLTE6DQogICAgICAgICAgICAgICAgICAgIHNvbmdfdGl0bGU9c29uZ190aXRs" >> dr1p
echo "ZS5yZXBsYWNlKHNvbmdfdGl0bGVbc3g6c3ldLCcnKS5zdHJpcCgpDQogICAgICAgICAgICAgICAg" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgICAgIGlmIHNvbmdfdGl0bGVbc3g6" >> dr1p
echo "c3ldLmxvd2VyKCkuZmluZCgnZXhjbHVzaXZlJykgPiAtMToNCiAgICAgICAgICAgICAgICAgICAg" >> dr1p
echo "aWYgc29uZ190aXRsZVtzeDpzeV0ubG93ZXIoKS5maW5kKCdib251cycpID4gLTEgb3Igc29uZ190" >> dr1p
echo "aXRsZVtzeDpzeV0ubG93ZXIoKS5maW5kKCd2aWRlbycpID4gLTE6DQogICAgICAgICAgICAgICAg" >> dr1p
echo "ICAgICAgICBzb25nX3RpdGxlPXNvbmdfdGl0bGUucmVwbGFjZShzb25nX3RpdGxlW3N4OnN5XSwn" >> dr1p
echo "Jykuc3RyaXAoKQ0KICAgICAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAg" >> dr1p
echo "ICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAgICAgICBzb25nLnRhZy5h" >> dr1p
echo "cnRpc3Q9c29uZ19hcnRpc3QNCiAgICAgICAgICAgIHNvbmcudGFnLmFsYnVtPXNvbmdfYWxidW0N" >> dr1p
echo "CiAgICAgICAgICAgIHNvbmcudGFnLmdlbnJlPXNvbmdfZ2VucmUNCiAgICAgICAgICAgIHNvbmcu" >> dr1p
echo "dGFnLnRyYWNrX251bT0odHJhY2tfaW5kZXgrMSx0cmFja19jb3VudCkNCiAgICAgICAgICAgIHNv" >> dr1p
echo "bmcudGFnLmRpc2NfbnVtPSgxLDEpDQogICAgICAgICAgICBzb25nLnRhZy50aXRsZT1zb25nX3Rp" >> dr1p
echo "dGxlDQogICAgICAgICAgICBzb25nLnRhZy5jb21tZW50cy5zZXQodSIuW2RdLiBpcmNkLmNoYXQv" >> dr1p
echo "NjY5NyN0Y3BkaXJlY3Rcblxue30gcGxheWxpc3QiLmZvcm1hdChzb25nX2FsYnVtKSkNCiAgICAg" >> dr1p
echo "ICAgICAgIHNvbmcudGFnLnVzZXJfdXJsX2ZyYW1lcy5zZXQoYnl0ZXModXJsLmVuY29kZSgpKSkN" >> dr1p
echo "CiAgICAgICAgICAgIHNvbmcudGFnLnJlY29yZGluZ19kYXRlPWRhdGV0aW1lLm5vdygpLnN0cmZ0" >> dr1p
echo "aW1lKCclWS0lbS0lZCcpDQogICAgICAgICAgICBzb25nLnRhZy5vcmlnaW5hbF9yZWxlYXNlX2Rh" >> dr1p
echo "dGU9ZGF0ZXRpbWUubm93KCkuc3RyZnRpbWUoJyVZJykNCiAgICAgICAgICAgIHNvbmcudGFnLnBv" >> dr1p
echo "cHVsYXJpdGllcy5zZXQoZW1haWw9ImRAYW9sLmNvbSIscmF0aW5nPTUscGxheV9jb3VudD0wKQ0K" >> dr1p
echo "ICAgICAgICAgICAgc29uZy50YWcuaW1hZ2VzLnNldChJbWFnZUZyYW1lLkZST05UX0NPVkVSLCBv" >> dr1p
echo "cGVuKHBhdGhfdG9faW1hZ2UsJ3JiJykucmVhZCgpLCAnaW1hZ2UvanBlZycpDQogICAgICAgICAg" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgICAgICBzeD1zb25nX3RpdGxlLmZpbmQoJygnKQ0K" >> dr1p
echo "ICAgICAgICAgICAgICAgIHN5PXNvbmdfdGl0bGUuZmluZCgnKScpKzENCiAgICAgICAgICAgICAg" >> dr1p
echo "ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgc29uZy50YWcuc2F2ZSh2" >> dr1p
echo "ZXJzaW9uPUlEM19WMl80KQ0KICAgICAgICAgICAgc29uZy50YWcuc2F2ZSh2ZXJzaW9uPUlEM19W" >> dr1p
echo "Ml8zKQ0KICAgICAgICAgICAgc29uZy50YWcuc2F2ZSh2ZXJzaW9uPUlEM19WMV8xKQ0KICAgICAg" >> dr1p
echo "ICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgIGZpbGVyZW5hbWVk" >> dr1p
echo "PWYne3NvbmdfYXJ0aXN0fScubG93ZXIoKS5yZXBsYWNlKCcgJywnLicpDQogICAgICAgICAgICAj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAgICAgICAgICAgaWYgc29uZ190aXRsZVtz" >> dr1p
echo "eDpzeV0ubG93ZXIoKS5maW5kKCdvZmZpY2lhbCcpID4gLTE6DQogICAgICAgICAgICAgICAgICAg" >> dr1p
echo "IGlmIHNvbmdfdGl0bGVbc3g6c3ldLmxvd2VyKCkuZmluZCgnYXVkaW8nKSA+IC0xIG9yIHNvbmdf" >> dr1p
echo "dGl0bGVbc3g6c3ldLmxvd2VyKCkuZmluZCgndmlkZW8nKSA+IC0xOg0KICAgICAgICAgICAgICAg" >> dr1p
echo "ICAgICAgICAgc29uZ190aXRsZT1zb25nX3RpdGxlLnJlcGxhY2Uoc29uZ190aXRsZVtzeDpzeV0s" >> dr1p
echo "JycpLnN0cmlwKCkNCiAgICAgICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAg" >> dr1p
echo "ICAgICAgICAgICAgaWYgc29uZ190aXRsZVtzeDpzeV0ubG93ZXIoKS5maW5kKCcjJykgPiAtMToN" >> dr1p
echo "CiAgICAgICAgICAgICAgICAgICAgc29uZ190aXRsZT1zb25nX3RpdGxlLnJlcGxhY2Uoc29uZ190" >> dr1p
echo "aXRsZVtzeDpzeV0sJycpLnN0cmlwKCkNCiAgICAgICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgaWYgc29uZ190aXRsZToNCiAg" >> dr1p
echo "ICAgICAgICAgICAgICBmaWxlcmVuYW1lZCs9Il9fIitmIntzb25nX3RpdGxlfSIubG93ZXIoKS5y" >> dr1p
echo "ZXBsYWNlKCcgJywnLicpDQogICAgICAgICAgICBmaWxlcmVuYW1lZCs9ZiIue3NvbmdfZXh0ZW5z" >> dr1p
echo "aW9ufSINCiAgICAgICAgICAgIGZpbGVyZW5hbWVkPWZpbGVyZW5hbWVkLnJlcGxhY2UoJy4uJywn" >> dr1p
echo "LicpDQogICAgICAgICAgICBmaWxlcmVuYW1lZD1maWxlcmVuYW1lZC5yZXBsYWNlKCcmJywnYW5k" >> dr1p
echo "JykNCiAgICAgICAgICAgIGZpbGVyZW5hbWVkPWZpbGVyZW5hbWVkLnJlcGxhY2UoJy4oJywnX18n" >> dr1p
echo "KQ0KICAgICAgICAgICAgZmlsZXJlbmFtZWQ9ZmlsZXJlbmFtZWQucmVwbGFjZSgnKS4nLCcuJykN" >> dr1p
echo "CiAgICAgICAgICAgIGZpbGVyZW5hbWVkPWZpbGVyZW5hbWVkLnJlcGxhY2UoJywuJywnLmFuZC4n" >> dr1p
echo "KQ0KICAgICAgICAgICAgZmlsZXJlbmFtZWQ9ZmlsZXJlbmFtZWQucmVwbGFjZSgnLl8uJywnX18n" >> dr1p
echo "KQ0KICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgIG9z" >> dr1p
echo "LnJlbmFtZShmJ3tleHBvcnRfZGlyZWN0b3J5fS97dGhlbXAzfScsZid7ZXhwb3J0X2RpcmVjdG9y" >> dr1p
echo "eX0ve2ZpbGVyZW5hbWVkfScpDQogICAgICAgICAgICBwcmludChmJ1x4MWJbOTBtXHQgcmVuYW1l" >> dr1p
echo "ZDoge2ZpbGVyZW5hbWVkfVx4MWJbMG0nKQ0KICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjDQogICAgICAgICAgICAgICAgaWYgc29uZ190aXRsZVtzeDpzeV0ubG93ZXIoKS5maW5k" >> dr1p
echo "KCdleGNsdXNpdmUnKSA+IC0xOg0KICAgICAgICAgICAgICAgICAgICBpZiBzb25nX3RpdGxlW3N4" >> dr1p
echo "OnN5XS5sb3dlcigpLmZpbmQoJ2JvbnVzJykgPiAtMSBvciBzb25nX3RpdGxlW3N4OnN5XS5sb3dl" >> dr1p
echo "cigpLmZpbmQoJ3ZpZGVvJykgPiAtMToNCiAgICAgICAgICAgICAgICAgICAgICAgIHNvbmdfdGl0" >> dr1p
echo "bGU9c29uZ190aXRsZS5yZXBsYWNlKHNvbmdfdGl0bGVbc3g6c3ldLCcnKS5zdHJpcCgpDQogICAg" >> dr1p
echo "ICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMNCiAgICAgICAgICAgIHNvbmdfbGVuZ3RoPXNvbmcuaW5mby50aW1lX3NlY3MNCiAg" >> dr1p
echo "ICAgICAgICAgIGR1cmF0aW9uX21pbixkdXJhdGlvbl9zZWM9Ins6LjJmfSIuZm9ybWF0KDU2NS4w" >> dr1p
echo "MzIvNjApLnNwbGl0KCcuJykNCiAgICAgICAgICAgIHByaW50KGYnXHgxYls5MG1cdGR1cmF0aW9u" >> dr1p
echo "OiB7ZHVyYXRpb25fbWlufW17ZHVyYXRpb25fc2VjfXNceDFiWzBtJykNCiAgICAgICAgICAgICMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgIHNvbmcudGFnLmFydGlzdD1zb25nX2FydGlz" >> dr1p
echo "dA0KICAgICAgICAgICAgc29uZy50YWcuYWxidW09c29uZ19hbGJ1bQ0KICAgICAgICAgICAgc29u" >> dr1p
echo "Zy50YWcuZ2VucmU9c29uZ19nZW5yZQ0KICAgICAgICAgICAgc29uZy50YWcudHJhY2tfbnVtPSh0" >> dr1p
echo "cmFja19pbmRleCsxLHRyYWNrX2NvdW50KQ0KICAgICAgICAgICAgc29uZy50YWcuZGlzY19udW09" >> dr1p
echo "KDEsMSkNCiAgICAgICAgICAgIHNvbmcudGFnLnRpdGxlPXNvbmdfdGl0bGUNCiAgICAgICAgICAg" >> dr1p
echo "IHNvbmcudGFnLmNvbW1lbnRzLnNldCh1Ii5bZF0uIGlyY2QuY2hhdC82Njk3I3RjcGRpcmVjdFxu" >> dr1p
echo "XG57fSBwbGF5bGlzdCIuZm9ybWF0KHNvbmdfYWxidW0pKQ0KICAgICAgICAgICAgc29uZy50YWcu" >> dr1p
echo "dXNlcl91cmxfZnJhbWVzLnNldChieXRlcyh1cmwuZW5jb2RlKCkpKQ0KICAgICAgICAgICAgc29u" >> dr1p
echo "Zy50YWcucmVjb3JkaW5nX2RhdGU9ZGF0ZXRpbWUubm93KCkuc3RyZnRpbWUoJyVZLSVtLSVkJykN" >> dr1p
echo "CiAgICAgICAgICAgIHNvbmcudGFnLm9yaWdpbmFsX3JlbGVhc2VfZGF0ZT1kYXRldGltZS5ub3co" >> dr1p
echo "KS5zdHJmdGltZSgnJVknKQ0KICAgICAgICAgICAgc29uZy50YWcucG9wdWxhcml0aWVzLnNldChl" >> dr1p
echo "bWFpbD0iZEBhb2wuY29tIixyYXRpbmc9NSxwbGF5X2NvdW50PTApDQogICAgICAgICAgICBzb25n" >> dr1p
echo "LnRhZy5pbWFnZXMuc2V0KEltYWdlRnJhbWUuRlJPTlRfQ09WRVIsIG9wZW4ocGF0aF90b19pbWFn" >> dr1p
echo "ZSwncmInKS5yZWFkKCksICdpbWFnZS9qcGVnJykNCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAgICAgICBmPW9wZW4ocGxheWxpc3RfcGF0" >> dr1p
echo "aDJmaWxlLCdhJykNCiAgICAgICAgICAgIGYud3JpdGUoZiIjRVhUSU5GOntpbnQoc29uZ19sZW5n" >> dr1p
echo "dGgpfSx7c29uZ19hcnRpc3QubG93ZXIoKX0gLSB7c29uZ190aXRsZS5sb3dlcigpfVxuIikNCiAg" >> dr1p
echo "ICAgICAgICAgIGYud3JpdGUoZiJ7ZmlsZXJlbmFtZWR9XG4gICAiKQ0KICAgICAgICAgICAgZi5j" >> dr1p
echo "bG9zZSgpDQogICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjDQogICAgICAgICAgICBzb25nLnRhZy5zYXZlKHZlcnNpb249SUQzX1YyXzQp" >> dr1p
echo "DQogICAgICAgICAgICBzb25nLnRhZy5zYXZlKHZlcnNpb249SUQzX1YyXzMpDQogICAgICAgICAg" >> dr1p
echo "ICBzb25nLnRhZy5zYXZlKHZlcnNpb249SUQzX1YxXzEpDQogICAgICAgICAgICAjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6" >> dr1p
echo "DQogICAgICAgIHByaW50KGYiZXJyb3I6IHtlfSIpDQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgZmlsZXJlbmFtZWQ9Zid7c29uZ19hcnRpc3R9" >> dr1p
echo "Jy5sb3dlcigpLnJlcGxhY2UoJyAnLCcuJykNCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIw0KICAgIHRyeToNCiAgICAgICAgZmlsZWxpc3Q9Z2xvYignKi5tcDMnKQ0K" >> dr1p
echo "ICAgICAgICBmb3IgXyBpbiBmaWxlbGlzdDogb3MucmVtb3ZlKF8pDQogICAgZXhjZXB0Og0KICAg" >> dr1p
echo "ICAgICBwYXNzDQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIHRy" >> dr1p
echo "eToNCiAgICAgICAgb3MucmVtb3ZlKHBhdGhfdG9faW1hZ2UpDQogICAgZXhjZXB0Og0KICAgICAg" >> dr1p
echo "IyMjIyMjIyMjDQogICAgICAgICAgICBpZiBzb25nX3RpdGxlOg0KICAgICAgICAgICAgICAgIGZp" >> dr1p
echo "bGVyZW5hbWVkKz0iX18iK2Yie3NvbmdfdGl0bGV9Ii5sb3dlcigpLnJlcGxhY2UoJyAnLCcuJykN" >> dr1p
echo "CiAgICAgICAgICAgIGZpbGVyZW5hbWVkKz1mIi57c29uZ19leHRlbnNpb259Ig0KICAgICAgICAg" >> dr1p
echo "ICAgZmlsZXJlbmFtZWQ9ZmlsZXJlbmFtZWQucmVwbGFjZSgnJicsJ2FuZCcpDQogICAgICAgICAg" >> dr1p
echo "ICBmaWxlcmVuYW1lZD1maWxlcmVuYW1lZC5yZXBsYWNlKCcuKCcsJ19fJykNCiAgICAgICAgICAg" >> dr1p
echo "IGZpbGVyZW5hbWVkPWZpbGVyZW5hbWVkLnJlcGxhY2UoJykuJywnLicpDQogICAgICAgICAgICBm" >> dr1p
echo "aWxlcmVuYW1lZD1maWxlcmVuYW1lZC5yZXBsYWNlKCcsLicsJy5hbmQuJykNCiAgICAgICAgICAg" >> dr1p
echo "IGZpbGVyZW5hbWVkPWZpbGVyZW5hbWVkLnJlcGxhY2UoJy5fLicsJ19fJykNCiAgICAgICAgICAg" >> dr1p
echo "IGZpbGVyZW5hbWVkPWZpbGVyZW5hbWVkLnJlcGxhY2UoJ8KpJywnJykNCiAgICAgICAgICAgIGZp" >> dr1p
echo "bGVyZW5hbWVkPWVtb2ppX3BhdHRlcm4uc3ViKHInJywgZmlsZXJlbmFtZWQpDQogICAgICAgICAg" >> dr1p
echo "ICBmaWxlcmVuYW1lZD0nJy5qb2luKGZpbHRlcihsYW1iZGEgeDogeCBpbiBzdHJpbmcucHJpbnRh" >> dr1p
echo "YmxlLGZpbGVyZW5hbWVkKSkNCiAgICAgICAgICAgIGZpbGVyZW5hbWVkPWZpbGVyZW5hbWVkLnJl" >> dr1p
echo "cGxhY2UoJygnLCcnKQ0KICAgICAgICAgICAgZmlsZXJlbmFtZWQ9ZmlsZXJlbmFtZWQucmVwbGFj" >> dr1p
echo "ZSgnKScsJycpDQogICAgICAgICAgICBmaWxlcmVuYW1lZD1yZS5zdWIoJ1wuKycsJy4nLGZpbGVy" >> dr1p
echo "ZW5hbWVkKQ0KICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAg" >> dr1p
echo "ICAgIG9zLnJlbmFtZShmJ3tleHBvcnRfZGlyZWN0b3J5fS97dGhlbXAzfScsZid7ZXhwb3J0X2Rp" >> dr1p
echo "cmVjdG9yeX0ve2ZpbGVyZW5hbWVkfScpDQogICAgICAgICAgICBwcmludChmJ1x4MWJbOTBtXHQg" >> dr1p
echo "cmVuYW1lZDoge2ZpbGVyZW5hbWVkfVx4MWJbMG0nKQ0KICAgICAgICAgICAgIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgIHNvbmdfbGVuZ3RoPXNvbmcuaW5mby50aW1lX3Nl" >> dr1p
echo "Y3MNCiAgICAgICAgICAgIGR1cmF0aW9uX21pbixkdXJhdGlvbl9zZWM9Ins6LjJmfSIuZm9ybWF0" >> dr1p
echo "KDU2NS4wMzIvNjApLnNwbGl0KCcuJykNCiAgICAgICAgICAgIHByaW50KGYnXHgxYls5MG1cdGR1" >> dr1p
echo "cmF0aW9uOiB7ZHVyYXRpb25fbWlufW17ZHVyYXRpb25fc2VjfXNceDFiWzBtJykNCiAgICAgICAg" >> dr1p
echo "ICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAgICAgICBmPW9wZW4ocGxheWxp" >> dr1p
echo "c3RfcGF0aDJmaWxlLCdhJykNCiAgICAgICAgICAgIGFydGlzdF9yZW5hbWVkPXNvbmdfYXJ0aXN0" >> dr1p
echo "Lmxvd2VyKCkNCiAgICAgICAgICAgIGFydGlzdF9yZW5hbWVkPScnLmpvaW4oZmlsdGVyKGxhbWJk" >> dr1p
echo "YSB4OiB4IGluIHN0cmluZy5wcmludGFibGUsYXJ0aXN0X3JlbmFtZWQpKQ0KICAgICAgICAgICAg" >> dr1p
echo "YXJ0aXN0X3JlbmFtZWQ9cmUuc3ViKCdcLisnLCcuJyxhcnRpc3RfcmVuYW1lZCkNCiAgICAgICAg" >> dr1p
echo "ICAgIHRpdGxlX3JlbmFtZWQ9c29uZ190aXRsZS5sb3dlcigpDQogICAgICAgICAgICB0aXRsZV9y" >> dr1p
echo "ZW5hbWVkPScnLmpvaW4oZmlsdGVyKGxhbWJkYSB4OiB4IGluIHN0cmluZy5wcmludGFibGUsdGl0" >> dr1p
echo "bGVfcmVuYW1lZCkpDQogICAgICAgICAgICB0aXRsZV9yZW5hbWVkPXJlLnN1YignXC4rJywnLics" >> dr1p
echo "dGl0bGVfcmVuYW1lZCkNCiAgICAgICAgICAgIGYud3JpdGUoZiIjRVhUSU5GOntpbnQoc29uZ19s" >> dr1p
echo "ZW5ndGgpfSx7YXJ0aXN0X3JlbmFtZWR9IC0ge3RpdGxlX3JlbmFtZWR9XG4iKQ0KICAgICAgICAg" >> dr1p
echo "ICAgZi53cml0ZShmIntmaWxlcmVuYW1lZH1cbiIpDQogICAgICAgICAgICBmLmNsb3NlKCkNCiAg" >> dr1p
echo "ICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToNCiAgICAgICAg" >> dr1p
echo "cHJpbnQoZiJlcnJvcjoge2V9IikNCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjDQogICAgdHJ5Og0KICAgICAgICBmaWxlbGlzdD1nbG9iKCcqLm1wMycpDQogICAgICAgIGZv" >> dr1p
echo "ciBfIGluIGZpbGVsaXN0OiBvcy5yZW1vdmUoXykNCiAgICBleGNlcHQ6DQogICAgICAgIHBhc3MN" >> dr1p
echo "CiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgdHJ5Og0KICAgICAg" >> dr1p
echo "ICBvcy5yZW1vdmUocGF0aF90b19pbWFnZSkNCiAgICBleGNlcHQ6DQogICAgICAgIHBhc3MNCiAg" >> dr1p
echo "ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgdHJ5Og0KICAgICAgICBm" >> dr1p
echo "aWxlbGlzdD1nbG9iKCcqLmxvZycpDQogICAgICAgIGxvZ2ZpbGVzPVtdDQogICAgICAgIGZvciBf" >> dr1p
echo "IGluIGZpbGVsaXN0Og0KICAgICAgICAgICAgZj1vcGVuKF8sJ3InKQ0KICAgICAgICAgICAgbD1m" >> dr1p
echo "LnJlYWQoKS5zcGxpdGxpbmVzKCkNCiAgICAgICAgICAgIGYuY2xvc2UoKQ0KICAgICAgICAgICAg" >> dr1p
echo "bG9nZmlsZXMuYXBwZW5kKFtfLGxdKQ0KICAgICAgICAgICAgb3MucmVtb3ZlKF8pDQogICAgZXhj" >> dr1p
echo "ZXB0Og0KICAgICAgICBwYXNzDQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "Iw0KICAgIHRyeToNCiAgICAgICAgbG9na2V5PVtdDQogICAgICAgIGZvciBpLF8gaW4gZW51bWVy" >> dr1p
echo "YXRlKGxvZ2ZpbGVzKToNCiAgICAgICAgICAgIGlmIF9bMF0gPT0gInVybF9iYXRjaC5sb2ciOg0K" >> dr1p
echo "ICAgICAgICAgICAgICAgIGxvZ2tleS5hcHBlbmQoaSkNCiAgICBleGNlcHQ6DQogICAgICAgIHBh" >> dr1p
echo "c3MNCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgdHJ5Og0KICAg" >> dr1p
echo "ICAgICBmb3IgaSxfIGluIGVudW1lcmF0ZShsb2dmaWxlcyk6DQogICAgICAgICAgICBpZiBfWzBd" >> dr1p
echo "ID09ICJ5b3V0dWJlX3VybF9iYXRjaC5sb2ciOg0KICAgICAgICAgICAgICAgIGxvZ2tleS5hcHBl" >> dr1p
echo "bmQoaSkNCiAgICBleGNlcHQ6DQogICAgICAgIHBhc3MNCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjDQogICAgdHJ5Og0KICAgICAgICBmb3IgaSxfIGluIGVudW1lcmF0ZShs" >> dr1p
echo "b2dmaWxlcyk6DQogICAgICAgICAgICBpZiBfWzBdID09ICJ5b3V0dWJlX2Rvd25sb2FkZWQubG9n" >> dr1p
echo "IjoNCiAgICAgICAgICAgICAgICBsb2drZXkuYXBwZW5kKGkpDQogICAgZXhjZXB0Og0KICAgICAg" >> dr1p
echo "ICBwYXNzDQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIHRyeToN" >> dr1p
echo "CiAgICAgICAgZmlsZWxpc3Q9Z2xvYignKi5sb2cnKQ0KICAgICAgICBsb2dmaWxlcz1bXQ0KICAg" >> dr1p
echo "ICAgICBmb3IgXyBpbiBmaWxlbGlzdDoNCiAgICAgICAgICAgIGY9b3BlbihfLCdyJykNCiAgICAg" >> dr1p
echo "ICAgICAgIGw9Zi5yZWFkKCkuc3BsaXRsaW5lcygpDQogICAgICAgICAgICBmLmNsb3NlKCkNCiAg" >> dr1p
echo "ICAgICAgICAgIGxvZ2ZpbGVzLmFwcGVuZChbXyxsXSkNCiAgICAgICAgICAgIG9zLnJlbW92ZShf" >> dr1p
echo "KQ0KICAgIGV4Y2VwdDoNCiAgICAgICAgcGFzcw0KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "CiAgICAgICAgZm9yIGksXyBpbiBlbnVtZXJhdGUobG9nZmlsZXMpOg0KICAgICAgICAgICAgaWYg" >> dr1p
echo "X1swXSA9PSAic291bmRjbG91ZF91cmxfYmF0Y2gubG9nIjoNCiAgICAgICAgICAgICAgICBsb2dr" >> dr1p
echo "ZXkuYXBwZW5kKGkpDQogICAgZXhjZXB0Og0KICAgICAgICBwYXNzDQogICAgIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMNCiAgICB0cnk6DQogICAgICAgIGxvZ2tleT1bXQ0KICAgICAgICBmb3IgaSxf" >> dr1p
echo "IGluIGVudW1lcmF0ZShsb2dmaWxlcyk6DQogICAgICAgICAgICBpZiBfWzBdID09ICJ1cmxfYmF0" >> dr1p
echo "Y2gubG9nIjoNCiAgICAgICAgICAgICAgICBsb2drZXkuYXBwZW5kKGkpDQogICAgZXhjZXB0Og0K" >> dr1p
echo "ICAgICAgICBwYXNzDQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAg" >> dr1p
echo "IHRyeToNCiAgICAgICAgZm9yIGksXyBpbiBlbnVtZXJhdGUobG9nZmlsZXMpOg0KICAgICAgICAg" >> dr1p
echo "ICAgaWYgX1swXSA9PSAieW91dHViZV91cmxfYmF0Y2gubG9nIjoNCiAgICAgICAgICAgICAgICBs" >> dr1p
echo "b2drZXkuYXBwZW5kKGkpDQogICAgZXhjZXB0Og0KICAgICAgICBwYXNzDQogICAgIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIHRyeToNCiAgICAgICAgZm9yIGksXyBpbiBl" >> dr1p
echo "bnVtZXJhdGUobG9nZmlsZXMpOg0KICAgICAgICAgICAgaWYgX1swXSA9PSAieW91dHViZV9kb3du" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIHRyeToNCiAgICAgICAgZm9yIGksXyBpbiBlbnVt" >> dr1p
echo "ZXJhdGUobG9nZmlsZXMpOg0KICAgICAgICAgICAgaWYgX1swXSA9PSAic291bmRjbG91ZF9kb3du" >> dr1p
echo "bG9hZGVkLmxvZyI6DQogICAgICAgICAgICAgICAgbG9na2V5LmFwcGVuZChpKQ0KICAgIGV4Y2Vw" >> dr1p
echo "dDoNCiAgICAgICAgcGFzcw0KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMN" >> dr1p
echo "CiAgICB0cnk6DQogICAgICAgIGZvciBpLF8gaW4gZW51bWVyYXRlKGxvZ2ZpbGVzKToNCiAgICAg" >> dr1p
echo "ICAgICAgIGlmIF9bMF0gPT0gInNvdW5kY2xvdWRfdXJsX2JhdGNoLmxvZyI6DQogICAgICAgICAg" >> dr1p
echo "ICAgICAgbG9na2V5LmFwcGVuZChpKQ0KICAgIGV4Y2VwdDoNCiAgICAgICAgcGFzcw0KICAgICMj" >> dr1p
echo "ICAgICAgIGlmIF9bMF0gPT0gImJhbmRjYW1wX3VybF9iYXRjaC5sb2ciOg0KICAgICAgICAgICAg" >> dr1p
echo "ICAgIGxvZ2tleS5hcHBlbmQoaSkNCiAgICBleGNlcHQ6DQogICAgICAgIHBhc3MNCiAgICAjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICB0cnk6DQogICAgICAgIGZvciBp" >> dr1p
echo "LF8gaW4gZW51bWVyYXRlKGxvZ2ZpbGVzKToNCiAgICAgICAgICAgIGlmIF9bMF0gPT0gInNvdW5k" >> dr1p
echo "Y2xvdWRfZG93bmxvYWRlZC5sb2ciOg0KICAgICAgICAgICAgICAgIGxvZ2tleS5hcHBlbmQoaSkN" >> dr1p
echo "CiAgICBleGNlcHQ6DQogICAgICAgIHBhc3MNCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgdHJ5Og0KICAgICAgICBmb3IgaSxf" >> dr1p
echo "IGluIGVudW1lcmF0ZShsb2dmaWxlcyk6DQogICAgICAgICAgICBpZiBfWzBdID09ICJiYW5kY2Ft" >> dr1p
echo "cF9kb3dubG9hZGVkLmxvZyI6DQogICAgICAgICAgICAgICAgbG9na2V5LmFwcGVuZChpKQ0KICAg" >> dr1p
echo "IGV4Y2VwdDoNCiAgICAgICAgcGFzcw0KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjDQogICAgdHJ5Og0KICAgICAgICBmb3IgaSxfIGluIGVudW1lcmF0ZShsb2dmaWxl" >> dr1p
echo "cyk6DQogICAgICAgICAgICBpZiBfWzBdID09ICJiYW5kY2FtcF91cmxfYmF0Y2gubG9nIjoNCiAg" >> dr1p
echo "ICAgICAgICAgICAgICBsb2drZXkuYXBwZW5kKGkpDQogICAgZXhjZXB0Og0KICAgICAgICBwYXNz" >> dr1p
echo "DQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIHRyeToNCiAgICAg" >> dr1p
echo "ICAgZm9yIGksXyBpbiBlbnVtZXJhdGUobG9nZmlsZXMpOg0KICAgICAgICAgICAgaWYgX1swXSA9" >> dr1p
echo "PSAiYmFuZGNhbXBfZG93bmxvYWRlZC5sb2ciOg0KICAgICAgICAgICAgICAgIGxvZ2tleS5hcHBl" >> dr1p
echo "bmQoaSkNCiAgICBleGNlcHQ6DQogICAgICAgIHBhc3MNCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMNCiAgICBsb2djbXA9W107IGxvZ2Nscj1bXTsgcHJpbnQoJycpDQogICAgIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjDQogICAgbG9nY21wPVtdOyBsb2djbHI9W107IHByaW50KCcnKQ0KICAg" >> dr1p
echo "ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICBmb3IgZCxfIGluIGVudW1l" >> dr1p
echo "cmF0ZShsb2drZXkpOg0KICAgICAgICBvZmZzZXQ9bGVuKGYie3N0cihfKS56ZmlsbCgyKX0ve3N0" >> dr1p
echo "cihsZW4obG9nZmlsZXMpLTEpLnpmaWxsKDIpfSB7bG9nZmlsZXNbX11bMF19IGlEcjFwIikNCiAg" >> dr1p
echo "ICAgICAgbG9nY2xyLmFwcGVuZCgiXHgxYls5MG0iKQ0KICAgICAgICBsb2djbHIuYXBwZW5kKCJc" >> dr1p
echo "eDFiWzkwbSIpDQogICAgICAgIGxvZ2NtcC5hcHBlbmQoZiIuU09GLiB7JyMnKmludCgxMDAtb2Zm" >> dr1p
echo "c2V0KX0ge2xvZ2ZpbGVzW19dWzBdfSB7c3RyKGQrMSkuemZpbGwoMil9L3tzdHIobGVuKGxvZ2Zp" >> dr1p
echo "bGVzKSkuemZpbGwoMil9IikNCiAgICAgICAgbG9nY21wLmFwcGVuZCgiIikNCiAgICAgICAgZm9y" >> dr1p
echo "IF9fIGluIHJhbmdlKGxlbihsb2dmaWxlc1tfXVsxXSkpOg0KICAgICAgICAgICAgbG9nY2xyLmFw" >> dr1p
echo "cGVuZCgiXHgxYlszMW0iKQ0KICAgICAgICAgICAgbG9nY21wLmFwcGVuZCggZiJ7c3RyKF9fKzEp" >> dr1p
echo "LnpmaWxsKDIpfS97c3RyKGxlbihsb2dmaWxlc1tfXVsxXSkpLnpmaWxsKDIpfSB7bG9nZmlsZXNb" >> dr1p
echo "X11bMV1bX19dfSIgKQ0KICAgICAgICBsb2djbHIuYXBwZW5kKCJceDFiWzkwbSIpDQogICAgICAg" >> dr1p
echo "IGxvZ2Nsci5hcHBlbmQoIlx4MWJbOTBtIikNCiAgICAgICAgbG9nY2xyLmFwcGVuZCgiXHgxYls5" >> dr1p
echo "MG0iKQ0KICAgICAgICBsb2djbXAuYXBwZW5kKCIiKQ0KICAgICAgICBsb2djbXAuYXBwZW5kKGYi" >> dr1p
echo "e3N0cihkKzEpLnpmaWxsKDIpfS97c3RyKGxlbihsb2dmaWxlcykpLnpmaWxsKDIpfSB7bG9nZmls" >> dr1p
echo "ZXNbX11bMF19IHsnIycqaW50KDEwMC1vZmZzZXQpfSAuRU9GLiIpDQogICAgICAgIGxvZ2NtcC5h" >> dr1p
echo "cHBlbmQoIiIpDQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICNm" >> dr1p
echo "b3IgaSxfIGluIGVudW1lcmF0ZShsb2drZXkpOiBsb2djbXAuYXBwZW5kKCBmJ2tleSBpbmRleDog" >> dr1p
echo "e2l9ID0ge199ID0ge2xvZ2ZpbGVzW19dWzBdfScgKQ0KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIGZvciBkLF8gaW4gZW51bWVyYXRlKGxvZ2tl" >> dr1p
echo "eSk6DQogICAgICAgIG9mZnNldD1sZW4oZiJ7c3RyKF8pLnpmaWxsKDIpfS97c3RyKGxlbihsb2dm" >> dr1p
echo "aWxlcyktMSkuemZpbGwoMil9IHtsb2dmaWxlc1tfXVswXX0gaURyMXAiKQ0KICAgICAgICBsb2dj" >> dr1p
echo "bHIuYXBwZW5kKCJceDFiWzkwbSIpDQogICAgICAgIGxvZ2Nsci5hcHBlbmQoIlx4MWJbOTBtIikN" >> dr1p
echo "CiAgICAgICAgbG9nY21wLmFwcGVuZChmIi5TT0YuIHsnIycqaW50KDEwMC1vZmZzZXQpfSB7bG9n" >> dr1p
echo "ZmlsZXNbX11bMF19IHtzdHIoZCsxKS56ZmlsbCgyKX0ve3N0cihsZW4obG9nZmlsZXMpKS56Zmls" >> dr1p
echo "bCgyKX0iKQ0KICAgICAgICBsb2djbXAuYXBwZW5kKCIiKQ0KICAgICAgICBmb3IgX18gaW4gcmFu" >> dr1p
echo "Z2UobGVuKGxvZ2ZpbGVzW19dWzFdKSk6DQogICAgICAgICAgICBsb2djbHIuYXBwZW5kKCJceDFi" >> dr1p
echo "WzMxbSIpDQogICAgICAgICAgICBsb2djbXAuYXBwZW5kKCBmIntzdHIoX18rMSkuemZpbGwoMil9" >> dr1p
echo "L3tzdHIobGVuKGxvZ2ZpbGVzW19dWzFdKSkuemZpbGwoMil9IHtsb2dmaWxlc1tfXVsxXVtfX119" >> dr1p
echo "IiApDQogICAgICAgIGxvZ2Nsci5hcHBlbmQoIlx4MWJbOTBtIikNCiAgICAgICAgbG9nY2xyLmFw" >> dr1p
echo "cGVuZCgiXHgxYls5MG0iKQ0KICAgICAgICBsb2djbHIuYXBwZW5kKCJceDFiWzkwbSIpDQogICAg" >> dr1p
echo "ICAgIGxvZ2NtcC5hcHBlbmQoIiIpDQogICAgICAgIGxvZ2NtcC5hcHBlbmQoZiJ7c3RyKGQrMSku" >> dr1p
echo "emZpbGwoMil9L3tzdHIobGVuKGxvZ2ZpbGVzKSkuemZpbGwoMil9IHtsb2dmaWxlc1tfXVswXX0g" >> dr1p
echo "eycjJyppbnQoMTAwLW9mZnNldCl9IC5FT0YuIikNCiAgICAgICAgbG9nY21wLmFwcGVuZCgiIikN" >> dr1p
echo "CiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgZj1vcGVuKGYne2V4" >> dr1p
echo "cG9ydF9kaXJlY3Rvcnl9L19wcm9jZXNzZWRfYmF0Y2gubG9nJywndycpDQogICAgZm9yIGksXyBp" >> dr1p
echo "biBlbnVtZXJhdGUobG9nY21wKToNCiAgICAgICAgcHJpbnQoZiJ7bG9nY2xyW2ldfXtffSIpDQog" >> dr1p
echo "ICAgICAgIGYud3JpdGUoZid7X31cbicpDQogICAgZi5jbG9zZSgpDQogICAgIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMNCiAgICBmPW9wZW4oZid7ZXhwb3J0X2RpcmVjdG9yeX0vX3Byb2Nlc3Nl" >> dr1p
echo "ZF9iYXRjaC5sb2cnLCd3JykNCiAgICBmb3IgaSxfIGluIGVudW1lcmF0ZShsb2djbXApOg0KICAg" >> dr1p
echo "ICAgICBwcmludChmIntsb2djbHJbaV19e199IikNCiAgICAgICAgZi53cml0ZShmJ3tffVxuJykN" >> dr1p
echo "CiAgICBmLmNsb3NlKCkNCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQog" >> dr1p
echo "ICAgcHJpbnQoJ2ZpbmlzaGVkJykNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMg" >> dr1p
echo "RU9G" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIHByaW50KCdmaW5pc2hlZCcpDQojIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEVPRg==" >> dr1p
#####################################################################################################################
base64 -d <<< cat dr1p > dp3.py && python3 dp3.py "$PLAYLIST_NAME" "$PLAYLIST_GENRE" "$PLAYLIST_ARTWORK" ############
#####################################################################################################################
mv "$PLAYLIST_ARTWORK" "$PLAYLIST_NAME/$PREFIX$PLAYLIST_NAME/_folder.png" && rm "dr1p" && rm "dp3.py" ###############
#####################################################################################################################
mv "$PLAYLIST_NAME/$PREFIX$PLAYLIST_NAME" "." && rmdir "$PLAYLIST_NAME" && ls -al "$PREFIX$PLAYLIST_NAME" ###########
mv "$PLAYLIST_NAME/$PREFIX$PLAYLIST_NAME" "." && rmdir "$PLAYLIST_NAME" #############################################
#####################################################################################################################
cat "$PREFIX$PLAYLIST_NAME/_playlist.m3u" && echo "$PLAYLIST_URL" >> "$PREFIX$PLAYLIST_NAME/_processed_batch.log" ###
echo -e "\n\033[0;31m[\033[0m DIRECTORY LISTING \033[0;31m]\n"; ls -al "$PREFIX$PLAYLIST_NAME" ######################
#####################################################################################################################
tar cvfz "dr1p__$PLAYLIST_NAME.tar.gz" "$PREFIX$PLAYLIST_NAME" && ls -al "$PREFIX$PLAYLIST_NAME.tar.gz" #############
echo -e "\n\033[0;31m[\033[0m PLAYLIST CREATED \033[0;31m]\n"; cat "$PREFIX$PLAYLIST_NAME/_playlist.m3u" ############
#####################################################################################################################
echo "$PLAYLIST_URL" >> "$PREFIX$PLAYLIST_NAME/_processed_batch.log" ################################################
#####################################################################################################################
echo -e "\n\033[0;31m[\033[0m ARCHIVING PLAYLIST \033[0;31m]\n" #####################################################
#####################################################################################################################
tar cvfz "dr1p__$PLAYLIST_NAME.tar.gz" "$PREFIX$PLAYLIST_NAME" ######################################################
#####################################################################################################################
echo -e "\n\033[0;31m[\033[0m FILENAME OF PLAYLIST ARCHIVE \033[0;31m]\n" ###########################################
#####################################################################################################################
ls -al "$PREFIX$PLAYLIST_NAME.tar.gz" ###############################################################################
#####################################################################################################################
echo -e "\n\033[0;31m[\033[0m OPERATION COMPLETE \033[0;31m]" #######################################################
################################################################################################################# EOF