Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php $_F=__FILE__;$_C1353562110='Pz48P0dmRwpreSAoIXlhZFJJa2dkX2lTazFJMSgiX19NYUlnMmdNWCIp..
Decoded Output download
?><?php
if (!function_exists("__autoload")) {
include("../lib/app_top.php");
}
if (!isset($_SESSION[SESSION_VAR_NAME]['user_id'])) {
header("location: ../error_401.php");
exit();
}
//else {
else {
$page_ctl = new page_access_ctl($db);
if ($page_ctl->hasPermission('152', $_SESSION[SESSION_VAR_NAME]['role'])) {
$Page = new page($db);
$userAccessRight = $Page->accesspermissions('152', $_SESSION[SESSION_VAR_NAME]['role']);
$no_userAccessRight = count($userAccessRight);
$access_type = array();
$Global_Settings = new global_settings($db);
$Approved1 = $Global_Settings->get_application_sizeLimit_detail_byId(4);
$Unapproved1 = $Global_Settings->get_application_sizeLimit_detail_byId(5);
$Rejected1 = $Global_Settings->get_application_sizeLimit_detail_byId(6);
foreach ($userAccessRight as $p_ar) {
array_push($access_type, $p_ar['type']);
}
if (in_array('2', $access_type)) {
// EMPTY SESSION FOLDER
$dir = 'documents/tmp/' . $_SESSION[SESSION_VAR_NAME]['user_temp_number'];
$files = clear_session_files($dir, true);
rmdir($dir);
// EMPTY SESSION FOLDER
$pid = decrypt_url($_REQUEST['project_id'], APP_ENCRYPTION_SALT);
// echo '*********************************************************8' . $pid;
$id = decrypt_url($_REQUEST['doc_id'], APP_ENCRYPTION_SALT);
//$document_all = decrypt_url($_REQUEST['document_all'], APP_ENCRYPTION_SALT);
//$document_all = gzinflate(gzinflate(gzinflate((urldecode(decrypt_url($_REQUEST['document_all'], APP_ENCRYPTION_SALT))))));
//$comparess = urlencode(gzdeflate(gzdeflate(gzdeflate($document_all, 9), 9), 9));
//$document_all_arr = @explode(",", $document_all);
//$key = array_search($id, $document_all_arr);
//$next_id = $document_all_arr[$key + 1];
//$prev_id = $document_all_arr[$key - 1];
/////End
//$id = decrypt_url($_REQUEST['doc_id'], APP_ENCRYPTION_SALT);
$Project = new project($db);
$project_details = $Project->getProject_ById($pid);
$Category = new category($db);
$parent_category_details = $Category->getCategoryByID($project_details[0]['category_id']);
$File = new file_manager($db);
$doc_details = $File->getDoc_ByID_All($id);
$sel_parent_category_details = $Category->getCategoryByID($doc_details[0]['category_id']);
/* * *************************** */
$stack = array();
$parent = $sel_parent_category_details[0]['parent_id'];
array_push($stack, $sel_parent_category_details[0]['parent_id']);
while ($parent != 0) {
$category_details = $Category->getCategoryByID($parent);
$parent = $category_details[0]['parent_id'];
array_push($stack, $parent);
}
$stack = array_reverse($stack);
array_shift($stack);
array_push($stack, $doc_details[0]['category_id']);
$category_path = join('/', $stack);
/* * ********************************** */
$parent_id = $File->get_ParentId($id);
$perpetual_status = $File->get_PerpetualStatus($parent_id[0]['parent_id']);
$parent_doc_details = $File->getDocument_ByparenId($id);
$Global_Settings = new global_settings($db);
$doc_life_cycle_id = $Global_Settings->get_module_info_byId(12);
?>
<style>
.form-horizontal .control-group {
margin-bottom:7px;
}
</style>
<script type="text/javascript" nonce=<?php echo $_SESSION[SESSION_VAR_NAME]['usernonce']; ?>>
$(document).ready(function () {
$("#span_prv").hide();
$("#span_nxt").hide();
setTimeout(function () {
ajax_common_request("dms/dms_indexing_incl.php?id=<?php echo encrypt_url($id, APP_ENCRYPTION_SALT); ?>&pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>", 'div_preview_indexing');
$.ajax({
url: 'dms/dms_dashboard_nxt_prv.php',
type: 'post',
data: {
pid: '<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>',
id: '<?php echo encrypt_url($id, APP_ENCRYPTION_SALT); ?>'
},
beforeSend: function () {
},
error: function (data) {
},
success: function (response) {
// console.log(response);
var result = [];
result = $.parseJSON(response);
// console.log(result[2]);
$("#prv").val(result[0]);
$("#nxt").val(result[1]);
if (result[0] != 0) {
$("#span_prv").show();
}
if (result[1] != 0) {
$("#span_nxt").show();
}
},
complete: function (data) {
}
});
}, 2000);
});
// $document.ready(function ()) {
// $('.span7').hide().delay(10000).fadeIn(1850);
// });
//
// setTimeout(function () {
// $(".span").show()
// }, 4000);
//
// $(function () {
//
// $('#tags_1').tagsInput({
// width: 'auto'
// });
//
// });
/*====Select Box====*/
$(function () {
$(".chzn-select").chosen();
$(".chzn-select-deselect").chosen({
allow_single_deselect: true
});
$(document).on('click', '.add_im_value', function (event) {
var id = $(this).prop("id");
var index_master_id = id.split('_')[3];
var title = 'Add New Index Master Value';
var a_url = "dms/add_im_value_form.php?id=" + index_master_id + '&pid=' +<?php echo $pid; ?>;
$("#add_im_value").remove();
mypanel = $.jsPanel({
id: 'add_im_value',
contentType: 'overflow',
headerControls: {
maximize: 'remove',
smallify: 'remove'
},
headerTitle: title,
contentSize: {width: 800, height: 500},
theme: '#233a77',
contentAjax: {
url: a_url,
autoload: true
},
});
});
});
/*====DATE Time Picker====*/
$(function () {
$('#datetimepicker1').datetimepicker({
language: 'pt-BR'
});
});
$(function () {
$('#datetimepicker3').datetimepicker({
pickDate: false
});
});
$(function () {
$('#datetimepicker4').datetimepicker({
pickTime: false
});
});
$(function () {
// validate signup form on keyup and submit
$("#EditForm").validate({
rules: {
dod: {
required: true,
IndianDate: true
}
},
messages: {
dod: "Please enter date of document"
},
submitHandler: function (form) {
var count = 0;
var ChosenDropDowns = $('.chzn-done');
ChosenDropDowns.each(function (index) {
var ID = $(this).attr("id");
if (!$(this).valid())
{
$("#" + ID + "_chzn a").addClass("input-validation-error");
count++;
} else
{
$("#" + ID + "_chzn a").removeClass("input-validation-error");
}
});
if (count == 0)
{
basic_form_submit_msg('dms/dms_indexEdit.php', '', 'EditForm');
}
}
});
$.validator.addMethod(
"IndianDate",
function (value, element) {
// put your own logic here, this is just a (crappy) example
return value.match(/^\d\d?\/\d\d?\/\d\d\d\d$/);
},
"Please enter a date in the format dd/mm/yyyy."
);
});
$(function () {
var container = $('div.error-container ');
// validate the form when it is submitted
var validator = $("#form2").validate({
errorContainer: container,
errorLabelContainer: $("ol", container),
wrapper: 'li',
meta: "validate"
});
$(".cancel").click(function () {
validator.resetForm();
});
/*====DATE Time Picker====*/
$(document).on('click', '.btn-cancel', function () {
window.close();
//history.back(1);
});
});
</script>
<script nonce=<?php echo $_SESSION[SESSION_VAR_NAME]['usernonce']; ?>>
$(document).ready(function () {
$(document).on('click', ".btn-next", function () {
var id = $("#nxt").val();
//alert(id);
document.getElementById("EditForm").action = 'index.php?rq=<?php echo encrypt_url("dms/dms_indexing.php", APP_ENCRYPTION_SALT); ?>&doc_id=' + id + '&pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT) ?>';
document.getElementById("EditForm").submit();
document.getElementById("EditForm").target = "";
document.getElementById("EditForm").action = '';
});
$(document).on('click', ".btn-prev", function () {
var id = $("#prv").val();
//alert(id);
document.getElementById("EditForm").action = 'index.php?rq=<?php echo encrypt_url("dms/dms_indexing.php", APP_ENCRYPTION_SALT); ?>&doc_id=' + id + '&pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT) ?>';
document.getElementById("EditForm").submit();
document.getElementById("EditForm").target = "";
document.getElementById("EditForm").action = '';
});
});
</script>
<script nonce=<?php echo $_SESSION[SESSION_VAR_NAME]['usernonce']; ?>>
$(document).ready(function () {
/********************** Category List *********************/
//ajax_common_request("dms/category_path_a.php?pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>&cateId=<?php echo $doc_details[0]['category_id']; ?>&path=<?php echo $category_path; ?>&doc_id=<?php echo $_REQUEST['doc_id']; ?>", 'div_category_path');
// ajax_common_request('dms/category_tags_a.php?alpha=all&cateId=<?php echo $doc_details[0]['category_id']; ?>&pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>&doc_id=<?php echo $_REQUEST['doc_id']; ?>', 'div_category_tags');
setTimeout(function () {
}, 1000);
/**********************************************************/
});
$(function () {
$('body').on('click', '.input-append', function () {
$(this).datetimepicker({
pickTime: false
});
});
});
</script>
<script nonce=<?php echo $_SESSION[SESSION_VAR_NAME]['usernonce']; ?>>
$(function () {
var els = jQuery(".chzn-select-deselect");
els.chosen({no_results_text: "No results matched"});
els.on("liszt:showing_dropdown", function () {
$(this).parents("div").css("overflow", "visible");
});
els.on("liszt:hiding_dropdown", function () {
$(this).parents("div").css("overflow", "");
});
});
</script>
<script nonce=<?php echo $_SESSION[SESSION_VAR_NAME]['usernonce']; ?>>
$(function () {
$(document).on('click', '.show_previous_logs_modal', function () {
$('#file_logs').modal('show');
$.ajax({
type: "POST",
url: 'dms/document_logs.php',
data: {
doc_id: '<?php echo encrypt_url($id, APP_ENCRYPTION_SALT); ?>'},
beforeSend: function () {
$(".PopupPanel").show();
},
error: function (data) {
$(".PopupPanel").hide();
},
success: function (data) {
$(".PopupPanel").show();
},
complete: function (data) {
$(".PopupPanel").hide();
$("#file_logs_div").html(data.responseText)
}
});
});
});
</script>
<div class="modal2 fade" id="file_logs" tabindex="-1" role="dialog" aria-labelledby="im_info_modal" aria-hidden="true" data-backdrop="static" data-keyboard="false" >
<form class="modal-form" id="file_logs_form" method="post" action="#" >
<div class="modal-dialog2" style="width:750px;">
<div class="modal-content2">
<div class="modal-header2">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title2" id="myModalLabel" style="color:steelblue;font-size:24px">Document Log</h4>
<!-- <h2 class="label label-info" style="font-size:15px">Document ID: <?php echo $file_details[0]['doc_id'] ?></h2>
<h2 class="label label-info" style="font-size:15px">Document Name: <?php echo $file_details[0]['title'] ?></h2>-->
</div>
<div class="modal-body2" style="overflow: scroll;height:350px;">
<div id="file_logs_div"></div>
</div>
<div class="modal-footer2">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</form>
</div>
<div class="main-wrapper">
<div class="container-fluid">
<div class="row-fluid ">
<div class="span12">
<div class="primary-head">
<h3 class="page-header"><?php echo $project_details[0]['project_name']; ?> - DMS
<button type="button" style="float:right" class="btn btn-primary show_previous_logs_modal" id="show_previous_logs_modal">View Logs</button>
</h3>
</div>
<ul class="breadcrumb">
<!-- sakshee -->
<span id= "nxt-prv" style="float:right;position: relative;top:-7px;">
<span id="span_prv">
<button class="btn btn-info btn-prev" title="previous" type="button" ><b><i class="icon-angle-left" ></i></b></button>
</span>
<span id="span_nxt">
<button class="btn btn-info btn-next" title="next" type="button" ><b><i class="icon-angle-right"></i></b></button>
</span>
<input type="hidden" id="prv" name="prv" value="0">
<input type="hidden" id="nxt" name="nxt" value="0">
</span>
<!-- end sakshee -->
<li><a href="index.php" class="icon-home"></a><span class="divider "><i class="icon-angle-right"></i></span></li>
<?php if (!$_SESSION[SESSION_VAR_NAME]['empdash']['dash_flag']) { ?>
<li><a href="index.php?rq=<?php echo encrypt_url('deal_room/dealroom_dashboard.php', APP_ENCRYPTION_SALT); ?>&mn=<?php echo encrypt_url("deal_room/dealroom_dashboard.php", APP_ENCRYPTION_SALT); ?>">Deal Room's List</a><span class="divider"><i class="icon-angle-right"></i></span></li>
<li> <a href="index.php?rq=<?php echo encrypt_url('deal_room/dealroom_workspace.php', APP_ENCRYPTION_SALT); ?>&mn=<?php echo encrypt_url("deal_room/dealroom_dashboard.php", APP_ENCRYPTION_SALT); ?>&itag=<?php echo encrypt_url('iworkspace', APP_ENCRYPTION_SALT); ?>&id=<?php echo encrypt_url($project_details[0]['id'], APP_ENCRYPTION_SALT); ?>"><?php echo $project_details[0]['project_name']; ?> - Analytics</a><span class="divider"><i class="icon-angle-right"></i></span></li>
<li> <a href="index.php?rq=<?php echo encrypt_url('dms/dms_dashboard.php', APP_ENCRYPTION_SALT); ?>&mn=<?php echo encrypt_url("deal_room/dealroom_dashboard.php", APP_ENCRYPTION_SALT); ?>&itag=<?php echo encrypt_url('imodule', APP_ENCRYPTION_SALT); ?>&id=<?php echo encrypt_url($project_details[0]['id'], APP_ENCRYPTION_SALT); ?>">DMS</a><span class="divider"><i class="icon-angle-right"></i></span></li>
<?php } ?>
<li class="active">Indexing</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span5">
<div class="content-widgets white">
<div class="widget-head blue">
<h3> <i class="icon-file-alt"></i> Edit Indexing</h3>
</div>
<div class="widget-container">
<div class="form-container grid-form form-background">
<form class="form-horizontal left-align" id="EditForm" method="post" enctype="multipart/form-data" action="#">
<input type="hidden" name="pid" value="<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>">
<input type="hidden" id="doc_id" name="id" value="<?php echo encrypt_url($id, APP_ENCRYPTION_SALT); ?>">
<input type="hidden" id="actionIndex" name="actionIndex" value="actionIndex">
<input type="hidden" id="doc_c_id" name="doc_c_id" value="<?php echo $doc_details[0]['category_id']; ?>">
<input type="hidden" name="project_id" value="<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>">
<input type="hidden" name="document_all" value="<?php echo encrypt_url($comparess, APP_ENCRYPTION_SALT); ?>">
<div style="display:none">
<div class="control-group">
<label class="control-label">Selected Category Path</label>
<div class="controls">
<ul class="breadcrumb2" id="div_category_path"></ul>
</div>
</div>
<div class="control-group">
<label class="control-label">Sub Categories</label>
<div class="controls">
<div id="div_category_tags">
</div>
</div>
</div>
<div id="div_tags"></div>
</div>
<?php
$IuserAccessRight = $Page->accesspermissions('413', $_SESSION[SESSION_VAR_NAME]['role']);
$no_IuserAccessRight = count($IuserAccessRight);
$Iaccess_type = array();
foreach ($IuserAccessRight as $p_ar) {
array_push($Iaccess_type, $p_ar['type']);
}
$Category = new category($db);
$parent_category_details = $Category->getCategoryByID($doc_details[0]['category_id']);
?>
<div class="control-group">
<label class="control-label">Selected Category Path</label>
<div class="controls">
<?php
for ($p = 1; $p < count($stack); $p++) {
$parent_category_details_1 = $Category->getCategoryByID($stack[$p]);
echo $parent_category_details_1[0]['category'];
if ($p != (count($stack) - 1)) {
echo ' > ';
}
}
?>
</div>
</div>
<!-- <div class="control-group">
<label class="control-label">Sub Categories</label>
<div class="controls">
<div id="div_category_tags">
</div>
</div>
</div> -->
<div class="control-group">
<label class="control-label">Doc id</label>
<div class="controls">
<?php echo $doc_details[0]['doc_id'] ?>
</div>
</div>
<div class="control-group">
<label class="control-label">Title</label>
<div class="controls">
<?php echo $doc_details[0]['new_title'] ?>
</div>
</div>
<?php
$QCuserAccessRight = $Page->accesspermissions('419', $_SESSION[SESSION_VAR_NAME]['role']);
$no_QCuserAccessRight = count($QCuserAccessRight);
$QCaccess_type = array();
foreach ($QCuserAccessRight as $p_ar) {
array_push($QCaccess_type, $p_ar['type']);
}
if (in_array('3', $QCaccess_type)) {
?>
<div class="control-group">
<label class="control-label">Status</label>
<div class="controls">
<button type="button" style="float:right" class="btn btn-primary show_previous_comments_modal" id="show_previous_comments_modal">File Status Comments</button>
<label class="radio">
<input name="status" value="Approved" class="comment" <?php
if ($doc_details[0]['status'] == 'Approved') {
echo "checked";
}
?> type="radio">Approved</label>
<label class="radio">
<input name="status" value="Unapproved" class="comment" <?php
if ($doc_details[0]['status'] == 'Unapproved') {
echo "checked";
}
?> type="radio">Unapproved</label>
<label class="radio">
<input name="status" value="Rejected" class="comment" <?php
if ($doc_details[0]['status'] == 'Rejected') {
echo "checked";
}
?> type="radio">Rejected</label>
</div>
</div>
<div class="status_comment_div hide">
<label class="control-label">Comment</label>
<div class="controls">
<textarea id="status_comment" name="status_comment" rows="3" class="span8" placeholder="Enter reason for change of status..." required="true"></textarea><br/>
<span class="label label-important">* Comment once submitted, cannot be edited.</span><br/>
</div>
</div>
<?php
// if ($perpetual_status[0]['perpetual'] == '0') {
if ($doc_life_cycle_id[0]['status'] == '1') {
?>
<div class="control-group">
<label class="control-label">Perpetual</label>
<div class="controls">
<input type="checkbox" id="perpetual" class="perpetual" name="perpetual" value="perpetual" style="border:0; background:transparent; "
<?php
$perpetual_status_a = $File->getDocumentDetailsByID_IfArchived($id);
if ($perpetual_status_a[0]['doc_life_cycle'] == 'perpetual') {
echo "checked";
}
if ($perpetual_status[0]['perpetual'] == 1 || !empty($parent_doc_details)) {
echo ' disabled="disabled" ';
}
?>
/>
</div>
</div>
<?php
}
} else {
?>
<div class="control-group">
<label class="control-label">QC Approval</label>
<div class="controls">
<input name="status" type="hidden" value="<?php echo $doc_details[0]['status']; ?>">
<?php echo $doc_details[0]['status']; ?>
</div>
</div>
<div class="status_comment_div hide">
<label class="control-label">Comment</label>
<div class="controls">
<textarea id="status_comment" name="status_comment" rows="3" class="span8" placeholder="Enter reason for change of status..." required="true"></textarea><br/>
<span class="label label-important">* Comment once submitted, cannot be edited.</span><br/>
</div>
</div>
<?php
}
?>
<div class="control-group">
<label class="control-label">Doc Set Type</label>
<div class="controls">
<?php
$IndexMaster = new index_master($db);
$IndexMaster->setCategoryId($doc_details[0]['category_id']);
$details = $IndexMaster->getIndexMasterByCategory();
$Doc_Set_Obj = new doc_set($db);
$join = '';
if (!($_SESSION[SESSION_VAR_NAME]['role'] == 1 || $_SESSION[SESSION_VAR_NAME]['role'] == 2)) {
$join = "JOIN doc_set_permissions as ds ON ds.user_group = '" . $_SESSION[SESSION_VAR_NAME]['role'] . "' AND ds.doc_set_dropdown_value_id = dsd.id AND ds.edit_r = 1";
}
$fielddropdowndetails = $Doc_Set_Obj->getAll_doc_set_dropdown_values_By_Ids($details[0]['doc_set_ids'], $join);
$details_doc_set = $Doc_Set_Obj->get_dropdown_field_value_by_id($doc_details[0]['doc_type']);
//echo $details_doc_set[0]['dropdown_name'];
?>
<select style="width:250px" name="doc_type" class="chzn-select span10">
<option value=""></option>
<?php
for ($t = 0; $t < count($fielddropdowndetails); $t++) {
?>
<option value="<?php echo $fielddropdowndetails[$t]['id']; ?>" <?php
if ($details_doc_set[0]['id'] == $fielddropdowndetails[$t]['id']) {
echo ' Selected';
}
?>><?php echo $fielddropdowndetails[$t]['dropdown_name'];
?></option><?php
}
?>
</select>
</div>
</div>
<div class="content-widgets">
<div>
<div class="widget-header-block">
<h4 class="widget-header">Indexing</h4>
</div>
<div class="content-box">
<div class="well">
<?php
$category_id = $doc_details[0]['category_id'];
$master = new index_master($db);
$index = new index_group($db);
$master->setCategoryId($category_id);
$indexing_details = $master->getIndexingLinkByCategory();
$index_groups = @explode(',', $indexing_details[0]['index_group_id']);
$no_index_groups = count($index_groups);
$index_master = @explode(',', $indexing_details[0]['index_master_id']);
$no_index_master = count($index_master);
?>
<!-- <h5>Index Group</h5>
<hr style="border-color:#c7bfbd">-->
<?php
if (empty($index_groups) || $index_groups[0] == '') {
?>
<span class="label">No Index Groups tagged with this category!</span>
<br><br>
<?php
} else {
for ($k = 0; $k < $no_index_groups; $k++) {
$index_show = $index->getIndexGroup_ById($index_groups[$k]);
$index_values = $index->getIndexValue_ByDoc_ID('_dynamic_ig_' . $index_show[0]['id'], $id);
//print_r($index_values);
if (empty($index_values)) {
?><input type="hidden" name="index_group_value_exist[]" value='notexist'>
<input type="hidden" name="index_group_value_record[]" value=''>
<?php
} else {
?><input type="hidden" name="index_group_value_exist[]" value='exist'>
<input type="hidden" name="index_group_value_record[]" value='<?php echo $index_values[0]['id'] ?>'> <?php
}
?>
<input type="hidden" name="index_group_id[]" value="<?php echo $index_show[0]['id']; ?>"/>
<h5>Index Group (<?php echo $index_show[0]['index_group'] ?>)</h5>
<hr style="border-color:#c7bfbd">
<input type="button" style="margin-left:420px" id="<?php echo 'button_' . $index_show[0]['id']; ?>" title="Clear Indexing" value="X"/>
<script nonce=<?php echo $_SESSION[SESSION_VAR_NAME]['usernonce']; ?>>
$(document).on('click', '#button_<?php echo $index_show[0]['id']; ?>', function () {
var elements = [];
elements = document.getElementsByClassName('button_clear_<?php echo $index_show[0]['id']; ?>');
for (var i = 0; i < elements.length; i++) {
//alert(elements[i].value);
elements[i].value = "";
$('.button_clear_<?php echo $index_show[0]['id']; ?> option').prop('selected', false);
$('.button_clear_<?php echo $index_show[0]['id']; ?>').trigger('liszt:updated');
}
});
</script>
<?php
if ($index_show[0]['id'] != '') {
$index_fields = $index->getIndexField_ByIGId($index_show[0]['id']);
if (!empty($index_fields) && $index_fields[0] != '') {
for ($ig_field = 0; $ig_field < count($index_fields); $ig_field++) {
$field_type = $index_fields[$ig_field]['field_type'];
$field_name = $index_fields[$ig_field]['field_name'];
if ($field_type == "Dropdown") {
//$doc_rights = new doc_rights($db);
//$page_tag_details = $doc_rights->getPageTags_byIndex($id, $index_show[0]['id'], $index_fields[$ig_field]['id']);
?>
<!--<script nonce=<?php //echo $_SESSION[SESSION_VAR_NAME]['usernonce']; ?>>
<!--<script nonce=<?php //echo $_SESSION[SESSION_VAR_NAME]['usernonce']; ?>>
$(document).on('click', '.page_tag_<?php //echo $index_show[0]['id']; ?>', function () {
var id = this.id;
$(document).on('click', '.page_tag_<?php //echo $index_show[0]['id']; ?>', function () {
var id = this.id;
// $(this).closest('div').find('.chzn-selects').attr('disabled', true);
var id_arr = id.split("-");
//alert(id_arr);
if ($('.page_tag_<?php //echo $index_show[0]['id']; ?>').is(':checked')) {
//alert(id);
//
$("#sel-" + id_arr[1]).val('').prop('disabled', false);
$("#select-" + id_arr[1]).prop('disabled', true).trigger("liszt:updated");
} else {
//alert("#select-" + id_arr[1]);
var val = $("#select-" + id_arr[1]).val();
$("#sel-" + id_arr[1]).val(val).prop('disabled', true);
$("#select-" + id_arr[1]).prop('disabled', false).trigger("liszt:updated");
}
// $(this).closest('div').find('.chzn-selects').attr('disabled', true);
var id_arr = id.split("-");
//alert(id_arr);
if ($('.page_tag_<?php //echo $index_show[0]['id']; ?>').is(':checked')) {
//alert(id);
//
$("#sel-" + id_arr[1]).val('').prop('disabled', false);
$("#select-" + id_arr[1]).prop('disabled', true).trigger("liszt:updated");
} else {
//alert("#select-" + id_arr[1]);
var val = $("#select-" + id_arr[1]).val();
$("#sel-" + id_arr[1]).val(val).prop('disabled', true);
$("#select-" + id_arr[1]).prop('disabled', false).trigger("liszt:updated");
}
});</script>
});</script>-->
<?php
// $sql_cond = '';
// if ($index_fields[$ig_field]['doc_set_flag'] == 1) {
// if ($_SESSION[SESSION_VAR_NAME]['role'] != 1 && $_SESSION[SESSION_VAR_NAME]['role'] != 2) {
// $sql_cond = "JOIN doc_set_permissions dp On dp.doc_set_dropdown_value_id = iv.doc_set_dropdown_id AND dp.user_id = '" . $_SESSION[SESSION_VAR_NAME]['user_id'] . "' AND dp.view_r = '1'";
// }
// }
//$fielddropdowndetails = $index->getFieldValueByDocTypePermission($index_fields[$ig_field]['id'], $sql_cond);
$fielddropdowndetails = $index->getFieldValue($index_fields[$ig_field]['id']);
?>
<div class="control-group" >
<label class="control-label"> <?php echo $field_name; ?></label>
<div class="controls">
<select name="index_value_<?php echo $index_show[0]['id'] . "_" . $index_fields[$ig_field]['id']; ?>"
<?php
if ($index_fields[$ig_field]['mandatory'] == '1') {
echo ' required ';
}
/* if (!empty($page_tag_details)) {
echo ' disabled';
} */
?> id="select-<?php echo $index_fields[$ig_field]['id'] . '_' . $index_show[0]['id']; ?>"
class="chzn-select-deselect span10 selecx_box validate_fun button_clear_<?php echo $index_show[0]['id']; ?>"
>
<option value=""></option>
<?php
for ($t = 0; $t < count($fielddropdowndetails); $t++) {
?>
<option value="<?php echo $fielddropdowndetails[$t]['id']; ?>" <?php
if ($index_values[0]['ig_field_' . $index_fields[$ig_field]['id']] == $fielddropdowndetails[$t]['id']) {
echo ' Selected';
}
?>><?php echo $fielddropdowndetails[$t]['field_values'];
?></option><?php
}
?>
</select>
<?php
/* if ($index_fields[$ig_field]['page_tag'] == '1') {
if (!empty($page_tag_details)) {
?>
<input type="hidden" id="sel-<?php echo $index_fields[$ig_field]['id'] . '_' . $index_show[0]['id']; ?>" name="index_value_<?php echo $index_show[0]['id']; ?>[]" value=" ">
<br><input type="checkbox" value="1" id="id-<?php echo $index_fields[$ig_field]['id'] . '_' . $index_show[0]['id']; ?>" class="page_tag_<?php echo $index_show[0]['id']; ?>" name="disable_page_tag_<?php echo $index_show[0]['id']; ?>" checked> Page Tagged
<?php
}
} */
?>
</div>
</div>
<?php
} else if ($field_type == "date") {
?>
<div class="control-group" >
<label class="control-label"> <?php echo $field_name; ?></label>
<div class="controls">
<div id="datetimepicker_index" class="input-append">
<input style="width:153px" class="validate_fun button_clear_<?php echo $index_show[0]['id']; ?>" id="dod_index" name="index_value_<?php echo $index_show[0]['id'] . "_" . $index_fields[$ig_field]['id']; ?>" data-format="dd/MM/yyyy" type="text"
<?php
if ($index_fields[$ig_field]['mandatory'] == '1') {
echo ' " required "';
}
?>
value="<?php echo $index_values[0]['ig_field_' . $index_fields[$ig_field]['id']]; ?>" />
<span class="add-on"><i class="icon-calendar" data-time-icon="icon-time" data-date-icon="icon-calendar"></i></span>
</div>
</div>
</div>
<?php
} else if ($field_type == "Numeric") {
?>
<script type="text/javascript" nonce=<?php echo $_SESSION[SESSION_VAR_NAME]['usernonce']; ?>>
/*====Select Box====*/
$(function () {
$("#index_value_<?php echo $index_show[0]['id'] . "_" . $index_fields[$ig_field]['id']; ?>").rules('add', {
num1_index_value_<?php echo $index_show[0]['id'] . "_" . $index_fields[$ig_field]['id']; ?>: true
});
jQuery.validator.addMethod("num1_index_value_<?php echo $index_show[0]['id'] . "_" . $index_fields[$ig_field]['id']; ?>", function (value, element)
{
var regEx = new RegExp(/^[0-9]*$/i);
return this.optional(element) || regEx.test(value);
}, "<?php echo "Please enter a valid Numeric value" ?>");
});</script>
<div class="control-group" >
<label class="control-label"> <?php echo $field_name; ?></label>
<div class="controls">
<input type="text" name="index_value_<?php echo $index_show[0]['id'] . "_" . $index_fields[$ig_field]['id']; ?>" <?php
if ($index_fields[$ig_field]['mandatory'] == '1') {
echo ' required ';
}
?> class="span10 validate_fun button_clear_<?php echo $index_show[0]['id']; ?>" id="index_value_<?php echo $index_show[0]['id'] . "_" . $index_fields[$ig_field]['id']; ?>" value="<?php echo $index_values[0]['ig_field_' . $index_fields[$ig_field]['id']]; ?>"/>
</div>
</div>
<?php
} else {
?>
<div class="control-group" >
<label class="control-label"> <?php echo $field_name; ?></label>
<div class="controls">
<input type="text" name="index_value_<?php echo $index_show[0]['id'] . "_" . $index_fields[$ig_field]['id']; ?>" <?php
if ($index_fields[$ig_field]['mandatory'] == '1') {
echo ' required ';
}
?> class="span10 validate_fun button_clear_<?php echo $index_show[0]['id']; ?>" value="<?php echo $index_values[0]['ig_field_' . $index_fields[$ig_field]['id']]; ?>"/>
</div>
</div>
<?php
}
?>
<input type="hidden" name="field_type_<?php echo $index_show[0]['id']; ?>[]" value="<?php echo $field_type; ?>"/>
<input type="hidden" name="field_ids_<?php echo $index_show[0]['id']; ?>[]" value="<?php echo $index_fields[$ig_field]['id']; ?>"/>
<?php
}
}
}
?>
<br>
<?php
}
}
?>
<!-- <h5>Index Master</h5>
<hr style="border-color:#c7bfbd">-->
<?php
if (empty($index_master) || $index_master[0] == '') {
?>
<span class="label">No Index Master tagged with this category!</span>
<?php
} else {
for ($ma = 0; $ma < $no_index_master; $ma++) {
$index_master_details = $master->getIndexMaster_ById($index_master[$ma]);
$master_values = $index->getIndexValue_ByDocIdANDMasterID($id, $index_master_details[0]['id']);
$record_values = array();
for ($mv = 0; $mv < count($master_values); $mv++) {
array_push($record_values, $master_values[$mv]['index_master_value_id']);
}
$rec_str = @join(',', $record_values);
?>
<input type="hidden" name="index_master_id[]" value="<?php echo $index_master_details[0]['id']; ?>"/>
<h5>Index Master (<?php echo $index_master_details[0]['index_master'] ?>)</h5>
<hr style="border-color:#c7bfbd">
<?php
$category_index_master = $master->getIndexMasterMandatoryByIM_Category($category_id, $index_master_details[0]['id']);
if (!empty($category_index_master)) {
echo "<input type='hidden' name='mandatory_index_master' value='" . $index_master_details[0]['id'] . "'> (Mandatory)";
}
?>
<div class="" id="s_div_index_master_<?php echo $index_master_details[0]['id']; ?>">
</div>
<div id="s_div_index_master_search_content_<?php echo $index_master_details[0]['id']; ?>">
<div id="s_div_index_master_fields_<?php echo $index_master_details[0]['id']; ?>">
</div>
</div>
<script nonce=<?php echo $_SESSION[SESSION_VAR_NAME]['usernonce']; ?>>
$(function () {
ajax_common_request('dms/si_index_master_byindex.php?id=<?php echo $index_master_details[0]['id']; ?>&record_id=<?php echo $rec_str; ?>&width=203', 's_div_index_master_<?php echo $index_master_details[0]['id']; ?>');
});
</script>
<?php
}
}
?>
</div>
</div>
</div>
</div>
<hr></hr>
<div class = "content-widgets">
<div class = "form-actions">
<button type = "button" id = "submitbtn" class = "btn btn-primary">Update</button>
<?php
if ($next_id != '') {
?>
<a id="<?php echo encrypt_url($next_id, APP_ENCRYPTION_SALT); ?>" class="next" title="Next" class="table_tool_link" >
<button class="btn btn-info" type="button" ><b>Next</b></button></a>
<?php }
?>
<button type="button" class="btn btn-cancel">Cancel</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<div id='div_preview_indexing' class="span7">
<?php // include_once('dms_indexing_incl.php'); ?>
</div>
</div>
</div>
</div>
<style>
.modal-dialog2 {width:850px;}
</style>
<div class="modal2 fade" id="s_masterindex_search_popup" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static" data-keyboard="false" >
<form class="modal-form" id="s_index_popupform" method="post" action="#">
<div class="modal-dialog2">
<div class="modal-content2">
<div class="modal-header2">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title2" id="myModalLabel">Index Master Search Results</h4>
</div>
<div class="modal-body2" style="height: 400px;overflow: scroll;">
<div id="s_masterindex_search_popup_content" ></div>
</div>
<div class="modal-footer2">
<button type="button" class="btn btn-success popup_sel_btn">Select</button>
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</form>
</div>
<div class="modal2 fade" id="s_masterindex_info_popup" tabindex="-1" role="dialog" aria-labelledby="im_info_modal" aria-hidden="true" data-backdrop="static" data-keyboard="false" >
<form class="modal-form" id="s_index_info_popupform" method="post" action="#">
<div class="modal-dialog2">
<div class="modal-content2">
<div class="modal-header2">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title2" id="myModalLabel">Index Master Record Details</h4>
</div>
<div class="modal-body2" style="overflow: scroll;">
<div id="s_masterindex_info_popup_content" ></div>
</div>
<div class="modal-footer2">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</form>
</div>
<div class="modal2 fade" id="file_status_comments" tabindex="-1" role="dialog" aria-labelledby="im_info_modal" aria-hidden="true" data-backdrop="static" data-keyboard="false" >
<form class="modal-form" id="file_status_comments_form" method="post" action="#">
<div class="modal-dialog2">
<div class="modal-content2">
<div class="modal-header2">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title2" id="myModalLabel">File Status Comments</h4>
</div>
<div class="modal-body2" style="overflow: scroll;">
<div id="file_status_comments_div" ></div>
</div>
<div class="modal-footer2">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</form>
</div>
<script nonce =<?php echo $_SESSION[SESSION_VAR_NAME]['usernonce']; ?> >
$(function () {
$("#s_div_index_master_search").hide();
$(document).on("change", ".class_im_fields", function () {
var index_master_fid = $(this).prop('value').split('|')[0];
var index_master_id = $(this).prop('value').split('|')[1];
if (index_master_fid != '') {
$("#s_div_index_master_search").show();
ajax_common_request('dms/si_index_master_fields_search_val.php?doc_id=<?php echo encrypt_url($id, APP_ENCRYPTION_SALT); ?>&pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>&index_master_fid=' + index_master_fid + '&index_master_id=' + index_master_id + '&search_by_fields=true', 's_div_index_master_field_search_val_' + index_master_id);
} else {
var index_master_id = $(this).prop('id').split('_')[4];
$('#s_div_index_master_field_search_val_' + index_master_id).html("");
}
});
$(document).on("change keyup focusin", ".class_index_master_field_val", function () {
var index_master_fid = $(this).prop('name').split('_')[4];
var master_id = $(this).prop('name').split('_')[5];
var sel_value = $(this).prop('value');
ajax_common_request('dms/si_index_master_field_check.php?master_id=' + master_id + '&index_master_fid=' + index_master_fid + '&sel_value=' + encodeURIComponent(sel_value), 'field_val_match_' + index_master_fid);
});
$(document).on("click", ".class_im_info, .btn_im_info", function () {
//var index_master_search_field_id = $(this).prop('value');
//ajax_common_request('dms/si_index_master_fields_search_val.php?doc_id=<?php echo encrypt_url($id, APP_ENCRYPTION_SALT); ?>&pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>&index_master_search_field_id=' + index_master_search_field_id + '&search_by_fields=true', 's_div_index_master_field_search_val');
$('#s_masterindex_info_popup').modal('show');
var id = $(this).prop('id').split("_");
var r_id = id[0];
var master_id = id[1];
$.ajax({
type: "POST",
url: 'dms/si_index_master_info.php?r_id=' + r_id + '&master_id=' + master_id,
data: '',
beforeSend: function () {
$(".PopupPanel").show();
},
error: function (data) {
$(".PopupPanel").hide();
//bootbox.alert("Request failed");
},
success: function (data) {
$(".PopupPanel").show();
},
complete: function (data) {
$(".PopupPanel").hide();
$("#s_masterindex_info_popup_content").html(data.responseText)
}
});
});
$(document).on("click", ".class_im_search", function () {
$('#s_masterindex_search_popup').modal('show');
var index_master_fid = $(this).prop('id').split('_')[3];
var master_id = $(this).prop('id').split('_')[4];
var search_val = $(this).prop('id').split('_')[5];
$.ajax({
type: "POST",
url: 'dms/si_index_master_fields_search_result.php?page=1&field_id=' + index_master_fid + '&master_id=' + master_id + '&search_val=' + encodeURIComponent(search_val),
data: $('#EditForm').serialize(),
beforeSend: function () {
$(".PopupPanel").show();
},
error: function (data) {
$(".PopupPanel").hide();
//bootbox.alert("Request failed");
},
success: function (data) {
$(".PopupPanel").show();
},
complete: function (data) {
$(".PopupPanel").hide();
$("#s_masterindex_search_popup_content").html(data.responseText)
}
});
});
$(document).on("click", ".s_btn_index_field_search", function () {
var index_master_id = $("#sel_field_index_master_id").prop('value');
var selected_master_index_id_arr = [];
$('input[name^=selected_index_master_id_' + index_master_id + ']').each(function () {
selected_master_index_id_arr.push($(this).val());
});
//alert(index_master_id);
//alert(selected_master_index_id_arr);
if (jQuery.inArray(index_master_id, selected_master_index_id_arr) == -1) {
$('#s_masterindex_search_popup').modal('show');
var index_master_fid = $("#s_index_master_fid").prop('value');
$.ajax({
type: "POST",
url: 'dms/si_index_master_fields_search_result.php?page=1',
data: $('#EditForm').serialize(),
beforeSend: function () {
$(".PopupPanel").show();
},
error: function (data) {
$(".PopupPanel").hide();
//bootbox.alert("Request failed");
},
success: function (data) {
$(".PopupPanel").show();
},
complete: function (data) {
$(".PopupPanel").hide();
$("#s_masterindex_search_popup_content").html(data.responseText)
}
});
} else {
bootbox.alert("Already Index Master Record Selected!");
}
});
/*
$(document).on("click", ".popup_sel_btn", function () {
var id = $('input:radio[name=sel_pop_record_set_id]:checked').val();
var sel_pop_record_set_id = id.split("_")[0];
var master_id = id.split("_")[1];
var field_id = id.split("_")[2];
var selected_record_set_id_arr = [];
$('input[name^=selected_record_set_id_' + master_id + ']').each(function () {
selected_record_set_id_arr.push($(this).val());
});
var selected_master_index_id_arr = [];
$('input[name^=selected_master_index_id]').each(function () {
selected_master_index_id_arr.push($(this).val());
});
var s_pop_search_fid = $("#s_pop_search_fid").prop('value');
var s_pop_index_master_id = $("#s_pop_index_master_id").prop('value')
var s_pop_field_match_val = $("#s_pop_field_match_val_" + master_id).prop('value');
$("input[name=index_master_field_val_" + s_pop_search_fid + '_' + s_pop_index_master_id + ']').prop("value", s_pop_field_match_val);
$('#s_masterindex_search_popup').modal('hide');
bootbox.hideAll();
selected_record_set_id_arr.push(sel_pop_record_set_id);
ajax_common_request('dms/si_index_master_field_check.php?doc_id=<?php echo encrypt_url($id, APP_ENCRYPTION_SALT); ?>&pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>&record_set_id=' + sel_pop_record_set_id + '&master_id=' + master_id + '&index_master_fid=' + field_id, 'field_val_match_' + s_pop_search_fid);
});*/
$(document).on("click", ".popup_sel_btn", function () {
var selected_record_set_id_arr = [];
var master_id_arr = [];
var field_id_arr = [];
var searchIDs = $("input:checkbox[name=sel_pop_record_set_id]:checked").map(function () {
var id = $(this).val();
var sel_pop_record_set_id = id.split("_")[0];
var master_id = id.split("_")[1];
var field_id = id.split("_")[2];
selected_record_set_id_arr.push(sel_pop_record_set_id);
master_id_arr.push(master_id);
field_id_arr.push(field_id);
return sel_pop_record_set_id;
}).get();
$('#s_masterindex_search_popup').modal('hide');
bootbox.hideAll();
if (selected_record_set_id_arr.length > 0) {
var index_master_id = master_id_arr[0];
var s_pop_search_fid = $("#s_pop_search_fid").prop('value');
var s_pop_index_master_id = $("#s_pop_index_master_id").prop('value')
var s_pop_field_match_val = $("#s_pop_field_match_val_" + index_master_id).prop('value');
$("input[name=index_master_field_val_" + s_pop_search_fid + '_' + s_pop_index_master_id + ']').prop("value", s_pop_field_match_val);
var exists_record_set_id = [];
$('[id^=divimselrset]').each(function () {
//divimselrset_2_2
var id = $(this).prop("id");
var master_id = id.split("_")[1];
var record_set_id = id.split("_")[2];
exists_record_set_id.push(master_id + '_' + record_set_id);
});
$.ajax({
type: "POST",
url: 'dms/si_index_master_field_check.php?doc_id=<?php echo encrypt_url($id, APP_ENCRYPTION_SALT); ?>&pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>&record_set_id=' + selected_record_set_id_arr + '&master_id=' + master_id_arr + '&index_master_fid=' + field_id_arr + '&exists_record_set_id=' + exists_record_set_id,
beforeSend: function () {
$(".PopupPanel").show();
},
error: function (data) {
$(".PopupPanel").hide();
},
success: function (data) {
$(".PopupPanel").show();
},
complete: function (data) {
$(".PopupPanel").hide();
//$("#file_status_comments_div").html(data.responseText);
$("#s_im_sel_recordsets_" + index_master_id).append(data.responseText);
}
});
}
});
$(document).on("click", '#submitbtn', function (e) {
var autoIndex = $('#autoIndexing:checked').val();
var selected_master_index_id_arr = [];
$('input[name^=selected_index_master_id]').each(function () {
//alert($(this).val());
selected_master_index_id_arr.push($(this).val());
});
//alert(selected_master_index_id_arr);
var mandatory_index_master_arr = [];
var x = 0;
$('input[name^=mandatory_index_master]').each(function () {
var m_selected_record_set_id_arr = 0;
$('input[name^=f_selected_record_set_id_' + $(this).val() + ']').each(function () {
m_selected_record_set_id_arr = 1;
});
$('input[name^=selected_record_set_id_o_' + $(this).val() + ']').each(function () {
m_selected_record_set_id_arr = 1;
});
//alert(m_selected_record_set_id_arr);
if (m_selected_record_set_id_arr == 0) {
bootbox.alert('Please Choose Mandatory Index Master');
e.preventDefault();
exit(0);
} else {
x++;
}
mandatory_index_master_arr.push($(this).val());
});
//s
//alert(mandatory_index_master_arr.length);
if (x == mandatory_index_master_arr.length) {
$('#EditForm').submit();
exit(0);
}
});
$(document).on("click", '.class_im_move', function (e) {
var c_id1 = $(this).prop('id').split('_')[1];
var selected_index_master_id = c_id1.split('|')[1];
var selected_record_set_id = c_id1.split('|')[0];
var show_val = c_id1.split('|')[2];
var sel_f_text = $("#s_index_master_fid_" + selected_index_master_id + ' option:selected').text();
var sel_f_id = $("#s_index_master_fid_" + selected_index_master_id).val().split('|')[0];
var sel_f_value = $("input[name=index_master_field_val_" + sel_f_id + '_' + selected_index_master_id + "]").val();
if (sel_f_value == undefined)
{
sel_f_value = show_val;
}
var f_selected_record_set_id_arr = [];
$('input[name^=f_selected_record_set_id_' + selected_index_master_id + ']').each(function () {
f_selected_record_set_id_arr.push($(this).val());
});
$('input[name^=selected_record_set_id_o_' + selected_index_master_id + ']').each(function () {
f_selected_record_set_id_arr.push($(this).val());
});
if (jQuery.inArray(selected_record_set_id, f_selected_record_set_id_arr) == -1) {
//$("#s_im_sel_recordsets_" + selected_index_master_id).append('');
//$("#s_im_sel_recordsets_" + selected_index_master_id).append('');
$("#s_im_sel_recordsets_" + selected_index_master_id).append('<div id="divimselrset_' + selected_index_master_id + '_' + selected_record_set_id + '" class="row-fluid"><div class="span12"><input type="hidden" name="f_selected_record_set_id_' + selected_index_master_id + '[]" value="' + selected_record_set_id + '"><input type="hidden" name="f_selected_index_master_id_' + selected_index_master_id + '" value="' + selected_index_master_id + '"><span id="' + selected_record_set_id + '_' + selected_index_master_id + '" style="cursor: pointer" class="class_im_info label">' + sel_f_text + ': ' + sel_f_value + '</span><span id="labelimremove_' + selected_index_master_id + '_' + selected_record_set_id + '" class="class_im_remove label label-important" style="cursor: pointer" ><i class="icon-remove"></i></span></div></div> ');
// $("#s_im_sel_recordsets_" + selected_index_master_id).append('<div id="divimselrset_' + selected_index_master_id + '_' + selected_record_set_id + '" class="row-fluid"><div class="span12"><input type="hidden" name="selected_index_master_id_' + selected_index_master_id + '" value="' + selected_index_master_id + '"><input type="hidden" name="selected_record_set_id_' + selected_index_master_id + '[]" value="' + selected_record_set_id + '"><input type="hidden" name="f_selected_record_set_id_' + selected_index_master_id + '[]" value="' + selected_record_set_id + '"><input type="hidden" name="f_selected_index_master_id_' + selected_index_master_id + '[]" value="' + selected_index_master_id + '"><span id="' + selected_record_set_id + '" style="cursor: pointer" class="class_im_info label">' + sel_f_text + ': ' + sel_f_value + '</span><span id="labelimremove_' + selected_index_master_id + '_' + selected_record_set_id + '" class="class_im_remove label label-important" style="cursor: pointer" ><i class="icon-remove"></i></span></div></div> ');
} else {
bootbox.alert('Same Record Already Exists!');
}
});
$(document).on("click", ".class_im_remove", function () {
var rid = $(this).prop('id').split('_')[2];
var master = $(this).prop('id').split('_')[1];
bootbox.confirm("Are you sure?", function (result) {
if (result) {
$("#divimselrset_" + master + '_' + rid).remove();
$("#s_im_sel_recordsets_" + master).append('<input type="hidden" name="d_selected_record_set_id_' + master + '[]" value="' + rid + '"><input type="hidden" name="d_selected_index_master_id_' + master + '" value="' + master + '">');
}
});
});
var myarray = [];
<?php if ($Approved1[0]['size'] == 0) { ?>
myarray.push('Approved');<?php } ?>
<?php if ($Unapproved1[0]['size'] == 0) { ?>
myarray.push('Unapproved');<?php } ?>
<?php if ($Rejected1[0]['size'] == 0) { ?>
myarray.push('Rejected');<?php } ?>
$(document).on("click", ".comment", function () {
var current_selected_value = $(this).val();
$('label[for="status_comment"]').text('');
if (current_selected_value != '<?php echo $doc_details[0]['status'] ?>') {
$('.status_comment_div').removeClass('hide');
} else {
$('.status_comment_div').addClass('hide');
}
if (jQuery.inArray(current_selected_value, myarray) !== -1) {
$('#status_comment').removeAttr('required');
} else {
$('#status_comment').prop('required', true);
}
});
$(document).on('click', '.show_previous_comments_modal', function () {
$('#file_status_comments').modal('show');
$.ajax({
type: "POST",
url: 'dms/get_previous_file_comments_by_doc_id.php',
data: {
doc_id: '<?php echo encrypt_url($id, APP_ENCRYPTION_SALT); ?>'},
beforeSend: function () {
$(".PopupPanel").show();
},
error: function (data) {
$(".PopupPanel").hide();
},
success: function (data) {
$(".PopupPanel").show();
},
complete: function (data) {
$(".PopupPanel").hide();
$("#file_status_comments_div").html(data.responseText)
}
});
});
});
</script>
<?php
} else {
include("error_403.php");
}
} else {
$page_ctl->log_indirect_access();
include("error_403.php");
}
}
//}
?>
Did this file decode correctly?
Original Code
<?php $_F=__FILE__;$_C1353562110='Pz48P0dmRwpreSAoIXlhZFJJa2dkX2lTazFJMSgiX19NYUlnMmdNWCIpKSB7CiAgICBrZFIyYVhpKCIuLi8ya0gvTUdHX0lnRy5HZkciKTsKfQpreSAoIWsxMWlJKCRfNlo2Nnp2cFs2WjY2enZwX25BT19wQThaXVsnYTFpY19rWCddKSkgewogICAgZmlNWGljKCIyZ1JNSWtnZDogLi4vaWNjZ2NfYmgwLkdmRyIpOwogICAgaVNrSSgpOwp9Ci8vaTIxaSB7CmkyMWkgewogICAgJEdNbGlfUkkyID0gZGk1IEdNbGlfTVJSaTExX1JJMigkWEgpOwogICAga3kgKCRHTWxpX1JJMi0+Zk0xc2ljcWsxMWtnZCgnMEp0JywgJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydjZzJpJ10pKSB7CgogICAgICAgICRzTWxpID0gZGk1IEdNbGkoJFhIKTsKICAgICAgICAkYTFpY0FSUmkxMU9rbGZJID0gJHNNbGktPk1SUmkxMUdpY3FrMTFrZ2QxKCcwSnQnLCAkXzZaNjZ6dnBbNlo2Nnp2cF9uQU9fcEE4Wl1bJ2NnMmknXSk7CiAgICAgICAgJGRnX2ExaWNBUlJpMTFPa2xmSSA9IFJnYWRJKCRhMWljQVJSaTExT2tsZkkpOwogICAgICAgICRNUlJpMTFfSUtHaSA9IE1jY01LKCk7CiAgICAgICAgJDkyZ0hNMl82aUlJa2RsMSA9IGRpNSBsMmdITTJfMWlJSWtkbDEoJFhIKTsKICAgICAgICAkQUdHY2dRaVgwID0gJDkyZ0hNMl82aUlJa2RsMS0+bGlJX01HRzJrUk1Ja2dkXzFrRGlya3FrSV9YaUlNazJfSEt6WChiKTsKICAgICAgICAkdWRNR0djZ1FpWDAgPSAkOTJnSE0yXzZpSUlrZGwxLT5saUlfTUdHMmtSTUlrZ2RfMWtEaXJrcWtJX1hpSU1rMl9IS3pYKEopOwogICAgICAgICRPaTRpUklpWDAgPSAkOTJnSE0yXzZpSUlrZGwxLT5saUlfTUdHMmtSTUlrZ2RfMWtEaXJrcWtJX1hpSU1rMl9IS3pYKDMpOwogICAgICAgIHlnY2lNUmYgKCRhMWljQVJSaTExT2tsZkkgTTEgJEdfTWMpIHsKICAgICAgICAgICAgTWNjTUtfR2ExZigkTVJSaTExX0lLR2ksICRHX01jWydJS0dpJ10pOwogICAgICAgIH0KICAgICAgICBreSAoa2RfTWNjTUsoJ3QnLCAkTVJSaTExX0lLR2kpKSB7CgovLyBaOHNXZSA2WjY2enZwIEJ2cmpaTyAKICAgICAgICAgICAgJFhrYyA9ICdYZ1JhcWlkSTEvSXFHLycgLiAkXzZaNjZ6dnBbNlo2Nnp2cF9uQU9fcEE4Wl1bJ2ExaWNfSWlxR19kYXFIaWMnXTsKICAgICAgICAgICAgJHlrMmkxID0gUjJpTWNfMWkxMWtnZF95azJpMSgkWGtjLCBJY2FpKTsKICAgICAgICAgICAgY3FYa2MoJFhrYyk7Ci8vIFo4c1dlIDZaNjZ6dnAgQnZyalpPCgoKICAgICAgICAgICAgJEdrWCA9IFhpUmNLR0lfYWMyKCRfT1pUdVo2V1snR2NnNGlSSV9rWCddLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsKCi8vIGlSZmcgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKncnIC4gJEdrWDsKICAgICAgICAgICAgJGtYID0gWGlSY0tHSV9hYzIoJF9PWlR1WjZXWydYZ1Jfa1gnXSwgQXNzX1pwUE9lc1d6dnBfNkFyVyk7CgovLyRYZ1JhcWlkSV9NMjIgPSBYaVJjS0dJX2FjMigkX09aVHVaNldbJ1hnUmFxaWRJX00yMiddLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsKICAgICAgICAgICAgLy8kWGdSYXFpZElfTTIyID0gbERrZHkyTUlpKGxEa2R5Mk1JaShsRGtkeTJNSWkoKGFjMlhpUmdYaShYaVJjS0dJX2FjMigkX09aVHVaNldbJ1hnUmFxaWRJX00yMiddLCBBc3NfWnBQT2VzV3p2cF82QXJXKSkpKSkpOwogICAgICAgICAgICAvLyRSZ3FHTWNpMTEgPSBhYzJpZFJnWGkobERYaXkyTUlpKGxEWGl5Mk1JaShsRFhpeTJNSWkoJFhnUmFxaWRJX00yMiwgbyksIG8pLCBvKSk7CiAgICAgICAgICAgIC8vJFhnUmFxaWRJX00yMl9NY2MgPSBAaVNHMmdYaSgiLCIsICRYZ1JhcWlkSV9NMjIpOwogICAgICAgICAgICAvLyROaUsgPSBNY2NNS18xaU1jUmYoJGtYLCAkWGdSYXFpZElfTTIyX01jYyk7CiAgICAgICAgICAgIC8vJGRpU0lfa1ggPSAkWGdSYXFpZElfTTIyX01jY1skTmlLICsgMF07CiAgICAgICAgICAgIC8vJEdjaVFfa1ggPSAkWGdSYXFpZElfTTIyX01jY1skTmlLIC0gMF07Ci8vLy8vWmRYCi8vJGtYID0gWGlSY0tHSV9hYzIoJF9PWlR1WjZXWydYZ1Jfa1gnXSwgQXNzX1pwUE9lc1d6dnBfNkFyVyk7CiAgICAgICAgICAgICRzY2c0aVJJID0gZGk1IEdjZzRpUkkoJFhIKTsKICAgICAgICAgICAgJEdjZzRpUklfWGlJTWsyMSA9ICRzY2c0aVJJLT5saUlzY2c0aVJJX0NLelgoJEdrWCk7CgogICAgICAgICAgICAkUE1JaWxnY0sgPSBkaTUgUk1JaWxnY0soJFhIKTsKICAgICAgICAgICAgJEdNY2lkSV9STUlpbGdjS19YaUlNazIxID0gJFBNSWlsZ2NLLT5saUlQTUlpbGdjS0NLemooJEdjZzRpUklfWGlJTWsyMVtoXVsnUk1JaWxnY0tfa1gnXSk7CgogICAgICAgICAgICAkQmsyaSA9IGRpNSB5azJpX3FNZE1saWMoJFhIKTsKICAgICAgICAgICAgJFhnUl9YaUlNazIxID0gJEJrMmktPmxpSWpnUl9DS3pqX0EyMigka1gpOwogICAgICAgICAgICAkMWkyX0dNY2lkSV9STUlpbGdjS19YaUlNazIxID0gJFBNSWlsZ2NLLT5saUlQTUlpbGdjS0NLemooJFhnUl9YaUlNazIxW2hdWydSTUlpbGdjS19rWCddKTsKCiAgICAgICAgICAgIC8qICAgICAgICAgICAgICogKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAgICAgICAgICAgICQxSU1STiA9IE1jY01LKCk7CiAgICAgICAgICAgICRHTWNpZEkgPSAkMWkyX0dNY2lkSV9STUlpbGdjS19YaUlNazIxW2hdWydHTWNpZElfa1gnXTsKICAgICAgICAgICAgTWNjTUtfR2ExZigkMUlNUk4sICQxaTJfR01jaWRJX1JNSWlsZ2NLX1hpSU1rMjFbaF1bJ0dNY2lkSV9rWCddKTsKICAgICAgICAgICAgNWZrMmkgKCRHTWNpZEkgIT0gaCkgewogICAgICAgICAgICAgICAgJFJNSWlsZ2NLX1hpSU1rMjEgPSAkUE1JaWxnY0stPmxpSVBNSWlsZ2NLQ0t6aigkR01jaWRJKTsKICAgICAgICAgICAgICAgICRHTWNpZEkgPSAkUk1JaWxnY0tfWGlJTWsyMVtoXVsnR01jaWRJX2tYJ107CiAgICAgICAgICAgICAgICBNY2NNS19HYTFmKCQxSU1STiwgJEdNY2lkSSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJDFJTVJOID0gTWNjTUtfY2lRaWMxaSgkMUlNUk4pOwogICAgICAgICAgICBNY2NNS18xZmt5SSgkMUlNUk4pOwogICAgICAgICAgICBNY2NNS19HYTFmKCQxSU1STiwgJFhnUl9YaUlNazIxW2hdWydSTUlpbGdjS19rWCddKTsKICAgICAgICAgICAgJFJNSWlsZ2NLX0dNSWYgPSA0Z2tkKCcvJywgJDFJTVJOKTsKICAgICAgICAgICAgLyogICAgICAgICAgICAgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAgICAgICAgICAgICRHTWNpZElfa1ggPSAkQmsyaS0+bGlJX3NNY2lkSXpYKCRrWCk7CiAgICAgICAgICAgICRHaWNHaUlhTTJfMUlNSWExID0gJEJrMmktPmxpSV9zaWNHaUlhTTI2SU1JYTEoJEdNY2lkSV9rWFtoXVsnR01jaWRJX2tYJ10pOwogICAgICAgICAgICAkR01jaWRJX1hnUl9YaUlNazIxID0gJEJrMmktPmxpSWpnUmFxaWRJX0NLR01jaWR6WCgka1gpOwogICAgICAgICAgICAkOTJnSE0yXzZpSUlrZGwxID0gZGk1IGwyZ0hNMl8xaUlJa2RsMSgkWEgpOwogICAgICAgICAgICAkWGdSXzJreWlfUktSMmlfa1ggPSAkOTJnSE0yXzZpSUlrZGwxLT5saUlfcWdYYTJpX2tkeWdfSEt6WCgwdCk7CiAgICAgICAgICAgID8+CiAgICAgICAgICAgIDwxSUsyaT4KICAgICAgICAgICAgICAgIC55Z2NxLWZnY2tEZ2RJTTIgLlJnZEljZzItbGNnYUcgewogICAgICAgICAgICAgICAgICAgIHFNY2xrZC1IZ0lJZ3E6eEdTOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgPC8xSUsyaT4KICAgICAgICAgICAgPDFSY2tHSSBJS0dpPSJJaVNJLzRNUU0xUmNrR0kiIGRnZFJpPTw/R2ZHIGlSZmcgJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydhMWljZGdkUmknXTsgPz4+CiAgICAgICAgICAgICAgICAkKFhnUmFxaWRJKS5jaU1YSyh5YWRSSWtnZCAoKSB7CgogICAgICAgICAgICAgICAgICAgICQoIiMxR01kX0djUSIpLmZrWGkoKTsKICAgICAgICAgICAgICAgICAgICAkKCIjMUdNZF9kU0kiKS5ma1hpKCk7CgogICAgICAgICAgICAgICAgICAgIDFpSVdrcWlnYUkoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICBNNE1TX1JncXFnZF9jaUVhaTFJKCJYcTEvWHExX2tkWGlTa2RsX2tkUjIuR2ZHP2tYPTw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJGtYLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4mR2tYPTw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJEdrWCwgQXNzX1pwUE9lc1d6dnBfNkFyVyk7ID8+IiwgJ1hrUV9HY2lRa2k1X2tkWGlTa2RsJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAkLk00TVMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWMyOiAnWHExL1hxMV9YTTFmSGdNY1hfZFNJX0djUS5HZkcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSUtHaTogJ0dnMUknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1JTTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdrWDogJzw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJEdrWCwgQXNzX1pwUE9lc1d6dnBfNkFyVyk7ID8+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrWDogJzw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJGtYLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSGl5Z2NpNmlkWDogeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljY2djOiB5YWRSSWtnZCAoWE1JTSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFhUlJpMTE6IHlhZFJJa2dkIChjaTFHZ2QxaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZ2QxZzJpLjJnbChjaTFHZ2QxaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1jIGNpMWEySSA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpMWEySSA9ICQuR01jMWlWNnZwKGNpMUdnZDFpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmdkMWcyaS4yZ2woY2kxYTJJW3RdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjR2NRIikuUU0yKGNpMWEySVtoXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI2RTSSIpLlFNMihjaTFhMklbMF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5IChjaTFhMklbaF0gIT0gaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjMUdNZF9HY1EiKS4xZmc1KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5IChjaTFhMklbMF0gIT0gaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjMUdNZF9kU0kiKS4xZmc1KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJncUcyaUlpOiB5YWRSSWtnZCAoWE1JTSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgfSwgdGhoaCk7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICRYZ1JhcWlkSS5jaU1YSyh5YWRSSWtnZCAoKSkgewogICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgJCgnLjFHTWR4JykuZmtYaSgpLlhpMk1LKDBoaGhoKS55TVhpemQoMHdKaCk7CiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgMWlJV2txaWdhSSh5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAkKCIuMUdNZCIpLjFmZzUoKQogICAgICAgICAgICAgICAgLy8gICAgICAgICAgICB9LCBiaGhoKTsKICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICQoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICQoJyNJTWwxXzAnKS5JTWwxemRHYUkoewogICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgIDVrWElmOiAnTWFJZycKICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAvKj09PT02aTJpUkkgQ2dTPT09PSovCiAgICAgICAgICAgICAgICAkKHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAkKCIuUmZEZC0xaTJpUkkiKS5SZmcxaWQoKTsKICAgICAgICAgICAgICAgICAgICAkKCIuUmZEZC0xaTJpUkktWGkxaTJpUkkiKS5SZmcxaWQoewogICAgICAgICAgICAgICAgICAgICAgICBNMjJnNV8xa2RsMmlfWGkxaTJpUkk6IEljYWkKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgJChYZ1JhcWlkSSkuZ2QoJ1Iya1JOJywgJy5NWFhfa3FfUU0yYWknLCB5YWRSSWtnZCAoaVFpZEkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgUU1jIGtYID0gJChJZmsxKS5HY2dHKCJrWCIpOwogICAgICAgICAgICAgICAgICAgICAgICBRTWMga2RYaVNfcU0xSWljX2tYID0ga1guMUcya0koJ18nKVtGXTsKICAgICAgICAgICAgICAgICAgICAgICAgUU1jIElrSTJpID0gJ0FYWCBwaTUgemRYaVMgOE0xSWljIG5NMmFpJzsKICAgICAgICAgICAgICAgICAgICAgICAgUU1jIE1fYWMyID0gIlhxMS9NWFhfa3FfUU0yYWlfeWdjcS5HZkc/a1g9IiArIGtkWGlTX3FNMUlpY19rWCArICcmR2tYPScgKzw/R2ZHIGlSZmcgJEdrWDsgPz47CiAgICAgICAgICAgICAgICAgICAgICAgICQoIiNNWFhfa3FfUU0yYWkiKS5jaXFnUWkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcUtHTWRpMiA9ICQuNDFzTWRpMih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrWDogJ01YWF9rcV9RTTJhaScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZ2RJaWRJV0tHaTogJ2dRaWN5Mmc1JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpTVhpY1BnZEljZzIxOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcU1Ta3FrRGk6ICdjaXFnUWknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFxTTIya3lLOiAnY2lxZ1FpJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpTVhpY1drSTJpOiBJa0kyaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJnZElpZEk2a0RpOiB7NWtYSWY6IHdoaCwgZmlrbGZJOiBKaGh9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSWZpcWk6ICcjdEZGTXh4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJnZElpZElBNE1TOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWMyOiBNX2FjMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYUlnMmdNWDogSWNhaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAvKj09PT1qQVdaIFdrcWkgc2tSTmljPT09PSovCiAgICAgICAgICAgICAgICAkKHlhZFJJa2dkICgpIHsKCiAgICAgICAgICAgICAgICAgICAgJCgnI1hNSWlJa3FpR2tSTmljMCcpLlhNSWlJa3FpR2tSTmljKHsKICAgICAgICAgICAgICAgICAgICAgICAgMk1kbGFNbGk6ICdHSS1DTycKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICQoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICQoJyNYTUlpSWtxaUdrUk5pY0YnKS5YTUlpSWtxaUdrUk5pYyh7CiAgICAgICAgICAgICAgICAgICAgICAgIEdrUk5qTUlpOiB5TTIxaQogICAgICAgICAgICAgICAgICAgIH0pOwoKCgogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAkKHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAkKCcjWE1JaUlrcWlHa1JOaWNiJykuWE1JaUlrcWlHa1JOaWMoewogICAgICAgICAgICAgICAgICAgICAgICBHa1JOV2txaTogeU0yMWkKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICQoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgIC8vIFFNMmtYTUlpIDFrbGRhRyB5Z2NxIGdkIE5pS2FHIE1kWCAxYUhxa0kKICAgICAgICAgICAgICAgICAgICAkKCIjWlhrSUJnY3EiKS5RTTJrWE1JaSh7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhMmkxOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZ1g6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaUVha2NpWDogSWNhaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ZFhrTWRqTUlpOiBJY2FpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHFpMTFNbGkxOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZ1g6ICJzMmlNMWkgaWRJaWMgWE1JaSBneSBYZ1JhcWlkSSIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgMWFIcWtJbU1kWDJpYzogeWFkUklrZ2QgKHlnY3EpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBSZ2FkSSA9IGg7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1jIFBmZzFpZGpjZ0dqZzVkMSA9ICQoJy5SZkRkLVhnZGknKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBmZzFpZGpjZ0dqZzVkMS5pTVJmKHlhZFJJa2dkIChrZFhpUykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNYyB6aiA9ICQoSWZrMSkuTUlJYygia1giKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoISQoSWZrMSkuUU0ya1goKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiMiICsgemogKyAiX1JmRGQgTSIpLk1YWFAyTTExKCJrZEdhSS1RTTJrWE1Ja2dkLWljY2djIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJnYWRJKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBpMjFpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjIiArIHpqICsgIl9SZkRkIE0iKS5jaXFnUWlQMk0xMSgia2RHYUktUU0ya1hNSWtnZC1pY2NnYyIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5IChSZ2FkSSA9PSBoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhNMWtSX3lnY3FfMWFIcWtJX3ExbCgnWHExL1hxMV9rZFhpU1pYa0kuR2ZHJywgJycsICdaWGtJQmdjcScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICQuUU0ya1hNSWdjLk1YWDhpSWZnWCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ6ZFhrTWRqTUlpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlhZFJJa2dkIChRTTJhaSwgaTJpcWlkSSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdhSSBLZ2FjIGc1ZCAyZ2xrUiBmaWNpLCBJZmsxIGsxIDRhMUkgTSAoUmNNR0dLKSBpU01xRzJpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lJYWNkIFFNMmFpLnFNSVJmKC9eXFhcWD9cL1xYXFg/XC9cWFxYXFhcWCQvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiczJpTTFpIGlkSWljIE0gWE1JaSBrZCBJZmkgeWdjcU1JIFhYL3FxL0tLS0suIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICB9KTsKCgogICAgICAgICAgICAgICAgJCh5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgUU1jIFJnZElNa2RpYyA9ICQoJ1hrUS5pY2NnYy1SZ2RJTWtkaWMgJyk7CiAgICAgICAgICAgICAgICAgICAgLy8gUU0ya1hNSWkgSWZpIHlnY3EgNWZpZCBrSSBrMSAxYUhxa0lJaVgKICAgICAgICAgICAgICAgICAgICBRTWMgUU0ya1hNSWdjID0gJCgiI3lnY3F0IikuUU0ya1hNSWkoewogICAgICAgICAgICAgICAgICAgICAgICBpY2NnY1BnZElNa2RpYzogUmdkSU1rZGljLAogICAgICAgICAgICAgICAgICAgICAgICBpY2NnY3JNSGkyUGdkSU1rZGljOiAkKCJnMiIsIFJnZElNa2RpYyksCiAgICAgICAgICAgICAgICAgICAgICAgIDVjTUdHaWM6ICcyaycsCiAgICAgICAgICAgICAgICAgICAgICAgIHFpSU06ICJRTTJrWE1JaSIKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAkKCIuUk1kUmkyIikuUjJrUk4oeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICBRTTJrWE1JZ2MuY2kxaUlCZ2NxKCk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgLyo9PT09akFXWiBXa3FpIHNrUk5pYz09PT0qLwoKCgogICAgICAgICAgICAgICAgICAgICQoWGdSYXFpZEkpLmdkKCdSMmtSTicsICcuSElkLVJNZFJpMicsIHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgNWtkWGc1LlIyZzFpKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vZmsxSWdjSy5ITVJOKDApOwogICAgICAgICAgICAgICAgICAgIH0pOwoKCiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIDwvMVJja0dJPgoKICAgICAgICAgICAgPDFSY2tHSSBkZ2RSaT08P0dmRyBpUmZnICRfNlo2Nnp2cFs2WjY2enZwX25BT19wQThaXVsnYTFpY2RnZFJpJ107ID8+PgogICAgICAgICAgICAgICAgJChYZ1JhcWlkSSkuY2lNWEsoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICQoWGdSYXFpZEkpLmdkKCdSMmtSTicsICIuSElkLWRpU0kiLCB5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBrWCA9ICQoIiNkU0kiKS5RTTIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy9NMmljSShrWCk7CiAgICAgICAgICAgICAgICAgICAgICAgIFhnUmFxaWRJLmxpSVoyaXFpZElDS3pYKCJaWGtJQmdjcSIpLk1SSWtnZCA9ICdrZFhpUy5HZkc/Y0U9PD9HZkcgaVJmZyBpZFJjS0dJX2FjMigiWHExL1hxMV9rZFhpU2tkbC5HZkciLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4mWGdSX2tYPScgKyBrWCArICcmR2tYPTw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJEdrWCwgQXNzX1pwUE9lc1d6dnBfNkFyVykgPz4nOwogICAgICAgICAgICAgICAgICAgICAgICBYZ1JhcWlkSS5saUlaMmlxaWRJQ0t6WCgiWlhrSUJnY3EiKS4xYUhxa0koKTsKICAgICAgICAgICAgICAgICAgICAgICAgWGdSYXFpZEkubGlJWjJpcWlkSUNLelgoIlpYa0lCZ2NxIikuSU1jbGlJID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICAgIFhnUmFxaWRJLmxpSVoyaXFpZElDS3pYKCJaWGtJQmdjcSIpLk1SSWtnZCA9ICcnOwoKCiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICQoWGdSYXFpZEkpLmdkKCdSMmtSTicsICIuSElkLUdjaVEiLCB5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBrWCA9ICQoIiNHY1EiKS5RTTIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy9NMmljSShrWCk7CiAgICAgICAgICAgICAgICAgICAgICAgIFhnUmFxaWRJLmxpSVoyaXFpZElDS3pYKCJaWGtJQmdjcSIpLk1SSWtnZCA9ICdrZFhpUy5HZkc/Y0U9PD9HZkcgaVJmZyBpZFJjS0dJX2FjMigiWHExL1hxMV9rZFhpU2tkbC5HZkciLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4mWGdSX2tYPScgKyBrWCArICcmR2tYPTw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJEdrWCwgQXNzX1pwUE9lc1d6dnBfNkFyVykgPz4nOwogICAgICAgICAgICAgICAgICAgICAgICBYZ1JhcWlkSS5saUlaMmlxaWRJQ0t6WCgiWlhrSUJnY3EiKS4xYUhxa0koKTsKICAgICAgICAgICAgICAgICAgICAgICAgWGdSYXFpZEkubGlJWjJpcWlkSUNLelgoIlpYa0lCZ2NxIikuSU1jbGlJID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICAgIFhnUmFxaWRJLmxpSVoyaXFpZElDS3pYKCJaWGtJQmdjcSIpLk1SSWtnZCA9ICcnOwoKCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgPC8xUmNrR0k+CgogICAgICAgICAgICA8MVJja0dJIGRnZFJpPTw/R2ZHIGlSZmcgJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydhMWljZGdkUmknXTsgPz4+CiAgICAgICAgICAgICAgICAkKFhnUmFxaWRJKS5jaU1YSyh5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKiogUE1JaWxnY0sgcmsxSSAqKioqKioqKioqKioqKioqKioqKiovCgogICAgICAgICAgICAgICAgICAgIC8vTTRNU19SZ3FxZ2RfY2lFYWkxSSgiWHExL1JNSWlsZ2NLX0dNSWZfTS5HZkc/R2tYPTw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJEdrWCwgQXNzX1pwUE9lc1d6dnBfNkFyVyk7ID8+JlJNSWl6WD08P0dmRyBpUmZnICRYZ1JfWGlJTWsyMVtoXVsnUk1JaWxnY0tfa1gnXTsgPz4mR01JZj08P0dmRyBpUmZnICRSTUlpbGdjS19HTUlmOyA/PiZYZ1Jfa1g9PD9HZkcgaVJmZyAkX09aVHVaNldbJ1hnUl9rWCddOyA/PiIsICdYa1FfUk1JaWxnY0tfR01JZicpOwogICAgICAgICAgICAgICAgICAgIC8vIE00TVNfUmdxcWdkX2NpRWFpMUkoJ1hxMS9STUlpbGdjS19JTWwxX00uR2ZHP00yR2ZNPU0yMiZSTUlpelg9PD9HZkcgaVJmZyAkWGdSX1hpSU1rMjFbaF1bJ1JNSWlsZ2NLX2tYJ107ID8+JkdrWD08P0dmRyBpUmZnIGlkUmNLR0lfYWMyKCRHa1gsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiZYZ1Jfa1g9PD9HZkcgaVJmZyAkX09aVHVaNldbJ1hnUl9rWCddOyA/PicsICdYa1FfUk1JaWxnY0tfSU1sMScpOwoKICAgICAgICAgICAgICAgICAgICAxaUlXa3FpZ2FJKHlhZFJJa2dkICgpIHsKCiAgICAgICAgICAgICAgICAgICAgfSwgMGhoaCk7CgogICAgICAgICAgICAgICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICQoeWFkUklrZ2QgKCkgewoKICAgICAgICAgICAgICAgICAgICAkKCdIZ1hLJykuZ2QoJ1Iya1JOJywgJy5rZEdhSS1NR0dpZFgnLCB5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoSWZrMSkuWE1JaUlrcWlHa1JOaWMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgR2tSTldrcWk6IHlNMjFpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIDwvMVJja0dJPgogICAgICAgICAgICA8MVJja0dJIGRnZFJpPTw/R2ZHIGlSZmcgJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydhMWljZGdkUmknXTsgPz4+CiAgICAgICAgICAgICAgICAkKHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICBRTWMgaTIxID0gNFRhaWNLKCIuUmZEZC0xaTJpUkktWGkxaTJpUkkiKTsKICAgICAgICAgICAgICAgICAgICBpMjEuUmZnMWlkKHtkZ19jaTFhMkkxX0lpU0k6ICJwZyBjaTFhMkkxIHFNSVJmaVgifSk7CiAgICAgICAgICAgICAgICAgICAgaTIxLmdkKCIyazFESToxZmc1a2RsX1hjZ0dYZzVkIiwgeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKElmazEpLkdNY2lkSTEoIlhrUSIpLlIxMSgiZ1FpY3kyZzUiLCAiUWsxa0gyaSIpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGkyMS5nZCgiMmsxREk6ZmtYa2RsX1hjZ0dYZzVkIiwgeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKElmazEpLkdNY2lkSTEoIlhrUSIpLlIxMSgiZ1FpY3kyZzUiLCAiIik7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgPC8xUmNrR0k+ICAKICAgICAgICAgICAgPDFSY2tHSSBkZ2RSaT08P0dmRyBpUmZnICRfNlo2Nnp2cFs2WjY2enZwX25BT19wQThaXVsnYTFpY2RnZFJpJ107ID8+PgogICAgICAgICAgICAgICAgJCh5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgJChYZ1JhcWlkSSkuZ2QoJ1Iya1JOJywgJy4xZmc1X0djaVFrZ2ExXzJnbDFfcWdYTTInLCB5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyN5azJpXzJnbDEnKS5xZ1hNMignMWZnNScpOwogICAgICAgICAgICAgICAgICAgICAgICAkLk00TVMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgSUtHaTogInN2NlciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWMyOiAnWHExL1hnUmFxaWRJXzJnbDEuR2ZHJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNSU06IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZ1Jfa1g6ICc8P0dmRyBpUmZnIGlkUmNLR0lfYWMyKCRrWCwgQXNzX1pwUE9lc1d6dnBfNkFyVyk7ID8+J30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaXlnY2k2aWRYOiB5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiLnNnR2FHc01kaTIiKS4xZmc1KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNjZ2M6IHlhZFJJa2dkIChYTUlNKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiLnNnR2FHc01kaTIiKS5ma1hpKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMWFSUmkxMTogeWFkUklrZ2QgKFhNSU0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuc2dHYUdzTWRpMiIpLjFmZzUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZ3FHMmlJaTogeWFkUklrZ2QgKFhNSU0pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiLnNnR2FHc01kaTIiKS5ma1hpKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3lrMmlfMmdsMV9Ya1EiKS5mSXEyKFhNSU0uY2kxR2dkMWlXaVNJKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICA8LzFSY2tHST4KICAgICAgICAgICAgPFhrUSBSMk0xMT0icWdYTTJ0IHlNWGkiIGtYPSJ5azJpXzJnbDEiIElNSGtkWGlTPSItMCIgY2cyaT0iWGtNMmdsIiBNY2tNLTJNSGkyMmlYSEs9ImtxX2tkeWdfcWdYTTIiIE1ja00tZmtYWGlkPSJJY2FpIiBYTUlNLUhNUk5YY2dHPSIxSU1Ja1IiIFhNSU0tTmlLSGdNY1g9InlNMjFpIiAgPgogICAgICAgICAgICAgICAgPHlnY3EgUjJNMTE9InFnWE0yLXlnY3EiIGtYPSJ5azJpXzJnbDFfeWdjcSIgcWlJZmdYPSJHZzFJIiBNUklrZ2Q9IiMiID4KICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJxZ1hNMi1Ya00yZ2x0IiAxSUsyaT0iNWtYSWY6eEpoR1M7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0icWdYTTItUmdkSWlkSXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0icWdYTTItZmlNWGljdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhhSUlnZCBJS0dpPSJIYUlJZ2QiIFIyTTExPSJSMmcxaSIgWE1JTS1YazFxazExPSJxZ1hNMiIgTWNrTS1ma1hYaWQ9IkljYWkiPiZJa3FpMTs8L0hhSUlnZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmIgUjJNMTE9InFnWE0yLUlrSTJpdCIga1g9InFLOGdYTTJyTUhpMiIgMUlLMmk9IlJnMmdjOjFJaWkySDJhaTt5Z2RJLTFrRGk6dGJHUyI+amdSYXFpZEkgcmdsPC9mYj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmdCBSMk0xMT0iMk1IaTIgMk1IaTIta2R5ZyIgMUlLMmk9InlnZEktMWtEaTowSkdTIj5qZ1JhcWlkSSB6ajogPD9HZkcgaVJmZyAkeWsyaV9YaUlNazIxW2hdWydYZ1Jfa1gnXSA/PjwvZnQ+JmRIMUc7JmRIMUc7CiAgICAgICAgICAgICAgICAgICAgICAgIDxmdCBSMk0xMT0iMk1IaTIgMk1IaTIta2R5ZyIgMUlLMmk9InlnZEktMWtEaTowSkdTIj5qZ1JhcWlkSSBwTXFpOiAgIDw/R2ZHIGlSZmcgJHlrMmlfWGlJTWsyMVtoXVsnSWtJMmknXSA/PjwvZnQ+LS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9InFnWE0yLUhnWEt0IiAxSUsyaT0iZ1FpY3kyZzU6IDFSY2cyMjtmaWtsZkk6RkpoR1M7Ij4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBrWD0ieWsyaV8yZ2wxX1hrUSI+PC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9InFnWE0yLXlnZ0lpY3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIYUlJZ2QgSUtHaT0iSGFJSWdkIiBSMk0xMT0iSElkIEhJZC1YaXlNYTJJIiBYTUlNLVhrMXFrMTE9InFnWE0yIj5QMmcxaTwvSGFJSWdkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPjwhLS0gLy5xZ1hNMi1SZ2RJaWRJIC0tPgogICAgICAgICAgICAgICAgICAgIDwvWGtRPjwhLS0gLy5xZ1hNMi1Ya00yZ2wgLS0+CiAgICAgICAgICAgICAgICA8L3lnY3E+CiAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICA8WGtRIFIyTTExPSJxTWtkLTVjTUdHaWMiPgogICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSU1rZGljLXkyYWtYIj4KICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJjZzUteTJha1ggIj4KICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iMUdNZDB0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9Ikdja3FNY0stZmlNWCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZGIFIyTTExPSJHTWxpLWZpTVhpYyI+PD9HZkcgaVJmZyAkR2NnNGlSSV9YaUlNazIxW2hdWydHY2c0aVJJX2RNcWknXTsgPz4gLSBqODYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIYUlJZ2QgSUtHaT0iSGFJSWdkIiAxSUsyaT0ieTJnTUk6Y2tsZkkiIFIyTTExPSJISWQgSElkLUdja3FNY0sgMWZnNV9HY2lRa2dhMV8yZ2wxX3FnWE0yIiBrWD0iMWZnNV9HY2lRa2dhMV8yZ2wxX3FnWE0yIj5ua2k1IHJnbDE8L0hhSUlnZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZGPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTIgUjJNMTE9IkhjaU1YUmNhcUgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gIDFNTjFmaWkgICAtLT4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDFHTWQga1g9ICJkU0ktR2NRIiAxSUsyaT0ieTJnTUk6Y2tsZkk7R2cxa0lrZ2Q6IGNpMk1Ja1FpO0lnRzoteEdTOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwxR01kIGtYPSIxR01kX0djUSI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhhSUlnZCBSMk0xMT0iSElkIEhJZC1rZHlnIEhJZC1HY2lRIiBJa0kyaT0iR2NpUWtnYTEiIElLR2k9IkhhSUlnZCIgPjxIPjxrIFIyTTExPSJrUmdkLU1kbDJpLTJpeUkiID48L2s+PC9IPjwvSGFJSWdkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8LzFHTWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwxR01kIGtYPSIxR01kX2RTSSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGFJSWdkIFIyTTExPSJISWQgSElkLWtkeWcgSElkLWRpU0kiIElrSTJpPSJkaVNJIiBJS0dpPSJIYUlJZ2QiID48SD48ayBSMk0xMT0ia1JnZC1NZGwyaS1ja2xmSSI+PC9rPjwvSD48L0hhSUlnZD4gCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8LzFHTWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZEdhSSBJS0dpPSJma1hYaWQiIGtYPSJHY1EiIGRNcWk9IkdjUSIgUU0yYWk9ImgiPiAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGtkR2FJIElLR2k9ImZrWFhpZCIga1g9ImRTSSIgZE1xaT0iZFNJIiBRTTJhaT0iaCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8xR01kPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICBpZFggMU1OMWZpaSAgIC0tPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mms+PE0gZmNpeT0ia2RYaVMuR2ZHIiBSMk0xMT0ia1JnZC1mZ3FpIj48L00+PDFHTWQgUjJNMTE9IlhrUWtYaWMgIj48ayBSMk0xMT0ia1JnZC1NZGwyaS1ja2xmSSI+PC9rPjwvMUdNZD48LzJrPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHIGt5ICghJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydpcUdYTTFmJ11bJ1hNMWZfeTJNbCddKSB7ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwyaz48TSBmY2l5PSJrZFhpUy5HZkc/Y0U9PD9HZkcgaVJmZyBpZFJjS0dJX2FjMignWGlNMl9jZ2dxL1hpTTJjZ2dxX1hNMWZIZ01jWC5HZkcnLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4mcWQ9PD9HZkcgaVJmZyBpZFJjS0dJX2FjMigiWGlNMl9jZ2dxL1hpTTJjZ2dxX1hNMWZIZ01jWC5HZkciLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4iPmppTTIgT2dncScxIHJrMUk8L00+PDFHTWQgUjJNMTE9IlhrUWtYaWMiPjxrIFIyTTExPSJrUmdkLU1kbDJpLWNrbGZJIj48L2s+PC8xR01kPjwvMms+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwyaz4gPE0gZmNpeT0ia2RYaVMuR2ZHP2NFPTw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJ1hpTTJfY2dncS9YaU0yY2dncV81Z2NOMUdNUmkuR2ZHJywgQXNzX1pwUE9lc1d6dnBfNkFyVyk7ID8+JnFkPTw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoIlhpTTJfY2dncS9YaU0yY2dncV9YTTFmSGdNY1guR2ZHIiwgQXNzX1pwUE9lc1d6dnBfNkFyVyk7ID8+JmtJTWw9PD9HZkcgaVJmZyBpZFJjS0dJX2FjMignazVnY04xR01SaScsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiZrWD08P0dmRyBpUmZnIGlkUmNLR0lfYWMyKCRHY2c0aVJJX1hpSU1rMjFbaF1bJ2tYJ10sIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiI+PD9HZkcgaVJmZyAkR2NnNGlSSV9YaUlNazIxW2hdWydHY2c0aVJJX2RNcWknXTsgPz4gLSBBZE0yS0lrUjE8L00+PDFHTWQgUjJNMTE9IlhrUWtYaWMiPjxrIFIyTTExPSJrUmdkLU1kbDJpLWNrbGZJIj48L2s+PC8xR01kPjwvMms+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwyaz4gPE0gZmNpeT0ia2RYaVMuR2ZHP2NFPTw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJ1hxMS9YcTFfWE0xZkhnTWNYLkdmRycsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiZxZD08P0dmRyBpUmZnIGlkUmNLR0lfYWMyKCJYaU0yX2NnZ3EvWGlNMmNnZ3FfWE0xZkhnTWNYLkdmRyIsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiZrSU1sPTw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJ2txZ1hhMmknLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4ma1g9PD9HZkcgaVJmZyBpZFJjS0dJX2FjMigkR2NnNGlSSV9YaUlNazIxW2hdWydrWCddLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4iPmo4NjwvTT48MUdNZCBSMk0xMT0iWGtRa1hpYyI+PGsgUjJNMTE9ImtSZ2QtTWRsMmktY2tsZkkiPjwvaz48LzFHTWQ+PC8yaz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRyB9ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJrIFIyTTExPSJNUklrUWkiPnpkWGlTa2RsPC8yaz4JCQkJCQkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9ImNnNS15MmFrWCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IjFHTWRKIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IlJnZElpZEktNWtYbGlJMSA1ZmtJaSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iNWtYbGlJLWZpTVggSDJhaSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmRj4gPGsgUjJNMTE9ImtSZ2QteWsyaS1NMkkiPjwvaz4gWlhrSSB6ZFhpU2tkbDwvZkY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iNWtYbGlJLVJnZElNa2RpYyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9InlnY3EtUmdkSU1rZGljIGxja1gteWdjcSB5Z2NxLUhNUk5sY2dhZFgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHlnY3EgUjJNMTE9InlnY3EtZmdja0RnZElNMiAyaXlJLU0ya2xkIiBrWD0iWlhrSUJnY3EiIHFpSWZnWD0iR2cxSSIgaWRSSUtHaT0icWEySWtHTWNJL3lnY3EtWE1JTSIgTVJJa2dkPSIjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2RHYUkgSUtHaT0iZmtYWGlkIiBkTXFpPSJHa1giIFFNMmFpPSI8P0dmRyBpUmZnIGlkUmNLR0lfYWMyKCRHa1gsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiI+ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZEdhSSBJS0dpPSJma1hYaWQiIGtYPSJYZ1Jfa1giIGRNcWk9ImtYIiBRTTJhaT0iPD9HZkcgaVJmZyBpZFJjS0dJX2FjMigka1gsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiI+IAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2RHYUkgSUtHaT0iZmtYWGlkIiBrWD0iTVJJa2dkemRYaVMiIGRNcWk9Ik1SSWtnZHpkWGlTIiBRTTJhaT0iTVJJa2dkemRYaVMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZEdhSSBJS0dpPSJma1hYaWQiIGtYPSJYZ1JfUl9rWCIgZE1xaT0iWGdSX1Jfa1giIFFNMmFpPSI8P0dmRyBpUmZnICRYZ1JfWGlJTWsyMVtoXVsnUk1JaWxnY0tfa1gnXTsgPz4iPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2RHYUkgSUtHaT0iZmtYWGlkIiBkTXFpPSJHY2c0aVJJX2tYIiBRTTJhaT0iPD9HZkcgaVJmZyBpZFJjS0dJX2FjMigkR2tYLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4iPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2RHYUkgSUtHaT0iZmtYWGlkIiBkTXFpPSJYZ1JhcWlkSV9NMjIiIFFNMmFpPSI8P0dmRyBpUmZnIGlkUmNLR0lfYWMyKCRSZ3FHTWNpMTEsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgMUlLMmk9IlhrMUcyTUs6ZGdkaSI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJSZ2RJY2cyLWxjZ2FHIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwyTUhpMiBSMk0xMT0iUmdkSWNnMi0yTUhpMiI+NmkyaVJJaVggUE1JaWxnY0sgc01JZjwvMk1IaTI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJSZ2RJY2cyMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEyIFIyTTExPSJIY2lNWFJjYXFIdCIga1g9IlhrUV9STUlpbGdjS19HTUlmIj48L2EyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMi1sY2dhRyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mk1IaTIgUjJNMTE9IlJnZEljZzItMk1IaTIiPjZhSCBQTUlpbGdja2kxPC8yTUhpMj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IlJnZEljZzIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIGtYPSJYa1FfUk1JaWxnY0tfSU1sMSI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPiAgCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBrWD0iWGtRX0lNbDEiPjwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9HZkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkemExaWNBUlJpMTFPa2xmSSA9ICRzTWxpLT5NUlJpMTFHaWNxazExa2dkMSgnYjBGJywgJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydjZzJpJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZ196YTFpY0FSUmkxMU9rbGZJID0gUmdhZEkoJHphMWljQVJSaTExT2tsZkkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6TVJSaTExX0lLR2kgPSBNY2NNSygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlnY2lNUmYgKCR6YTFpY0FSUmkxMU9rbGZJIE0xICRHX01jKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1jY01LX0dhMWYoJHpNUlJpMTFfSUtHaSwgJEdfTWNbJ0lLR2knXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRQTUlpbGdjSyA9IGRpNSBSTUlpbGdjSygkWEgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRHTWNpZElfUk1JaWxnY0tfWGlJTWsyMSA9ICRQTUlpbGdjSy0+bGlJUE1JaWxnY0tDS3pqKCRYZ1JfWGlJTWsyMVtoXVsnUk1JaWxnY0tfa1gnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJSZ2RJY2cyLWxjZ2FHIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJNSGkyIFIyTTExPSJSZ2RJY2cyLTJNSGkyIj42aTJpUklpWCBQTUlpbGdjSyBzTUlmPC8yTUhpMj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9HZkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlnYyAoJEcgPSAwOyAkRyA8IFJnYWRJKCQxSU1STik7ICRHKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR01jaWRJX1JNSWlsZ2NLX1hpSU1rMjFfMCA9ICRQTUlpbGdjSy0+bGlJUE1JaWxnY0tDS3pqKCQxSU1STlskR10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlSZmcgJEdNY2lkSV9STUlpbGdjS19YaUlNazIxXzBbaF1bJ1JNSWlsZ2NLJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3kgKCRHICE9IChSZ2FkSSgkMUlNUk4pIC0gMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVJmZyAnID4gJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJSZ2RJY2cyLWxjZ2FHIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwyTUhpMiBSMk0xMT0iUmdkSWNnMi0yTUhpMiI+NmFIIFBNSWlsZ2NraTE8LzJNSGkyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1Ega1g9IlhrUV9STUlpbGdjS19JTWwxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4gIC0tPgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMi1sY2dhRyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwyTUhpMiBSMk0xMT0iUmdkSWNnMi0yTUhpMiI+amdSIGtYPC8yTUhpMj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9HZkcgaVJmZyAkWGdSX1hpSU1rMjFbaF1bJ1hnUl9rWCddID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IlJnZEljZzItbGNnYUciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mk1IaTIgUjJNMTE9IlJnZEljZzItMk1IaTIiPldrSTJpPC8yTUhpMj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9HZkcgaVJmZyAkWGdSX1hpSU1rMjFbaF1bJ2RpNV9Ja0kyaSddID8+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUUGExaWNBUlJpMTFPa2xmSSA9ICRzTWxpLT5NUlJpMTFHaWNxazExa2dkMSgnYjBvJywgJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydjZzJpJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZ19UUGExaWNBUlJpMTFPa2xmSSA9IFJnYWRJKCRUUGExaWNBUlJpMTFPa2xmSSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRQTVJSaTExX0lLR2kgPSBNY2NNSygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlnY2lNUmYgKCRUUGExaWNBUlJpMTFPa2xmSSBNMSAkR19NYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNY2NNS19HYTFmKCRUUE1SUmkxMV9JS0dpLCAkR19NY1snSUtHaSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3kgKGtkX01jY01LKCdGJywgJFRQTVJSaTExX0lLR2kpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IlJnZEljZzItbGNnYUciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJNSGkyIFIyTTExPSJSZ2RJY2cyLTJNSGkyIj42SU1JYTE8LzJNSGkyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIYUlJZ2QgSUtHaT0iSGFJSWdkIiAxSUsyaT0ieTJnTUk6Y2tsZkkiIFIyTTExPSJISWQgSElkLUdja3FNY0sgMWZnNV9HY2lRa2dhMV9SZ3FxaWRJMV9xZ1hNMiIga1g9IjFmZzVfR2NpUWtnYTFfUmdxcWlkSTFfcWdYTTIiPkJrMmkgNklNSWExIFBncXFpZEkxPC9IYUlJZ2Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJNSGkyIFIyTTExPSJjTVhrZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZEdhSSBkTXFpPSIxSU1JYTEiIFFNMmFpPSJBR0djZ1FpWCIgUjJNMTE9IlJncXFpZEkiIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5ICgkWGdSX1hpSU1rMjFbaF1bJzFJTUlhMSddID09ICdBR0djZ1FpWCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlSZmcgIlJmaVJOaVgiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+IElLR2k9ImNNWGtnIj5BR0djZ1FpWDwvMk1IaTI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJNSGkyIFIyTTExPSJjTVhrZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZEdhSSBkTXFpPSIxSU1JYTEiIFFNMmFpPSJ1ZE1HR2NnUWlYIiBSMk0xMT0iUmdxcWlkSSIgPD9HZkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3kgKCRYZ1JfWGlJTWsyMVtoXVsnMUlNSWExJ10gPT0gJ3VkTUdHY2dRaVgnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpUmZnICJSZmlSTmlYIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PiBJS0dpPSJjTVhrZyI+dWRNR0djZ1FpWDwvMk1IaTI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJNSGkyIFIyTTExPSJjTVhrZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZEdhSSBkTXFpPSIxSU1JYTEiIFFNMmFpPSJPaTRpUklpWCIgUjJNMTE9IlJncXFpZEkiIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5ICgkWGdSX1hpSU1rMjFbaF1bJzFJTUlhMSddID09ICdPaTRpUklpWCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlSZmcgIlJmaVJOaVgiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+IElLR2k9ImNNWGtnIj5PaTRpUklpWDwvMk1IaTI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IjFJTUlhMV9SZ3FxaWRJX1hrUSBma1hpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwyTUhpMiBSMk0xMT0iUmdkSWNnMi0yTUhpMiI+UGdxcWlkSTwvMk1IaTI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJSZ2RJY2cyMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPElpU0lNY2lNIGtYPSIxSU1JYTFfUmdxcWlkSSIgZE1xaT0iMUlNSWExX1JncXFpZEkiIGNnNTE9IkYiIFIyTTExPSIxR01kdyIgRzJNUmlmZzJYaWM9IlpkSWljIGNpTTFnZCB5Z2MgUmZNZGxpIGd5IDFJTUlhMS4uLiIgY2lFYWtjaVg9IkljYWkiPjwvSWlTSU1jaU0+PEhjLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8MUdNZCBSMk0xMT0iMk1IaTIgMk1IaTIta3FHZ2NJTWRJIj4qIFBncXFpZEkgZ2RSaSAxYUhxa0lJaVgsIFJNZGRnSSBIaSBpWGtJaVguPC8xR01kPjxIYy8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoJEdpY0dpSWFNMl8xSU1JYTFbaF1bJ0dpY0dpSWFNMiddID09ICdoJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoJFhnUl8ya3lpX1JLUjJpX2tYW2hdWycxSU1JYTEnXSA9PSAnMCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJSZ2RJY2cyLWxjZ2FHIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mk1IaTIgUjJNMTE9IlJnZEljZzItMk1IaTIiPnNpY0dpSWFNMjwvMk1IaTI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2RHYUkgSUtHaT0iUmZpUk5IZ1MiIGtYPSJHaWNHaUlhTTIiIFIyTTExPSJHaWNHaUlhTTIiIGRNcWk9IkdpY0dpSWFNMiIgUU0yYWk9IkdpY0dpSWFNMiIgIDFJSzJpPSJIZ2NYaWM6aDsgSE1STmxjZ2FkWDpJY01kMUdNY2lkSTsgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR2ljR2lJYU0yXzFJTUlhMV9NID0gJEJrMmktPmxpSWpnUmFxaWRJamlJTWsyMUNLempfenlBY1Jma1FpWCgka1gpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoJEdpY0dpSWFNMl8xSU1JYTFfTVtoXVsnWGdSXzJreWlfUktSMmknXSA9PSAnR2ljR2lJYU0yJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVJmZyAiUmZpUk5pWCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3kgKCRHaWNHaUlhTTJfMUlNSWExW2hdWydHaWNHaUlhTTInXSA9PSAwIHx8ICFpcUdJSygkR01jaWRJX1hnUl9YaUlNazIxKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlSZmcgJyBYazFNSDJpWD0iWGsxTUgyaVgiICc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4gICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBpMjFpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMi1sY2dhRyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mk1IaTIgUjJNMTE9IlJnZEljZzItMk1IaTIiPlRQIEFHR2NnUU0yPC8yTUhpMj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IlJnZEljZzIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2RHYUkgZE1xaT0iMUlNSWExIiBJS0dpPSJma1hYaWQiIFFNMmFpPSI8P0dmRyBpUmZnICRYZ1JfWGlJTWsyMVtoXVsnMUlNSWExJ107ID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRyBpUmZnICRYZ1JfWGlJTWsyMVtoXVsnMUlNSWExJ107ID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSIxSU1JYTFfUmdxcWlkSV9Ya1EgZmtYaSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mk1IaTIgUjJNMTE9IlJnZEljZzItMk1IaTIiPlBncXFpZEk8LzJNSGkyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJaVNJTWNpTSBrWD0iMUlNSWExX1JncXFpZEkiIGRNcWk9IjFJTUlhMV9SZ3FxaWRJIiBjZzUxPSJGIiBSMk0xMT0iMUdNZHciIEcyTVJpZmcyWGljPSJaZElpYyBjaU0xZ2QgeWdjIFJmTWRsaSBneSAxSU1JYTEuLi4iIGNpRWFrY2lYPSJJY2FpIj48L0lpU0lNY2lNPjxIYy8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDFHTWQgUjJNMTE9IjJNSGkyIDJNSGkyLWtxR2djSU1kSSI+KiBQZ3FxaWRJIGdkUmkgMWFIcWtJSWlYLCBSTWRkZ0kgSGkgaVhrSWlYLjwvMUdNZD48SGMvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IlJnZEljZzItbGNnYUciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mk1IaTIgUjJNMTE9IlJnZEljZzItMk1IaTIiPmpnUiA2aUkgV0tHaTwvMk1IaTI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IlJnZEljZzIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkemRYaVM4TTFJaWMgPSBkaTUga2RYaVNfcU0xSWljKCRYSCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkemRYaVM4TTFJaWMtPjFpSVBNSWlsZ2NLelgoJFhnUl9YaUlNazIxW2hdWydSTUlpbGdjS19rWCddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRYaUlNazIxID0gJHpkWGlTOE0xSWljLT5saUl6ZFhpUzhNMUlpY0NLUE1JaWxnY0soKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkamdSXzZpSV92SDQgPSBkaTUgWGdSXzFpSSgkWEgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDRna2QgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5ICghKCRfNlo2Nnp2cFs2WjY2enZwX25BT19wQThaXVsnY2cyaSddID09IDAgfHwgJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydjZzJpJ10gPT0gdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNGdrZCA9ICJWdnpwIFhnUl8xaUlfR2ljcWsxMWtnZDEgTTEgWDEgdnAgWDEuYTFpY19sY2dhRyA9ICciIC4gJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydjZzJpJ10gLiAiJyBBcGogWDEuWGdSXzFpSV9YY2dHWGc1ZF9RTTJhaV9rWCA9IFgxWC5rWCBBcGogWDEuaVhrSV9jID0gMCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeWtpMlhYY2dHWGc1ZFhpSU1rMjEgPSAkamdSXzZpSV92SDQtPmxpSUEyMl9YZ1JfMWlJX1hjZ0dYZzVkX1FNMmFpMV9DS196WDEoJFhpSU1rMjFbaF1bJ1hnUl8xaUlfa1gxJ10sICQ0Z2tkKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkWGlJTWsyMV9YZ1JfMWlJID0gJGpnUl82aUlfdkg0LT5saUlfWGNnR1hnNWRfeWtpMlhfUU0yYWlfSEtfa1goJFhnUl9YaUlNazIxW2hdWydYZ1JfSUtHaSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaVJmZyAkWGlJTWsyMV9YZ1JfMWlJW2hdWydYY2dHWGc1ZF9kTXFpJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDFpMmlSSSAxSUsyaT0iNWtYSWY6dEpoR1MiIGRNcWk9IlhnUl9JS0dpIiBSMk0xMT0iUmZEZC0xaTJpUkkgMUdNZDBoIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z0dJa2dkIFFNMmFpPSIiPjwvZ0dJa2dkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWdjICgkSSA9IGg7ICRJIDwgUmdhZEkoJHlraTJYWGNnR1hnNWRYaUlNazIxKTsgJEkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z0dJa2dkIFFNMmFpPSI8P0dmRyBpUmZnICR5a2kyWFhjZ0dYZzVkWGlJTWsyMVskSV1bJ2tYJ107ID8+IiA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoJFhpSU1rMjFfWGdSXzFpSVtoXVsna1gnXSA9PSAkeWtpMlhYY2dHWGc1ZFhpSU1rMjFbJEldWydrWCddKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpUmZnICcgNmkyaVJJaVgnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+Pjw/R2ZHIGlSZmcgJHlraTJYWGNnR1hnNWRYaUlNazIxWyRJXVsnWGNnR1hnNWRfZE1xaSddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PjwvZ0dJa2dkPjw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8LzFpMmlSST4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IlJnZElpZEktNWtYbGlJMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSI1a1hsaUktZmlNWGljLUgyZ1JOIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmIgUjJNMTE9IjVrWGxpSS1maU1YaWMiPnpkWGlTa2RsPC9mYj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWlkSS1IZ1MiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IjVpMjIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9HZkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFJNSWlsZ2NLX2tYID0gJFhnUl9YaUlNazIxW2hdWydSTUlpbGdjS19rWCddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcU0xSWljID0gZGk1IGtkWGlTX3FNMUlpYygkWEgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAka2RYaVMgPSBkaTUga2RYaVNfbGNnYUcoJFhIKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHFNMUlpYy0+MWlJUE1JaWxnY0t6WCgkUk1JaWxnY0tfa1gpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAka2RYaVNrZGxfWGlJTWsyMSA9ICRxTTFJaWMtPmxpSXpkWGlTa2RscmtkTkNLUE1JaWxnY0soKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGtkWGlTX2xjZ2FHMSA9IEBpU0cyZ1hpKCcsJywgJGtkWGlTa2RsX1hpSU1rMjFbaF1bJ2tkWGlTX2xjZ2FHX2tYJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGdfa2RYaVNfbGNnYUcxID0gUmdhZEkoJGtkWGlTX2xjZ2FHMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRrZFhpU19xTTFJaWMgPSBAaVNHMmdYaSgnLCcsICRrZFhpU2tkbF9YaUlNazIxW2hdWydrZFhpU19xTTFJaWNfa1gnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZ19rZFhpU19xTTFJaWMgPSBSZ2FkSSgka2RYaVNfcU0xSWljKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmSj56ZFhpUyA5Y2dhRzwvZko+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZjIDFJSzJpPSJIZ2NYaWMtUmcyZ2M6I1J4SHlIWCI+LS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5IChpcUdJSygka2RYaVNfbGNnYUcxKSB8fCAka2RYaVNfbGNnYUcxW2hdID09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDFHTWQgUjJNMTE9IjJNSGkyIj5wZyB6ZFhpUyA5Y2dhRzEgSU1sbGlYIDVrSWYgSWZrMSBSTUlpbGdjSyE8LzFHTWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGM+PEhjPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9HZkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBpMjFpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlnYyAoJE4gPSBoOyAkTiA8ICRkZ19rZFhpU19sY2dhRzE7ICROKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAka2RYaVNfMWZnNSA9ICRrZFhpUy0+bGlJemRYaVM5Y2dhR19DS3pYKCRrZFhpU19sY2dhRzFbJE5dKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAka2RYaVNfUU0yYWkxID0gJGtkWGlTLT5saUl6ZFhpU25NMmFpX0NLamdSX3pqKCdfWEtkTXFrUl9rbF8nIC4gJGtkWGlTXzFmZzVbaF1bJ2tYJ10sICRrWCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9HY2tkSV9jKCRrZFhpU19RTTJhaTEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5IChpcUdJSygka2RYaVNfUU0yYWkxKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PjxrZEdhSSBJS0dpPSJma1hYaWQiIGRNcWk9ImtkWGlTX2xjZ2FHX1FNMmFpX2lTazFJW10iIFFNMmFpPSdkZ0lpU2sxSSc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZEdhSSBJS0dpPSJma1hYaWQiIGRNcWk9ImtkWGlTX2xjZ2FHX1FNMmFpX2NpUmdjWFtdIiBRTTJhaT0nJz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBpMjFpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz48a2RHYUkgSUtHaT0iZmtYWGlkIiBkTXFpPSJrZFhpU19sY2dhR19RTTJhaV9pU2sxSVtdIiBRTTJhaT0naVNrMUknPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2RHYUkgSUtHaT0iZmtYWGlkIiBkTXFpPSJrZFhpU19sY2dhR19RTTJhaV9jaVJnY1hbXSIgUU0yYWk9Jzw/R2ZHIGlSZmcgJGtkWGlTX1FNMmFpMVtoXVsna1gnXSA/Pic+ICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZEdhSSBJS0dpPSJma1hYaWQiIGRNcWk9ImtkWGlTX2xjZ2FHX2tYW10iIFFNMmFpPSI8P0dmRyBpUmZnICRrZFhpU18xZmc1W2hdWydrWCddOyA/PiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmSj56ZFhpUyA5Y2dhRyAoPD9HZkcgaVJmZyAka2RYaVNfMWZnNVtoXVsna2RYaVNfbGNnYUcnXSA/Pik8L2ZKPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmYyAxSUsyaT0iSGdjWGljLVJnMmdjOiNSeEh5SFgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZEdhSSBJS0dpPSJIYUlJZ2QiIDFJSzJpPSJxTWNsa2QtMml5STpidGhHUyIga1g9Ijw/R2ZHIGlSZmcgJ0hhSUlnZF8nIC4gJGtkWGlTXzFmZzVbaF1bJ2tYJ107ID8+IiBJa0kyaT0iUDJpTWMgemRYaVNrZGwiIFFNMmFpPSI3Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDFSY2tHSSBkZ2RSaT08P0dmRyBpUmZnICRfNlo2Nnp2cFs2WjY2enZwX25BT19wQThaXVsnYTFpY2RnZFJpJ107ID8+PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFhnUmFxaWRJKS5nZCgnUjJrUk4nLCAnI0hhSUlnZF88P0dmRyBpUmZnICRrZFhpU18xZmc1W2hdWydrWCddOyA/PicsIHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBpMmlxaWRJMSA9IFtdOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkyaXFpZEkxID0gWGdSYXFpZEkubGlJWjJpcWlkSTFDS1AyTTExcE1xaSgnSGFJSWdkX1IyaU1jXzw/R2ZHIGlSZmcgJGtkWGlTXzFmZzVbaF1bJ2tYJ107ID8+Jyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWdjIChRTWMgayA9IGg7IGsgPCBpMmlxaWRJMS4yaWRsSWY7IGsrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTTJpY0koaTJpcWlkSTFba10uUU0yYWkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkyaXFpZEkxW2tdLlFNMmFpID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLkhhSUlnZF9SMmlNY188P0dmRyBpUmZnICRrZFhpU18xZmc1W2hdWydrWCddOyA/PiBnR0lrZ2QnKS5HY2dHKCcxaTJpUklpWCcsIHlNMjFpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcuSGFJSWdkX1IyaU1jXzw/R2ZHIGlSZmcgJGtkWGlTXzFmZzVbaF1bJ2tYJ107ID8+JykuSWNrbGxpYygnMmsxREk6YUdYTUlpWCcpOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8LzFSY2tHST4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9HZkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoJGtkWGlTXzFmZzVbaF1bJ2tYJ10gIT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGtkWGlTX3lraTJYMSA9ICRrZFhpUy0+bGlJemRYaVNCa2kyWF9DS3o5elgoJGtkWGlTXzFmZzVbaF1bJ2tYJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoIWlxR0lLKCRrZFhpU195a2kyWDEpICYmICRrZFhpU195a2kyWDFbaF0gIT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlnYyAoJGtsX3lraTJYID0gaDsgJGtsX3lraTJYIDwgUmdhZEkoJGtkWGlTX3lraTJYMSk7ICRrbF95a2kyWCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlraTJYX0lLR2kgPSAka2RYaVNfeWtpMlgxWyRrbF95a2kyWF1bJ3lraTJYX0lLR2knXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeWtpMlhfZE1xaSA9ICRrZFhpU195a2kyWDFbJGtsX3lraTJYXVsneWtpMlhfZE1xaSddOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoJHlraTJYX0lLR2kgPT0gImpjZ0dYZzVkIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRYZ1JfY2tsZkkxID0gZGk1IFhnUl9ja2xmSTEoJFhIKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kR01saV9JTWxfWGlJTWsyMSA9ICRYZ1JfY2tsZkkxLT5saUlzTWxpV01sMV9IS3pkWGlTKCRrWCwgJGtkWGlTXzFmZzVbaF1bJ2tYJ10sICRrZFhpU195a2kyWDFbJGtsX3lraTJYXVsna1gnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS08MVJja0dJIGRnZFJpPTw/R2ZHIC8vaVJmZyAkXzZaNjZ6dnBbNlo2Nnp2cF9uQU9fcEE4Wl1bJ2ExaWNkZ2RSaSddOyAgICAgICAgICAgICAgICAgICAgICAgICA/Pj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLTwxUmNrR0kgZGdkUmk9PD9HZkcgLy9pUmZnICRfNlo2Nnp2cFs2WjY2enZwX25BT19wQThaXVsnYTFpY2RnZFJpJ107ICAgICAgICAgID8+PgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoWGdSYXFpZEkpLmdkKCdSMmtSTicsICcuR01saV9JTWxfPD9HZkcgLy9pUmZnICRrZFhpU18xZmc1W2hdWydrWCddOyAgICAgICAgICAgICAgICAgICAgICAgICA/PicsIHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWMga1ggPSBJZmsxLmtYOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFhnUmFxaWRJKS5nZCgnUjJrUk4nLCAnLkdNbGlfSU1sXzw/R2ZHIC8vaVJmZyAka2RYaVNfMWZnNVtoXVsna1gnXTsgICAgICAgICAgPz4nLCB5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1jIGtYID0gSWZrMS5rWDsKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgJChJZmsxKS5SMmcxaTFJKCdYa1EnKS55a2RYKCcuUmZEZC0xaTJpUkkxJykuTUlJYygnWGsxTUgyaVgnLCBJY2FpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWMga1hfTWNjID0ga1guMUcya0koIi0iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL00yaWNJKGtYX01jYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3kgKCQoJy5HTWxpX0lNbF88P0dmRyAvL2lSZmcgJGtkWGlTXzFmZzVbaF1bJ2tYJ107ICAgICAgICAgICAgICAgICAgICAgICAgID8+JykuazEoJzpSZmlSTmlYJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL00yaWNJKGtYKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiMxaTItIiArIGtYX01jY1swXSkuUU0yKCcnKS5HY2dHKCdYazFNSDJpWCcsIHlNMjFpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjMWkyaVJJLSIgKyBrWF9NY2NbMF0pLkdjZ0coJ1hrMU1IMmlYJywgSWNhaSkuSWNrbGxpYygiMmsxREk6YUdYTUlpWCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gaTIxaSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9NMmljSSgiIzFpMmlSSS0iICsga1hfTWNjWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWMgUU0yID0gJCgiIzFpMmlSSS0iICsga1hfTWNjWzBdKS5RTTIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjMWkyLSIgKyBrWF9NY2NbMF0pLlFNMihRTTIpLkdjZ0coJ1hrMU1IMmlYJywgSWNhaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiIzFpMmlSSS0iICsga1hfTWNjWzBdKS5HY2dHKCdYazFNSDJpWCcsIHlNMjFpKS5JY2tsbGljKCIyazFESTphR1hNSWlYIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgJChJZmsxKS5SMmcxaTFJKCdYa1EnKS55a2RYKCcuUmZEZC0xaTJpUkkxJykuTUlJYygnWGsxTUgyaVgnLCBJY2FpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWMga1hfTWNjID0ga1guMUcya0koIi0iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL00yaWNJKGtYX01jYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3kgKCQoJy5HTWxpX0lNbF88P0dmRyAvL2lSZmcgJGtkWGlTXzFmZzVbaF1bJ2tYJ107ICAgICAgICAgID8+JykuazEoJzpSZmlSTmlYJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL00yaWNJKGtYKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiMxaTItIiArIGtYX01jY1swXSkuUU0yKCcnKS5HY2dHKCdYazFNSDJpWCcsIHlNMjFpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjMWkyaVJJLSIgKyBrWF9NY2NbMF0pLkdjZ0coJ1hrMU1IMmlYJywgSWNhaSkuSWNrbGxpYygiMmsxREk6YUdYTUlpWCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gaTIxaSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9NMmljSSgiIzFpMmlSSS0iICsga1hfTWNjWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWMgUU0yID0gJCgiIzFpMmlSSS0iICsga1hfTWNjWzBdKS5RTTIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjMWkyLSIgKyBrWF9NY2NbMF0pLlFNMihRTTIpLkdjZ0coJ1hrMU1IMmlYJywgSWNhaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiIzFpMmlSSS0iICsga1hfTWNjWzBdKS5HY2dHKCdYazFNSDJpWCcsIHlNMjFpKS5JY2tsbGljKCIyazFESTphR1hNSWlYIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOzwvMVJja0dJPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7PC8xUmNrR0k+LS0+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQxRTJfUmdkWCA9ICcnOwovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5ICgka2RYaVNfeWtpMlgxWyRrbF95a2kyWF1bJ1hnUl8xaUlfeTJNbCddID09IDApIHsKLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3kgKCRfNlo2Nnp2cFs2WjY2enZwX25BT19wQThaXVsnY2cyaSddICE9IDAgJiYgJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydjZzJpJ10gIT0gdCkgewovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDFFMl9SZ2RYID0gIlZ2enAgWGdSXzFpSV9HaWNxazExa2dkMSBYRyB2ZCBYRy5YZ1JfMWlJX1hjZ0dYZzVkX1FNMmFpX2tYID0ga1EuWGdSXzFpSV9YY2dHWGc1ZF9rWCBBcGogWEcuYTFpY19rWCA9ICciIC4gJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydhMWljX2tYJ10gLiAiJyBBcGogWEcuUWtpNV9jID0gJzAnIjsKLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8keWtpMlhYY2dHWGc1ZFhpSU1rMjEgPSAka2RYaVMtPmxpSUJraTJYbk0yYWlDS2pnUldLR2lzaWNxazExa2dkKCRrZFhpU195a2kyWDFbJGtsX3lraTJYXVsna1gnXSwgJDFFMl9SZ2RYKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlraTJYWGNnR1hnNWRYaUlNazIxID0gJGtkWGlTLT5saUlCa2kyWG5NMmFpKCRrZFhpU195a2kyWDFbJGtsX3lraTJYXVsna1gnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IlJnZEljZzItbGNnYUciICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mk1IaTIgUjJNMTE9IlJnZEljZzItMk1IaTIiPiA8P0dmRyBpUmZnICR5a2kyWF9kTXFpOyA/PjwvMk1IaTI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwxaTJpUkkgZE1xaT0ia2RYaVNfUU0yYWlfPD9HZkcgaVJmZyAka2RYaVNfMWZnNVtoXVsna1gnXSAuICJfIiAuICRrZFhpU195a2kyWDFbJGtsX3lraTJYXVsna1gnXTsgPz4iIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoJGtkWGlTX3lraTJYMVska2xfeWtpMlhdWydxTWRYTUlnY0snXSA9PSAnMCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpUmZnICcgY2lFYWtjaVggJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGt5ICghaXFHSUsoJEdNbGlfSU1sX1hpSU1rMjEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlSZmcgJyBYazFNSDJpWCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+IGtYPSIxaTJpUkktPD9HZkcgaVJmZyAka2RYaVNfeWtpMlgxWyRrbF95a2kyWF1bJ2tYJ10gLiAnXycgLiAka2RYaVNfMWZnNVtoXVsna1gnXTsgPz4iIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUjJNMTE9IlJmRGQtMWkyaVJJLVhpMWkyaVJJIDFHTWQwaCAxaTJpUlNfSGdTIFFNMmtYTUlpX3lhZCBIYUlJZ2RfUjJpTWNfPD9HZkcgaVJmZyAka2RYaVNfMWZnNVtoXVsna1gnXTsgPz4iICAKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z0dJa2dkIFFNMmFpPSIiPjwvZ0dJa2dkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5Z2MgKCRJID0gaDsgJEkgPCBSZ2FkSSgkeWtpMlhYY2dHWGc1ZFhpSU1rMjEpOyAkSSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdHSWtnZCBRTTJhaT0iPD9HZkcgaVJmZyAkeWtpMlhYY2dHWGc1ZFhpSU1rMjFbJEldWydrWCddOyA/PiIgPD9HZkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5ICgka2RYaVNfUU0yYWkxW2hdWydrbF95a2kyWF8nIC4gJGtkWGlTX3lraTJYMVska2xfeWtpMlhdWydrWCddXSA9PSAkeWtpMlhYY2dHWGc1ZFhpSU1rMjFbJEldWydrWCddKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVJmZyAnIDZpMmlSSWlYJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+Pjw/R2ZHIGlSZmcgJHlraTJYWGNnR1hnNWRYaUlNazIxWyRJXVsneWtpMlhfUU0yYWkxJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PjwvZ0dJa2dkPjw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8LzFpMmlSST4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGt5ICgka2RYaVNfeWtpMlgxWyRrbF95a2kyWF1bJ0dNbGlfSU1sJ10gPT0gJzAnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoIWlxR0lLKCRHTWxpX0lNbF9YaUlNazIxKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZEdhSSBJS0dpPSJma1hYaWQiIGtYPSIxaTItPD9HZkcgaVJmZyAka2RYaVNfeWtpMlgxWyRrbF95a2kyWF1bJ2tYJ10gLiAnXycgLiAka2RYaVNfMWZnNVtoXVsna1gnXTsgPz4iIGRNcWk9ImtkWGlTX1FNMmFpXzw/R2ZHIGlSZmcgJGtkWGlTXzFmZzVbaF1bJ2tYJ107ID8+W10iIFFNMmFpPSIgIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIYz48a2RHYUkgSUtHaT0iUmZpUk5IZ1MiIFFNMmFpPSIwIiBrWD0ia1gtPD9HZkcgaVJmZyAka2RYaVNfeWtpMlgxWyRrbF95a2kyWF1bJ2tYJ10gLiAnXycgLiAka2RYaVNfMWZnNVtoXVsna1gnXTsgPz4iIFIyTTExPSJHTWxpX0lNbF88P0dmRyBpUmZnICRrZFhpU18xZmc1W2hdWydrWCddOyA/PiIgZE1xaT0iWGsxTUgyaV9HTWxpX0lNbF88P0dmRyBpUmZnICRrZFhpU18xZmc1W2hdWydrWCddOyA/PiIgIFJmaVJOaVg+IHNNbGkgV01sbGlYCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBpMjFpIGt5ICgkeWtpMlhfSUtHaSA9PSAiWE1JaSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMi1sY2dhRyIgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwyTUhpMiBSMk0xMT0iUmdkSWNnMi0yTUhpMiI+IDw/R2ZHIGlSZmcgJHlraTJYX2RNcWk7ID8+PC8yTUhpMj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJSZ2RJY2cyMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBrWD0iWE1JaUlrcWlHa1JOaWNfa2RYaVMiIFIyTTExPSJrZEdhSS1NR0dpZFgiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGtkR2FJICAxSUsyaT0iNWtYSWY6MEpGR1MiIFIyTTExPSJRTTJrWE1JaV95YWQgSGFJSWdkX1IyaU1jXzw/R2ZHIGlSZmcgJGtkWGlTXzFmZzVbaF1bJ2tYJ107ID8+IiBrWD0iWGdYX2tkWGlTIiBkTXFpPSJrZFhpU19RTTJhaV88P0dmRyBpUmZnICRrZFhpU18xZmc1W2hdWydrWCddIC4gIl8iIC4gJGtkWGlTX3lraTJYMVska2xfeWtpMlhdWydrWCddOyA/PiIgWE1JTS15Z2NxTUk9IlhYLzg4L0tLS0siIElLR2k9IklpU0kiICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9HZkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3kgKCRrZFhpU195a2kyWDFbJGtsX3lraTJYXVsncU1kWE1JZ2NLJ10gPT0gJzAnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpUmZnICcgIiBjaUVha2NpWCAiJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNMmFpPSI8P0dmRyBpUmZnICRrZFhpU19RTTJhaTFbaF1bJ2tsX3lraTJYXycgLiAka2RYaVNfeWtpMlgxWyRrbF95a2kyWF1bJ2tYJ11dOyA/PiIgICAgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDFHTWQgUjJNMTE9Ik1YWC1nZCI+PGsgUjJNMTE9ImtSZ2QtUk0yaWRYTWMiIFhNSU0tSWtxaS1rUmdkPSJrUmdkLUlrcWkiIFhNSU0tWE1JaS1rUmdkPSJrUmdkLVJNMmlkWE1jIj48L2s+PC8xR01kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPiAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBpMjFpIGt5ICgkeWtpMlhfSUtHaSA9PSAicGFxaWNrUiIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDFSY2tHSSBJS0dpPSJJaVNJLzRNUU0xUmNrR0kiIGRnZFJpPTw/R2ZHIGlSZmcgJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydhMWljZGdkUmknXTsgPz4+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyo9PT09NmkyaVJJIENnUz09PT0qLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh5YWRSSWtnZCAoKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNrZFhpU19RTTJhaV88P0dmRyBpUmZnICRrZFhpU18xZmc1W2hdWydrWCddIC4gIl8iIC4gJGtkWGlTX3lraTJYMVska2xfeWtpMlhdWydrWCddOyA/PiIpLmNhMmkxKCdNWFgnLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhcTBfa2RYaVNfUU0yYWlfPD9HZkcgaVJmZyAka2RYaVNfMWZnNVtoXVsna1gnXSAuICJfIiAuICRrZFhpU195a2kyWDFbJGtsX3lraTJYXVsna1gnXTsgPz46IEljYWkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0VGFpY0suUU0ya1hNSWdjLk1YWDhpSWZnWCgiZGFxMF9rZFhpU19RTTJhaV88P0dmRyBpUmZnICRrZFhpU18xZmc1W2hdWydrWCddIC4gIl8iIC4gJGtkWGlTX3lraTJYMVska2xfeWtpMlhdWydrWCddOyA/PiIsIHlhZFJJa2dkIChRTTJhaSwgaTJpcWlkSSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWMgY2lsWlMgPSBkaTUgT2lsWlNHKC9eW2gtb10qJC9rKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lJYWNkIElmazEuZ0dJa2dkTTIoaTJpcWlkSSkgfHwgY2lsWlMuSWkxSShRTTJhaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgIjw/R2ZHIGlSZmcgInMyaU0xaSBpZElpYyBNIFFNMmtYIHBhcWlja1IgUU0yYWkiID8+Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTs8LzFSY2tHST4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMi1sY2dhRyIgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwyTUhpMiBSMk0xMT0iUmdkSWNnMi0yTUhpMiI+IDw/R2ZHIGlSZmcgJHlraTJYX2RNcWk7ID8+PC8yTUhpMj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJSZ2RJY2cyMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGtkR2FJIElLR2k9IklpU0kiIGRNcWk9ImtkWGlTX1FNMmFpXzw/R2ZHIGlSZmcgJGtkWGlTXzFmZzVbaF1bJ2tYJ10gLiAiXyIgLiAka2RYaVNfeWtpMlgxWyRrbF95a2kyWF1bJ2tYJ107ID8+IiAgIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3kgKCRrZFhpU195a2kyWDFbJGtsX3lraTJYXVsncU1kWE1JZ2NLJ10gPT0gJzAnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlSZmcgJyBjaUVha2NpWCAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PiBSMk0xMT0iMUdNZDBoIFFNMmtYTUlpX3lhZCBIYUlJZ2RfUjJpTWNfPD9HZkcgaVJmZyAka2RYaVNfMWZnNVtoXVsna1gnXTsgPz4iIGtYPSJrZFhpU19RTTJhaV88P0dmRyBpUmZnICRrZFhpU18xZmc1W2hdWydrWCddIC4gIl8iIC4gJGtkWGlTX3lraTJYMVska2xfeWtpMlhdWydrWCddOyA/PiIgICBRTTJhaT0iPD9HZkcgaVJmZyAka2RYaVNfUU0yYWkxW2hdWydrbF95a2kyWF8nIC4gJGtkWGlTX3lraTJYMVska2xfeWtpMlhdWydrWCddXTsgPz4iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gaTIxaSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJSZ2RJY2cyLWxjZ2FHIiAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJNSGkyIFIyTTExPSJSZ2RJY2cyLTJNSGkyIj4gPD9HZkcgaVJmZyAkeWtpMlhfZE1xaTsgPz48LzJNSGkyPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IlJnZEljZzIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2RHYUkgSUtHaT0iSWlTSSIgZE1xaT0ia2RYaVNfUU0yYWlfPD9HZkcgaVJmZyAka2RYaVNfMWZnNVtoXVsna1gnXSAuICJfIiAuICRrZFhpU195a2kyWDFbJGtsX3lraTJYXVsna1gnXTsgPz4iICAgPD9HZkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoJGtkWGlTX3lraTJYMVska2xfeWtpMlhdWydxTWRYTUlnY0snXSA9PSAnMCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVJmZyAnIGNpRWFrY2lYICc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+IFIyTTExPSIxR01kMGggUU0ya1hNSWlfeWFkIEhhSUlnZF9SMmlNY188P0dmRyBpUmZnICRrZFhpU18xZmc1W2hdWydrWCddOyA/PiIgIFFNMmFpPSI8P0dmRyBpUmZnICRrZFhpU19RTTJhaTFbaF1bJ2tsX3lraTJYXycgLiAka2RYaVNfeWtpMlgxWyRrbF95a2kyWF1bJ2tYJ11dOyA/PiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGtkR2FJIElLR2k9ImZrWFhpZCIgZE1xaT0ieWtpMlhfSUtHaV88P0dmRyBpUmZnICRrZFhpU18xZmc1W2hdWydrWCddOyA/PltdIiBRTTJhaT0iPD9HZkcgaVJmZyAkeWtpMlhfSUtHaTsgPz4iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2RHYUkgSUtHaT0iZmtYWGlkIiBkTXFpPSJ5a2kyWF9rWDFfPD9HZkcgaVJmZyAka2RYaVNfMWZnNVtoXVsna1gnXTsgPz5bXSIgUU0yYWk9Ijw/R2ZHIGlSZmcgJGtkWGlTX3lraTJYMVska2xfeWtpMlhdWydrWCddOyA/PiIvPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CgoKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhjPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZKPnpkWGlTIDhNMUlpYzwvZko+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmYyAxSUsyaT0iSGdjWGljLVJnMmdjOiNSeEh5SFgiPi0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoaXFHSUsoJGtkWGlTX3FNMUlpYykgfHwgJGtkWGlTX3FNMUlpY1toXSA9PSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwxR01kIFIyTTExPSIyTUhpMiI+cGcgemRYaVMgOE0xSWljIElNbGxpWCA1a0lmIElmazEgUk1JaWxnY0shPC8xR01kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9HZkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBpMjFpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlnYyAoJHFNID0gaDsgJHFNIDwgJGRnX2tkWGlTX3FNMUlpYzsgJHFNKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAka2RYaVNfcU0xSWljX1hpSU1rMjEgPSAkcU0xSWljLT5saUl6ZFhpUzhNMUlpY19DS3pYKCRrZFhpU19xTTFJaWNbJHFNXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHFNMUlpY19RTTJhaTEgPSAka2RYaVMtPmxpSXpkWGlTbk0yYWlfQ0tqZ1J6WEFwajhNMUlpY3pqKCRrWCwgJGtkWGlTX3FNMUlpY19YaUlNazIxW2hdWydrWCddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2lSZ2NYX1FNMmFpMSA9IE1jY01LKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWdjICgkcVEgPSBoOyAkcVEgPCBSZ2FkSSgkcU0xSWljX1FNMmFpMSk7ICRxUSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1jY01LX0dhMWYoJGNpUmdjWF9RTTJhaTEsICRxTTFJaWNfUU0yYWkxWyRxUV1bJ2tkWGlTX3FNMUlpY19RTTJhaV9rWCddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNpUl8xSWMgPSBANGdrZCgnLCcsICRjaVJnY1hfUU0yYWkxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZEdhSSBJS0dpPSJma1hYaWQiIGRNcWk9ImtkWGlTX3FNMUlpY19rWFtdIiBRTTJhaT0iPD9HZkcgaVJmZyAka2RYaVNfcU0xSWljX1hpSU1rMjFbaF1bJ2tYJ107ID8+Ii8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmSj56ZFhpUyA4TTFJaWMgKDw/R2ZHIGlSZmcgJGtkWGlTX3FNMUlpY19YaUlNazIxW2hdWydrZFhpU19xTTFJaWMnXSA/Pik8L2ZKPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmMgMUlLMmk9IkhnY1hpYy1SZzJnYzojUnhIeUhYIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRSTUlpbGdjS19rZFhpU19xTTFJaWMgPSAkcU0xSWljLT5saUl6ZFhpUzhNMUlpYzhNZFhNSWdjS0NLejhfUE1JaWxnY0soJFJNSWlsZ2NLX2tYLCAka2RYaVNfcU0xSWljX1hpSU1rMjFbaF1bJ2tYJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5ICghaXFHSUsoJFJNSWlsZ2NLX2tkWGlTX3FNMUlpYykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVJmZyAiPGtkR2FJIElLR2k9J2ZrWFhpZCcgZE1xaT0ncU1kWE1JZ2NLX2tkWGlTX3FNMUlpYycgUU0yYWk9JyIgLiAka2RYaVNfcU0xSWljX1hpSU1rMjFbaF1bJ2tYJ10gLiAiJz4gKDhNZFhNSWdjSykiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IiIga1g9IjFfWGtRX2tkWGlTX3FNMUlpY188P0dmRyBpUmZnICRrZFhpU19xTTFJaWNfWGlJTWsyMVtoXVsna1gnXTsgPz4iPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIGtYPSIxX1hrUV9rZFhpU19xTTFJaWNfMWlNY1JmX1JnZElpZElfPD9HZkcgaVJmZyAka2RYaVNfcU0xSWljX1hpSU1rMjFbaF1bJ2tYJ107ID8+Ij4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1Ega1g9IjFfWGtRX2tkWGlTX3FNMUlpY195a2kyWDFfPD9HZkcgaVJmZyAka2RYaVNfcU0xSWljX1hpSU1rMjFbaF1bJ2tYJ107ID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8MVJja0dJIGRnZFJpPTw/R2ZHIGlSZmcgJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydhMWljZGdkUmknXTsgPz4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTTRNU19SZ3FxZ2RfY2lFYWkxSSgnWHExLzFrX2tkWGlTX3FNMUlpY19IS2tkWGlTLkdmRz9rWD08P0dmRyBpUmZnICRrZFhpU19xTTFJaWNfWGlJTWsyMVtoXVsna1gnXTsgPz4mY2lSZ2NYX2tYPTw/R2ZHIGlSZmcgJGNpUl8xSWM7ID8+JjVrWElmPXRoRicsICcxX1hrUV9rZFhpU19xTTFJaWNfPD9HZkcgaVJmZyAka2RYaVNfcU0xSWljX1hpSU1rMjFbaF1bJ2tYJ107ID8+Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvMVJja0dJPgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZjPjwvZmM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMSA9ICJSZ2RJaWRJLTVrWGxpSTEiPgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMSA9ICJ5Z2NxLU1SSWtnZDEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhhSUlnZCBJS0dpID0gIkhhSUlnZCIga1ggPSAiMWFIcWtJSElkIiBSMk0xMSA9ICJISWQgSElkLUdja3FNY0siPnVHWE1JaTwvSGFJSWdkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9HZkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5ICgkZGlTSV9rWCAhPSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE0ga1g9Ijw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJGRpU0lfa1gsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiIgUjJNMTE9ImRpU0kiIElrSTJpPSJwaVNJIiBSMk0xMT0iSU1IMmlfSWdnMl8ya2ROIiA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIYUlJZ2QgUjJNMTE9IkhJZCBISWQta2R5ZyIgSUtHaT0iSGFJSWdkIiA+PEg+cGlTSTwvSD48L0hhSUlnZD48L00+ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGFJSWdkIElLR2k9IkhhSUlnZCIgUjJNMTE9IkhJZCBISWQtUk1kUmkyIj5QTWRSaTI8L0hhSUlnZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveWdjcT4gIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxYa1Ega1g9J1hrUV9HY2lRa2k1X2tkWGlTa2RsJyBSMk0xMT0iMUdNZHgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9HZkcgLy8ga2RSMmFYaV9nZFJpKCdYcTFfa2RYaVNrZGxfa2RSMi5HZkcnKTsgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgPC9Ya1E+CgogICAgICAgICAgICA8MUlLMmk+CiAgICAgICAgICAgICAgICAucWdYTTItWGtNMmdsdCAgezVrWElmOndKaEdTO30KICAgICAgICAgICAgPC8xSUsyaT4KCiAgICAgICAgICAgIDxYa1EgUjJNMTE9InFnWE0ydCB5TVhpIiBrWD0iMV9xTTFJaWNrZFhpU18xaU1jUmZfR2dHYUciIElNSGtkWGlTPSItMCIgY2cyaT0iWGtNMmdsIiBNY2tNLTJNSGkyMmlYSEs9InFLOGdYTTJyTUhpMiIgTWNrTS1ma1hYaWQ9IkljYWkiIFhNSU0tSE1STlhjZ0c9IjFJTUlrUiIgWE1JTS1OaUtIZ01jWD0ieU0yMWkiID4KICAgICAgICAgICAgICAgIDx5Z2NxIFIyTTExPSJxZ1hNMi15Z2NxIiBrWD0iMV9rZFhpU19HZ0dhR3lnY3EiIHFpSWZnWD0iR2cxSSIgTVJJa2dkPSIjIj4KICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJxZ1hNMi1Ya00yZ2x0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0icWdYTTItUmdkSWlkSXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0icWdYTTItZmlNWGljdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhhSUlnZCBJS0dpPSJIYUlJZ2QiIFIyTTExPSJSMmcxaSIgWE1JTS1YazFxazExPSJxZ1hNMiIgTWNrTS1ma1hYaWQ9IkljYWkiPiZJa3FpMTs8L0hhSUlnZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmIgUjJNMTE9InFnWE0yLUlrSTJpdCIga1g9InFLOGdYTTJyTUhpMiI+emRYaVMgOE0xSWljIDZpTWNSZiBPaTFhMkkxPC9mYj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0icWdYTTItSGdYS3QiIDFJSzJpPSJmaWtsZkk6IGJoaEdTO2dRaWN5Mmc1OiAxUmNnMjI7Ij4gICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIGtYPSIxX3FNMUlpY2tkWGlTXzFpTWNSZl9HZ0dhR19SZ2RJaWRJIiA+PC9Ya1E+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJxZ1hNMi15Z2dJaWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGFJSWdkIElLR2k9IkhhSUlnZCIgUjJNMTE9IkhJZCBISWQtMWFSUmkxMSBHZ0dhR18xaTJfSElkIj42aTJpUkk8L0hhSUlnZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGFJSWdkIElLR2k9IkhhSUlnZCIgUjJNMTE9IkhJZCBISWQtWGl5TWEySSIgWE1JTS1YazFxazExPSJxZ1hNMiI+UDJnMWk8L0hhSUlnZD4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+PCEtLSAvLnFnWE0yLVJnZElpZEkgLS0+CiAgICAgICAgICAgICAgICAgICAgPC9Ya1E+PCEtLSAvLnFnWE0yLVhrTTJnbCAtLT4KICAgICAgICAgICAgICAgIDwveWdjcT4KICAgICAgICAgICAgPC9Ya1E+CgogICAgICAgICAgICA8WGtRIFIyTTExPSJxZ1hNMnQgeU1YaSIga1g9IjFfcU0xSWlja2RYaVNfa2R5Z19HZ0dhRyIgSU1Ia2RYaVM9Ii0wIiBjZzJpPSJYa00yZ2wiIE1ja00tMk1IaTIyaVhISz0ia3Ffa2R5Z19xZ1hNMiIgTWNrTS1ma1hYaWQ9IkljYWkiIFhNSU0tSE1STlhjZ0c9IjFJTUlrUiIgWE1JTS1OaUtIZ01jWD0ieU0yMWkiID4KICAgICAgICAgICAgICAgIDx5Z2NxIFIyTTExPSJxZ1hNMi15Z2NxIiBrWD0iMV9rZFhpU19rZHlnX0dnR2FHeWdjcSIgcWlJZmdYPSJHZzFJIiBNUklrZ2Q9IiMiPgogICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9InFnWE0yLVhrTTJnbHQiPgogICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJxZ1hNMi1SZ2RJaWRJdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJxZ1hNMi1maU1YaWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGFJSWdkIElLR2k9IkhhSUlnZCIgUjJNMTE9IlIyZzFpIiBYTUlNLVhrMXFrMTE9InFnWE0yIiBNY2tNLWZrWFhpZD0iSWNhaSI+JklrcWkxOzwvSGFJSWdkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmYiBSMk0xMT0icWdYTTItSWtJMml0IiBrWD0icUs4Z1hNMnJNSGkyIj56ZFhpUyA4TTFJaWMgT2lSZ2NYIGppSU1rMjE8L2ZiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJxZ1hNMi1IZ1hLdCIgMUlLMmk9ImdRaWN5Mmc1OiAxUmNnMjI7Ij4gICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIGtYPSIxX3FNMUlpY2tkWGlTX2tkeWdfR2dHYUdfUmdkSWlkSSIgPjwvWGtRPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0icWdYTTIteWdnSWljdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhhSUlnZCBJS0dpPSJIYUlJZ2QiIFIyTTExPSJISWQgSElkLVhpeU1hMkkiIFhNSU0tWGsxcWsxMT0icWdYTTIiPlAyZzFpPC9IYUlJZ2Q+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPjwhLS0gLy5xZ1hNMi1SZ2RJaWRJIC0tPgogICAgICAgICAgICAgICAgICAgIDwvWGtRPjwhLS0gLy5xZ1hNMi1Ya00yZ2wgLS0+CiAgICAgICAgICAgICAgICA8L3lnY3E+CiAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICA8WGtRIFIyTTExPSJxZ1hNMnQgeU1YaSIga1g9InlrMmlfMUlNSWExX1JncXFpZEkxIiBJTUhrZFhpUz0iLTAiIGNnMmk9IlhrTTJnbCIgTWNrTS0yTUhpMjJpWEhLPSJrcV9rZHlnX3FnWE0yIiBNY2tNLWZrWFhpZD0iSWNhaSIgWE1JTS1ITVJOWGNnRz0iMUlNSWtSIiBYTUlNLU5pS0hnTWNYPSJ5TTIxaSIgPgogICAgICAgICAgICAgICAgPHlnY3EgUjJNMTE9InFnWE0yLXlnY3EiIGtYPSJ5azJpXzFJTUlhMV9SZ3FxaWRJMV95Z2NxIiBxaUlmZ1g9IkdnMUkiIE1SSWtnZD0iIyI+CiAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0icWdYTTItWGtNMmdsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9InFnWE0yLVJnZElpZEl0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9InFnWE0yLWZpTVhpY3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIYUlJZ2QgSUtHaT0iSGFJSWdkIiBSMk0xMT0iUjJnMWkiIFhNSU0tWGsxcWsxMT0icWdYTTIiIE1ja00tZmtYWGlkPSJJY2FpIj4mSWtxaTE7PC9IYUlJZ2Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZiIFIyTTExPSJxZ1hNMi1Ja0kyaXQiIGtYPSJxSzhnWE0yck1IaTIiPkJrMmkgNklNSWExIFBncXFpZEkxPC9mYj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0icWdYTTItSGdYS3QiIDFJSzJpPSJnUWljeTJnNTogMVJjZzIyOyI+ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIGtYPSJ5azJpXzFJTUlhMV9SZ3FxaWRJMV9Ya1EiID48L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0icWdYTTIteWdnSWljdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhhSUlnZCBJS0dpPSJIYUlJZ2QiIFIyTTExPSJISWQgSElkLVhpeU1hMkkiIFhNSU0tWGsxcWsxMT0icWdYTTIiPlAyZzFpPC9IYUlJZ2Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+PCEtLSAvLnFnWE0yLVJnZElpZEkgLS0+CiAgICAgICAgICAgICAgICAgICAgPC9Ya1E+PCEtLSAvLnFnWE0yLVhrTTJnbCAtLT4KICAgICAgICAgICAgICAgIDwveWdjcT4KICAgICAgICAgICAgPC9Ya1E+CgoKICAgICAgICAgICAgPDFSY2tHSSBkZ2RSaSA9PD9HZkcgaVJmZyAkXzZaNjZ6dnBbNlo2Nnp2cF9uQU9fcEE4Wl1bJ2ExaWNkZ2RSaSddOyA/PiA+CiAgICAgICAgICAgICAgICAkKHlhZFJJa2dkICgpIHsKCgogICAgICAgICAgICAgICAgICAgICQoIiMxX1hrUV9rZFhpU19xTTFJaWNfMWlNY1JmIikuZmtYaSgpOwogICAgICAgICAgICAgICAgICAgICQoWGdSYXFpZEkpLmdkKCJSZk1kbGkiLCAiLlIyTTExX2txX3lraTJYMSIsIHlhZFJJa2dkICgpIHsKCgogICAgICAgICAgICAgICAgICAgICAgICBRTWMga2RYaVNfcU0xSWljX3lrWCA9ICQoSWZrMSkuR2NnRygnUU0yYWknKS4xRzJrSSgnfCcpW2hdOwogICAgICAgICAgICAgICAgICAgICAgICBRTWMga2RYaVNfcU0xSWljX2tYID0gJChJZmsxKS5HY2dHKCdRTTJhaScpLjFHMmtJKCd8JylbMF07CiAgICAgICAgICAgICAgICAgICAgICAgIGt5IChrZFhpU19xTTFJaWNfeWtYICE9ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjMV9Ya1Ffa2RYaVNfcU0xSWljXzFpTWNSZiIpLjFmZzUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE00TVNfUmdxcWdkX2NpRWFpMUkoJ1hxMS8xa19rZFhpU19xTTFJaWNfeWtpMlgxXzFpTWNSZl9RTTIuR2ZHP1hnUl9rWD08P0dmRyBpUmZnIGlkUmNLR0lfYWMyKCRrWCwgQXNzX1pwUE9lc1d6dnBfNkFyVyk7ID8+JkdrWD08P0dmRyBpUmZnIGlkUmNLR0lfYWMyKCRHa1gsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiZrZFhpU19xTTFJaWNfeWtYPScgKyBrZFhpU19xTTFJaWNfeWtYICsgJyZrZFhpU19xTTFJaWNfa1g9JyArIGtkWGlTX3FNMUlpY19rWCArICcmMWlNY1JmX0hLX3lraTJYMT1JY2FpJywgJzFfWGtRX2tkWGlTX3FNMUlpY195a2kyWF8xaU1jUmZfUU0yXycgKyBrZFhpU19xTTFJaWNfa1gpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGkyMWkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBrZFhpU19xTTFJaWNfa1ggPSAkKElmazEpLkdjZ0coJ2tYJykuMUcya0koJ18nKVtiXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyMxX1hrUV9rZFhpU19xTTFJaWNfeWtpMlhfMWlNY1JmX1FNMl8nICsga2RYaVNfcU0xSWljX2tYKS5mSXEyKCIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAkKFhnUmFxaWRJKS5nZCgiUmZNZGxpIE5pS2FHIHlnUmExa2QiLCAiLlIyTTExX2tkWGlTX3FNMUlpY195a2kyWF9RTTIiLCB5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBrZFhpU19xTTFJaWNfeWtYID0gJChJZmsxKS5HY2dHKCdkTXFpJykuMUcya0koJ18nKVtiXTsKICAgICAgICAgICAgICAgICAgICAgICAgUU1jIHFNMUlpY19rWCA9ICQoSWZrMSkuR2NnRygnZE1xaScpLjFHMmtJKCdfJylbSl07CiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyAxaTJfUU0yYWkgPSAkKElmazEpLkdjZ0coJ1FNMmFpJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIE00TVNfUmdxcWdkX2NpRWFpMUkoJ1hxMS8xa19rZFhpU19xTTFJaWNfeWtpMlhfUmZpUk4uR2ZHP3FNMUlpY19rWD0nICsgcU0xSWljX2tYICsgJyZrZFhpU19xTTFJaWNfeWtYPScgKyBrZFhpU19xTTFJaWNfeWtYICsgJyYxaTJfUU0yYWk9JyArIGlkUmdYaXVPelBncUdnZGlkSSgxaTJfUU0yYWkpLCAneWtpMlhfUU0yX3FNSVJmXycgKyBrZFhpU19xTTFJaWNfeWtYKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAkKFhnUmFxaWRJKS5nZCgiUjJrUk4iLCAiLlIyTTExX2txX2tkeWcsIC5ISWRfa3Ffa2R5ZyIsIHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9RTWMga2RYaVNfcU0xSWljXzFpTWNSZl95a2kyWF9rWCA9ICQoSWZrMSkuR2NnRygnUU0yYWknKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy9NNE1TX1JncXFnZF9jaUVhaTFJKCdYcTEvMWtfa2RYaVNfcU0xSWljX3lraTJYMV8xaU1jUmZfUU0yLkdmRz9YZ1Jfa1g9PD9HZkcgaVJmZyBpZFJjS0dJX2FjMigka1gsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiZHa1g9PD9HZkcgaVJmZyBpZFJjS0dJX2FjMigkR2tYLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4ma2RYaVNfcU0xSWljXzFpTWNSZl95a2kyWF9rWD0nICsga2RYaVNfcU0xSWljXzFpTWNSZl95a2kyWF9rWCArICcmMWlNY1JmX0hLX3lraTJYMT1JY2FpJywgJzFfWGtRX2tkWGlTX3FNMUlpY195a2kyWF8xaU1jUmZfUU0yJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAkKCcjMV9xTTFJaWNrZFhpU19rZHlnX0dnR2FHJykucWdYTTIoJzFmZzUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgUU1jIGtYID0gJChJZmsxKS5HY2dHKCdrWCcpLjFHMmtJKCJfIik7CiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBjX2tYID0ga1hbaF07CiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBxTTFJaWNfa1ggPSBrWFswXTsKICAgICAgICAgICAgICAgICAgICAgICAgJC5NNE1TKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElLR2k6ICJzdjZXIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjMjogJ1hxMS8xa19rZFhpU19xTTFJaWNfa2R5Zy5HZkc/Y19rWD0nICsgY19rWCArICcmcU0xSWljX2tYPScgKyBxTTFJaWNfa1gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUlNOiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpeWdjaTZpZFg6IHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuc2dHYUdzTWRpMiIpLjFmZzUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY2NnYzogeWFkUklrZ2QgKFhNSU0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuc2dHYUdzTWRpMiIpLmZrWGkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0hnZ0lIZ1MuTTJpY0koIk9pRWFpMUkgeU1rMmlYIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMWFSUmkxMTogeWFkUklrZ2QgKFhNSU0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuc2dHYUdzTWRpMiIpLjFmZzUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZ3FHMmlJaTogeWFkUklrZ2QgKFhNSU0pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiLnNnR2FHc01kaTIiKS5ma1hpKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiIzFfcU0xSWlja2RYaVNfa2R5Z19HZ0dhR19SZ2RJaWRJIikuZklxMihYTUlNLmNpMUdnZDFpV2lTSSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICQoWGdSYXFpZEkpLmdkKCJSMmtSTiIsICIuUjJNMTFfa3FfMWlNY1JmIiwgeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKCcjMV9xTTFJaWNrZFhpU18xaU1jUmZfR2dHYUcnKS5xZ1hNMignMWZnNScpOwogICAgICAgICAgICAgICAgICAgICAgICBRTWMga2RYaVNfcU0xSWljX3lrWCA9ICQoSWZrMSkuR2NnRygna1gnKS4xRzJrSSgnXycpW0ZdOwogICAgICAgICAgICAgICAgICAgICAgICBRTWMgcU0xSWljX2tYID0gJChJZmsxKS5HY2dHKCdrWCcpLjFHMmtJKCdfJylbYl07CiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyAxaU1jUmZfUU0yID0gJChJZmsxKS5HY2dHKCdrWCcpLjFHMmtJKCdfJylbSl07CiAgICAgICAgICAgICAgICAgICAgICAgICQuTTRNUyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJS0dpOiAic3Y2VyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYzI6ICdYcTEvMWtfa2RYaVNfcU0xSWljX3lraTJYMV8xaU1jUmZfY2kxYTJJLkdmRz9HTWxpPTAmeWtpMlhfa1g9JyArIGtkWGlTX3FNMUlpY195a1ggKyAnJnFNMUlpY19rWD0nICsgcU0xSWljX2tYICsgJyYxaU1jUmZfUU0yPScgKyBpZFJnWGl1T3pQZ3FHZ2RpZEkoMWlNY1JmX1FNMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUlNOiAkKCcjWlhrSUJnY3EnKS4xaWNrTTJrRGkoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpeWdjaTZpZFg6IHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuc2dHYUdzTWRpMiIpLjFmZzUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY2NnYzogeWFkUklrZ2QgKFhNSU0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuc2dHYUdzTWRpMiIpLmZrWGkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0hnZ0lIZ1MuTTJpY0koIk9pRWFpMUkgeU1rMmlYIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMWFSUmkxMTogeWFkUklrZ2QgKFhNSU0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuc2dHYUdzTWRpMiIpLjFmZzUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZ3FHMmlJaTogeWFkUklrZ2QgKFhNSU0pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiLnNnR2FHc01kaTIiKS5ma1hpKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiIzFfcU0xSWlja2RYaVNfMWlNY1JmX0dnR2FHX1JnZElpZEkiKS5mSXEyKFhNSU0uY2kxR2dkMWlXaVNJKQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgJChYZ1JhcWlkSSkuZ2QoIlIya1JOIiwgIi4xX0hJZF9rZFhpU195a2kyWF8xaU1jUmYiLCB5YWRSSWtnZCAoKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBRTWMga2RYaVNfcU0xSWljX2tYID0gJCgiIzFpMl95a2kyWF9rZFhpU19xTTFJaWNfa1giKS5HY2dHKCdRTTJhaScpOwogICAgICAgICAgICAgICAgICAgICAgICBRTWMgMWkyaVJJaVhfcU0xSWljX2tkWGlTX2tYX01jYyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAkKCdrZEdhSVtkTXFpXj0xaTJpUklpWF9rZFhpU19xTTFJaWNfa1hfJyArIGtkWGlTX3FNMUlpY19rWCArICddJykuaU1SZih5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxaTJpUklpWF9xTTFJaWNfa2RYaVNfa1hfTWNjLkdhMWYoJChJZmsxKS5RTTIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAvL00yaWNJKGtkWGlTX3FNMUlpY19rWCk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vTTJpY0koMWkyaVJJaVhfcU0xSWljX2tkWGlTX2tYX01jYyk7CgogICAgICAgICAgICAgICAgICAgICAgICBreSAoNFRhaWNLLmtkQWNjTUsoa2RYaVNfcU0xSWljX2tYLCAxaTJpUklpWF9xTTFJaWNfa2RYaVNfa1hfTWNjKSA9PSAtMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnIzFfcU0xSWlja2RYaVNfMWlNY1JmX0dnR2FHJykucWdYTTIoJzFmZzUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBrZFhpU19xTTFJaWNfeWtYID0gJCgiIzFfa2RYaVNfcU0xSWljX3lrWCIpLkdjZ0coJ1FNMmFpJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLk00TVMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElLR2k6ICJzdjZXIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYzI6ICdYcTEvMWtfa2RYaVNfcU0xSWljX3lraTJYMV8xaU1jUmZfY2kxYTJJLkdmRz9HTWxpPTAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNSU06ICQoJyNaWGtJQmdjcScpLjFpY2tNMmtEaSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpeWdjaTZpZFg6IHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiLnNnR2FHc01kaTIiKS4xZmc1KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY2NnYzogeWFkUklrZ2QgKFhNSU0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiLnNnR2FHc01kaTIiKS5ma1hpKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vSGdnSUhnUy5NMmljSSgiT2lFYWkxSSB5TWsyaVgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFhUlJpMTE6IHlhZFJJa2dkIChYTUlNKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIi5zZ0dhR3NNZGkyIikuMWZnNSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmdxRzJpSWk6IHlhZFJJa2dkIChYTUlNKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuc2dHYUdzTWRpMiIpLmZrWGkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiIzFfcU0xSWlja2RYaVNfMWlNY1JmX0dnR2FHX1JnZElpZEkiKS5mSXEyKFhNSU0uY2kxR2dkMWlXaVNJKQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBpMjFpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhnZ0lIZ1MuTTJpY0koIkEyY2lNWEsgemRYaVMgOE0xSWljIE9pUmdjWCA2aTJpUklpWCEiKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgICAgJChYZ1JhcWlkSSkuZ2QoIlIya1JOIiwgIi5HZ0dhR18xaTJfSElkIiwgeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICBRTWMga1ggPSAkKCdrZEdhSTpjTVhrZ1tkTXFpPTFpMl9HZ0dfY2lSZ2NYXzFpSV9rWF06UmZpUk5pWCcpLlFNMigpOwogICAgICAgICAgICAgICAgICAgICBRTWMgMWkyX0dnR19jaVJnY1hfMWlJX2tYID0ga1guMUcya0koIl8iKVtoXTsKICAgICAgICAgICAgICAgICAgICAgUU1jIHFNMUlpY19rWCA9IGtYLjFHMmtJKCJfIilbMF07CiAgICAgICAgICAgICAgICAgICAgIFFNYyB5a2kyWF9rWCA9IGtYLjFHMmtJKCJfIilbdF07CiAgICAgICAgICAgICAgICAgICAgIFFNYyAxaTJpUklpWF9jaVJnY1hfMWlJX2tYX01jYyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAkKCdrZEdhSVtkTXFpXj0xaTJpUklpWF9jaVJnY1hfMWlJX2tYXycgKyBxTTFJaWNfa1ggKyAnXScpLmlNUmYoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAxaTJpUklpWF9jaVJnY1hfMWlJX2tYX01jYy5HYTFmKCQoSWZrMSkuUU0yKCkpOwogICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgUU1jIDFpMmlSSWlYX3FNMUlpY19rZFhpU19rWF9NY2MgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgJCgna2RHYUlbZE1xaV49MWkyaVJJaVhfcU0xSWljX2tkWGlTX2tYXScpLmlNUmYoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAxaTJpUklpWF9xTTFJaWNfa2RYaVNfa1hfTWNjLkdhMWYoJChJZmsxKS5RTTIoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICBRTWMgMV9HZ0dfMWlNY1JmX3lrWCA9ICQoIiMxX0dnR18xaU1jUmZfeWtYIikuR2NnRygnUU0yYWknKTsKICAgICAgICAgICAgICAgICAgICAgUU1jIDFfR2dHX2tkWGlTX3FNMUlpY19rWCA9ICQoIiMxX0dnR19rZFhpU19xTTFJaWNfa1giKS5HY2dHKCdRTTJhaScpCiAgICAgICAgICAgICAgICAgICAgIFFNYyAxX0dnR195a2kyWF9xTUlSZl9RTTIgPSAkKCIjMV9HZ0dfeWtpMlhfcU1JUmZfUU0yXyIgKyBxTTFJaWNfa1gpLkdjZ0coJ1FNMmFpJyk7CiAgICAgICAgICAgICAgICAgICAgICQoImtkR2FJW2RNcWk9a2RYaVNfcU0xSWljX3lraTJYX1FNMl8iICsgMV9HZ0dfMWlNY1JmX3lrWCArICdfJyArIDFfR2dHX2tkWGlTX3FNMUlpY19rWCArICddJykuR2NnRygiUU0yYWkiLCAxX0dnR195a2kyWF9xTUlSZl9RTTIpOwogICAgICAgICAgICAgICAgICAgICAkKCcjMV9xTTFJaWNrZFhpU18xaU1jUmZfR2dHYUcnKS5xZ1hNMignZmtYaScpOwogICAgICAgICAgICAgICAgICAgICBIZ2dJSGdTLmZrWGlBMjIoKTsKICAgICAgICAgICAgICAgICAgICAgMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWF9NY2MuR2ExZigxaTJfR2dHX2NpUmdjWF8xaUlfa1gpOwogICAgICAgICAgICAgICAgICAgICBNNE1TX1JncXFnZF9jaUVhaTFJKCdYcTEvMWtfa2RYaVNfcU0xSWljX3lraTJYX1JmaVJOLkdmRz9YZ1Jfa1g9PD9HZkcgaVJmZyBpZFJjS0dJX2FjMigka1gsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiZHa1g9PD9HZkcgaVJmZyBpZFJjS0dJX2FjMigkR2tYLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4mY2lSZ2NYXzFpSV9rWD0nICsgMWkyX0dnR19jaVJnY1hfMWlJX2tYICsgJyZxTTFJaWNfa1g9JyArIHFNMUlpY19rWCArICcma2RYaVNfcU0xSWljX3lrWD0nICsgeWtpMlhfa1gsICd5a2kyWF9RTTJfcU1JUmZfJyArIDFfR2dHXzFpTWNSZl95a1gpOwogICAgICAgICAgICAgICAgICAgICB9KTsqLwoKICAgICAgICAgICAgICAgICAgICAkKFhnUmFxaWRJKS5nZCgiUjJrUk4iLCAiLkdnR2FHXzFpMl9ISWQiLCB5YWRSSWtnZCAoKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBRTWMgMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWF9NY2MgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgUU1jIHFNMUlpY19rWF9NY2MgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgUU1jIHlraTJYX2tYX01jYyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICBRTWMgMWlNY1JmemoxID0gJCgia2RHYUk6UmZpUk5IZ1NbZE1xaT0xaTJfR2dHX2NpUmdjWF8xaUlfa1hdOlJmaVJOaVgiKS5xTUcoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1jIGtYID0gJChJZmsxKS5RTTIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNYyAxaTJfR2dHX2NpUmdjWF8xaUlfa1ggPSBrWC4xRzJrSSgiXyIpW2hdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1jIHFNMUlpY19rWCA9IGtYLjFHMmtJKCJfIilbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWMgeWtpMlhfa1ggPSBrWC4xRzJrSSgiXyIpW3RdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWF9NY2MuR2ExZigxaTJfR2dHX2NpUmdjWF8xaUlfa1gpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcU0xSWljX2tYX01jYy5HYTFmKHFNMUlpY19rWCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5a2kyWF9rWF9NY2MuR2ExZih5a2kyWF9rWCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaUlhY2QgMWkyX0dnR19jaVJnY1hfMWlJX2tYOwogICAgICAgICAgICAgICAgICAgICAgICB9KS5saUkoKTsKICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgJCgnIzFfcU0xSWlja2RYaVNfMWlNY1JmX0dnR2FHJykucWdYTTIoJ2ZrWGknKTsKICAgICAgICAgICAgICAgICAgICAgICAgSGdnSUhnUy5ma1hpQTIyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBreSAoMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWF9NY2MuMmlkbElmID4gaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1jIGtkWGlTX3FNMUlpY19rWCA9IHFNMUlpY19rWF9NY2NbaF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1jIDFfR2dHXzFpTWNSZl95a1ggPSAkKCIjMV9HZ0dfMWlNY1JmX3lrWCIpLkdjZ0coJ1FNMmFpJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWMgMV9HZ0dfa2RYaVNfcU0xSWljX2tYID0gJCgiIzFfR2dHX2tkWGlTX3FNMUlpY19rWCIpLkdjZ0coJ1FNMmFpJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNYyAxX0dnR195a2kyWF9xTUlSZl9RTTIgPSAkKCIjMV9HZ0dfeWtpMlhfcU1JUmZfUU0yXyIgKyBrZFhpU19xTTFJaWNfa1gpLkdjZ0coJ1FNMmFpJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCJrZEdhSVtkTXFpPWtkWGlTX3FNMUlpY195a2kyWF9RTTJfIiArIDFfR2dHXzFpTWNSZl95a1ggKyAnXycgKyAxX0dnR19rZFhpU19xTTFJaWNfa1ggKyAnXScpLkdjZ0coIlFNMmFpIiwgMV9HZ0dfeWtpMlhfcU1JUmZfUU0yKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWMgaVNrMUkxX2NpUmdjWF8xaUlfa1ggPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJ1trWF49WGtRa3ExaTJjMWlJXScpLmlNUmYoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vWGtRa3ExaTJjMWlJX3RfdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBrWCA9ICQoSWZrMSkuR2NnRygia1giKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWMgcU0xSWljX2tYID0ga1guMUcya0koIl8iKVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWMgY2lSZ2NYXzFpSV9rWCA9IGtYLjFHMmtJKCJfIilbdF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVNrMUkxX2NpUmdjWF8xaUlfa1guR2ExZihxTTFJaWNfa1ggKyAnXycgKyBjaVJnY1hfMWlJX2tYKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuTTRNUyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUtHaTogInN2NlciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjMjogJ1hxMS8xa19rZFhpU19xTTFJaWNfeWtpMlhfUmZpUk4uR2ZHP1hnUl9rWD08P0dmRyBpUmZnIGlkUmNLR0lfYWMyKCRrWCwgQXNzX1pwUE9lc1d6dnBfNkFyVyk7ID8+JkdrWD08P0dmRyBpUmZnIGlkUmNLR0lfYWMyKCRHa1gsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiZjaVJnY1hfMWlJX2tYPScgKyAxaTJpUklpWF9jaVJnY1hfMWlJX2tYX01jYyArICcmcU0xSWljX2tYPScgKyBxTTFJaWNfa1hfTWNjICsgJyZrZFhpU19xTTFJaWNfeWtYPScgKyB5a2kyWF9rWF9NY2MgKyAnJmlTazFJMV9jaVJnY1hfMWlJX2tYPScgKyBpU2sxSTFfY2lSZ2NYXzFpSV9rWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaXlnY2k2aWRYOiB5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIi5zZ0dhR3NNZGkyIikuMWZnNSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNjZ2M6IHlhZFJJa2dkIChYTUlNKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIi5zZ0dhR3NNZGkyIikuZmtYaSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMWFSUmkxMTogeWFkUklrZ2QgKFhNSU0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiLnNnR2FHc01kaTIiKS4xZmc1KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZ3FHMmlJaTogeWFkUklrZ2QgKFhNSU0pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIi5zZ0dhR3NNZGkyIikuZmtYaSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyQoIiN5azJpXzFJTUlhMV9SZ3FxaWRJMV9Ya1EiKS5mSXEyKFhNSU0uY2kxR2dkMWlXaVNJKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiIzFfa3FfMWkyX2NpUmdjWDFpSTFfIiArIGtkWGlTX3FNMUlpY19rWCkuTUdHaWRYKFhNSU0uY2kxR2dkMWlXaVNJKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICQoWGdSYXFpZEkpLmdkKCJSMmtSTiIsICcjMWFIcWtJSElkJywgeWFkUklrZ2QgKGkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBNYUlnemRYaVMgPSAkKCcjTWFJZ3pkWGlTa2RsOlJmaVJOaVgnKS5RTTIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgUU1jIDFpMmlSSWlYX3FNMUlpY19rZFhpU19rWF9NY2MgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgJCgna2RHYUlbZE1xaV49MWkyaVJJaVhfa2RYaVNfcU0xSWljX2tYXScpLmlNUmYoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9NMmljSSgkKElmazEpLlFNMigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFpMmlSSWlYX3FNMUlpY19rZFhpU19rWF9NY2MuR2ExZigkKElmazEpLlFNMigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vTTJpY0koMWkyaVJJaVhfcU0xSWljX2tkWGlTX2tYX01jYyk7CgogICAgICAgICAgICAgICAgICAgICAgICBRTWMgcU1kWE1JZ2NLX2tkWGlTX3FNMUlpY19NY2MgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgUU1jIFMgPSBoOwogICAgICAgICAgICAgICAgICAgICAgICAkKCdrZEdhSVtkTXFpXj1xTWRYTUlnY0tfa2RYaVNfcU0xSWljXScpLmlNUmYoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1jIHFfMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWF9NY2MgPSBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgna2RHYUlbZE1xaV49eV8xaTJpUklpWF9jaVJnY1hfMWlJX2tYXycgKyAkKElmazEpLlFNMigpICsgJ10nKS5pTVJmKHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxXzFpMmlSSWlYX2NpUmdjWF8xaUlfa1hfTWNjID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgna2RHYUlbZE1xaV49MWkyaVJJaVhfY2lSZ2NYXzFpSV9rWF9nXycgKyAkKElmazEpLlFNMigpICsgJ10nKS5pTVJmKHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxXzFpMmlSSWlYX2NpUmdjWF8xaUlfa1hfTWNjID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9NMmljSShxXzFpMmlSSWlYX2NpUmdjWF8xaUlfa1hfTWNjKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5IChxXzFpMmlSSWlYX2NpUmdjWF8xaUlfa1hfTWNjID09IGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZ2dJSGdTLk0yaWNJKCdzMmlNMWkgUGZnZzFpIDhNZFhNSWdjSyB6ZFhpUyA4TTFJaWMnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLkdjaVFpZElqaXlNYTJJKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVNrSShoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gaTIxaSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUysrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcU1kWE1JZ2NLX2tkWGlTX3FNMUlpY19NY2MuR2ExZigkKElmazEpLlFNMigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vMQogICAgICAgICAgICAgICAgICAgICAgICAvL00yaWNJKHFNZFhNSWdjS19rZFhpU19xTTFJaWNfTWNjLjJpZGxJZik7CgoKCgogICAgICAgICAgICAgICAgICAgICAgICBreSAoUyA9PSBxTWRYTUlnY0tfa2RYaVNfcU0xSWljX01jYy4yaWRsSWYpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjWlhrSUJnY3EnKS4xYUhxa0koKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlTa0koaCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAkKFhnUmFxaWRJKS5nZCgiUjJrUk4iLCAnLlIyTTExX2txX3FnUWknLCB5YWRSSWtnZCAoaSkgewoKCiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBSX2tYMCA9ICQoSWZrMSkuR2NnRygna1gnKS4xRzJrSSgnXycpWzBdOwogICAgICAgICAgICAgICAgICAgICAgICBRTWMgMWkyaVJJaVhfa2RYaVNfcU0xSWljX2tYID0gUl9rWDAuMUcya0koJ3wnKVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgUU1jIDFpMmlSSWlYX2NpUmdjWF8xaUlfa1ggPSBSX2tYMC4xRzJrSSgnfCcpW2hdOwogICAgICAgICAgICAgICAgICAgICAgICBRTWMgMWZnNV9RTTIgPSBSX2tYMC4xRzJrSSgnfCcpW3RdOwogICAgICAgICAgICAgICAgICAgICAgICBRTWMgMWkyX3lfSWlTSSA9ICQoIiMxX2tkWGlTX3FNMUlpY195a1hfIiArIDFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWCArICcgZ0dJa2dkOjFpMmlSSWlYJykuSWlTSSgpOwogICAgICAgICAgICAgICAgICAgICAgICBRTWMgMWkyX3lfa1ggPSAkKCIjMV9rZFhpU19xTTFJaWNfeWtYXyIgKyAxaTJpUklpWF9rZFhpU19xTTFJaWNfa1gpLlFNMigpLjFHMmtJKCd8JylbaF07CiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyAxaTJfeV9RTTJhaSA9ICQoImtkR2FJW2RNcWk9a2RYaVNfcU0xSWljX3lraTJYX1FNMl8iICsgMWkyX3lfa1ggKyAnXycgKyAxaTJpUklpWF9rZFhpU19xTTFJaWNfa1ggKyAiXSIpLlFNMigpOwogICAgICAgICAgICAgICAgICAgICAgICBreSAoMWkyX3lfUU0yYWkgPT0gYWRYaXlrZGlYKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxaTJfeV9RTTJhaSA9IDFmZzVfUU0yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyB5XzFpMmlSSWlYX2NpUmdjWF8xaUlfa1hfTWNjID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICQoJ2tkR2FJW2RNcWlePXlfMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWF8nICsgMWkyaVJJaVhfa2RYaVNfcU0xSWljX2tYICsgJ10nKS5pTVJmKHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlfMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWF9NY2MuR2ExZigkKElmazEpLlFNMigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAkKCdrZEdhSVtkTXFpXj0xaTJpUklpWF9jaVJnY1hfMWlJX2tYX2dfJyArIDFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWCArICddJykuaU1SZih5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5XzFpMmlSSWlYX2NpUmdjWF8xaUlfa1hfTWNjLkdhMWYoJChJZmsxKS5RTTIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBreSAoNFRhaWNLLmtkQWNjTUsoMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWCwgeV8xaTJpUklpWF9jaVJnY1hfMWlJX2tYX01jYykgPT0gLTApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJCgiIzFfa3FfMWkyX2NpUmdjWDFpSTFfIiArIDFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWCkuTUdHaWRYKCcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJCgiIzFfa3FfMWkyX2NpUmdjWDFpSTFfIiArIDFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWCkuTUdHaWRYKCcnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjMV9rcV8xaTJfY2lSZ2NYMWlJMV8iICsgMWkyaVJJaVhfa2RYaVNfcU0xSWljX2tYKS5NR0dpZFgoJzxYa1Ega1g9IlhrUWtxMWkyYzFpSV8nICsgMWkyaVJJaVhfa2RYaVNfcU0xSWljX2tYICsgJ18nICsgMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWCArICciIFIyTTExPSJjZzUteTJha1giPjxYa1EgUjJNMTE9IjFHTWQwdCI+PGtkR2FJIElLR2k9ImZrWFhpZCIgZE1xaT0ieV8xaTJpUklpWF9jaVJnY1hfMWlJX2tYXycgKyAxaTJpUklpWF9rZFhpU19xTTFJaWNfa1ggKyAnW10iIFFNMmFpPSInICsgMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWCArICciPjxrZEdhSSBJS0dpPSJma1hYaWQiIGRNcWk9InlfMWkyaVJJaVhfa2RYaVNfcU0xSWljX2tYXycgKyAxaTJpUklpWF9rZFhpU19xTTFJaWNfa1ggKyAnIiBRTTJhaT0iJyArIDFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWCArICciPjwxR01kIGtYPSInICsgMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWCArICdfJyArIDFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWCArICciIDFJSzJpPSJSYWMxZ2M6IEdna2RJaWMiIFIyTTExPSJSMk0xMV9rcV9rZHlnIDJNSGkyIj4nICsgMWkyX3lfSWlTSSArICc6ICcgKyAxaTJfeV9RTTJhaSArICc8LzFHTWQ+PDFHTWQga1g9IjJNSGkya3FjaXFnUWlfJyArIDFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWCArICdfJyArIDFpMmlSSWlYX2NpUmdjWF8xaUlfa1ggKyAnIiBSMk0xMT0iUjJNMTFfa3FfY2lxZ1FpIDJNSGkyIDJNSGkyLWtxR2djSU1kSSIgMUlLMmk9IlJhYzFnYzogR2drZElpYyIgPjxrIFIyTTExPSJrUmdkLWNpcWdRaSI+PC9rPjwvMUdNZD48L1hrUT48L1hrUT4gJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgJCgiIzFfa3FfMWkyX2NpUmdjWDFpSTFfIiArIDFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWCkuTUdHaWRYKCc8WGtRIGtYPSJYa1FrcTFpMmMxaUlfJyArIDFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWCArICdfJyArIDFpMmlSSWlYX2NpUmdjWF8xaUlfa1ggKyAnIiBSMk0xMT0iY2c1LXkyYWtYIj48WGtRIFIyTTExPSIxR01kMHQiPjxrZEdhSSBJS0dpPSJma1hYaWQiIGRNcWk9IjFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWF8nICsgMWkyaVJJaVhfa2RYaVNfcU0xSWljX2tYICsgJyIgUU0yYWk9IicgKyAxaTJpUklpWF9rZFhpU19xTTFJaWNfa1ggKyAnIj48a2RHYUkgSUtHaT0iZmtYWGlkIiBkTXFpPSIxaTJpUklpWF9jaVJnY1hfMWlJX2tYXycgKyAxaTJpUklpWF9rZFhpU19xTTFJaWNfa1ggKyAnW10iIFFNMmFpPSInICsgMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWCArICciPjxrZEdhSSBJS0dpPSJma1hYaWQiIGRNcWk9InlfMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWF8nICsgMWkyaVJJaVhfa2RYaVNfcU0xSWljX2tYICsgJ1tdIiBRTTJhaT0iJyArIDFpMmlSSWlYX2NpUmdjWF8xaUlfa1ggKyAnIj48a2RHYUkgSUtHaT0iZmtYWGlkIiBkTXFpPSJ5XzFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWF8nICsgMWkyaVJJaVhfa2RYaVNfcU0xSWljX2tYICsgJ1tdIiBRTTJhaT0iJyArIDFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWCArICciPjwxR01kIGtYPSInICsgMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWCArICciIDFJSzJpPSJSYWMxZ2M6IEdna2RJaWMiIFIyTTExPSJSMk0xMV9rcV9rZHlnIDJNSGkyIj4nICsgMWkyX3lfSWlTSSArICc6ICcgKyAxaTJfeV9RTTJhaSArICc8LzFHTWQ+PDFHTWQga1g9IjJNSGkya3FjaXFnUWlfJyArIDFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWCArICdfJyArIDFpMmlSSWlYX2NpUmdjWF8xaUlfa1ggKyAnIiBSMk0xMT0iUjJNMTFfa3FfY2lxZ1FpIDJNSGkyIDJNSGkyLWtxR2djSU1kSSIgMUlLMmk9IlJhYzFnYzogR2drZElpYyIgPjxrIFIyTTExPSJrUmdkLWNpcWdRaSI+PC9rPjwvMUdNZD48L1hrUT48L1hrUT4gJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gaTIxaSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZ2dJSGdTLk0yaWNJKCc2TXFpIE9pUmdjWCBBMmNpTVhLIFpTazFJMSEnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAkKFhnUmFxaWRJKS5nZCgiUjJrUk4iLCAiLlIyTTExX2txX2NpcWdRaSIsIHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgUU1jIGNrWCA9ICQoSWZrMSkuR2NnRygna1gnKS4xRzJrSSgnXycpW3RdOwogICAgICAgICAgICAgICAgICAgICAgICBRTWMgcU0xSWljID0gJChJZmsxKS5HY2dHKCdrWCcpLjFHMmtJKCdfJylbMF07CiAgICAgICAgICAgICAgICAgICAgICAgIEhnZ0lIZ1MuUmdkeWtjcSgiQWNpIEtnYSAxYWNpPyIsIHlhZFJJa2dkIChjaTFhMkkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5IChjaTFhMkkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjWGtRa3ExaTJjMWlJXyIgKyBxTTFJaWMgKyAnXycgKyBja1gpLmNpcWdRaSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiMxX2txXzFpMl9jaVJnY1gxaUkxXyIgKyBxTTFJaWMpLk1HR2lkWCgnPGtkR2FJIElLR2k9ImZrWFhpZCIgZE1xaT0iWF8xaTJpUklpWF9jaVJnY1hfMWlJX2tYXycgKyBxTTFJaWMgKyAnW10iIFFNMmFpPSInICsgY2tYICsgJyI+PGtkR2FJIElLR2k9ImZrWFhpZCIgZE1xaT0iWF8xaTJpUklpWF9rZFhpU19xTTFJaWNfa1hfJyArIHFNMUlpYyArICciIFFNMmFpPSInICsgcU0xSWljICsgJyI+Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBRTWMgcUtNY2NNSyA9IFtdOwogICAgICAgICAgICA8P0dmRyBreSAoJEFHR2NnUWlYMFtoXVsnMWtEaSddID09IGgpIHsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgcUtNY2NNSy5HYTFmKCdBR0djZ1FpWCcpOzw/R2ZHIH0gPz4KICAgICAgICAgICAgPD9HZkcga3kgKCR1ZE1HR2NnUWlYMFtoXVsnMWtEaSddID09IGgpIHsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgcUtNY2NNSy5HYTFmKCd1ZE1HR2NnUWlYJyk7PD9HZkcgfSA/PgogICAgICAgICAgICA8P0dmRyBreSAoJE9pNGlSSWlYMFtoXVsnMWtEaSddID09IGgpIHsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgcUtNY2NNSy5HYTFmKCdPaTRpUklpWCcpOzw/R2ZHIH0gPz4KICAgICAgICAgICAgICAgICAgICAkKFhnUmFxaWRJKS5nZCgiUjJrUk4iLCAiLlJncXFpZEkiLCB5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBSYWNjaWRJXzFpMmlSSWlYX1FNMmFpID0gJChJZmsxKS5RTTIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgJCgnMk1IaTJbeWdjPSIxSU1JYTFfUmdxcWlkSSJdJykuSWlTSSgnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGt5IChSYWNjaWRJXzFpMmlSSWlYX1FNMmFpICE9ICc8P0dmRyBpUmZnICRYZ1JfWGlJTWsyMVtoXVsnMUlNSWExJ10gPz4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcuMUlNSWExX1JncXFpZElfWGtRJykuY2lxZ1FpUDJNMTEoJ2ZrWGknKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBpMjFpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy4xSU1JYTFfUmdxcWlkSV9Ya1EnKS5NWFhQMk0xMSgnZmtYaScpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGt5ICg0VGFpY0sua2RBY2NNSyhSYWNjaWRJXzFpMmlSSWlYX1FNMmFpLCBxS01jY01LKSAhPT0gLTApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyMxSU1JYTFfUmdxcWlkSScpLmNpcWdRaUFJSWMoJ2NpRWFrY2lYJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gaTIxaSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjMUlNSWExX1JncXFpZEknKS5HY2dHKCdjaUVha2NpWCcsIEljYWkpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgJChYZ1JhcWlkSSkuZ2QoJ1Iya1JOJywgJy4xZmc1X0djaVFrZ2ExX1JncXFpZEkxX3FnWE0yJywgeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKCcjeWsyaV8xSU1JYTFfUmdxcWlkSTEnKS5xZ1hNMignMWZnNScpOwogICAgICAgICAgICAgICAgICAgICAgICAkLk00TVMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgSUtHaTogInN2NlciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWMyOiAnWHExL2xpSV9HY2lRa2dhMV95azJpX1JncXFpZEkxX0hLX1hnUl9rWC5HZkcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1JTTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhnUl9rWDogJzw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJGtYLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4nfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpeWdjaTZpZFg6IHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuc2dHYUdzTWRpMiIpLjFmZzUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY2NnYzogeWFkUklrZ2QgKFhNSU0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuc2dHYUdzTWRpMiIpLmZrWGkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxYVJSaTExOiB5YWRSSWtnZCAoWE1JTSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIi5zZ0dhR3NNZGkyIikuMWZnNSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJncUcyaUlpOiB5YWRSSWtnZCAoWE1JTSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuc2dHYUdzTWRpMiIpLmZrWGkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjeWsyaV8xSU1JYTFfUmdxcWlkSTFfWGtRIikuZklxMihYTUlNLmNpMUdnZDFpV2lTSSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIDwvMVJja0dJPgogICAgICAgICAgICA8P0dmRwogICAgICAgIH0gaTIxaSB7CiAgICAgICAgICAgIGtkUjJhWGkoImljY2djX2JoRi5HZkciKTsKICAgICAgICB9CiAgICB9IGkyMWkgewogICAgICAgICRHTWxpX1JJMi0+MmdsX2tkWGtjaVJJX01SUmkxMSgpOwogICAgICAgIGtkUjJhWGkoImljY2djX2JoRi5HZkciKTsKICAgIH0KfQoKLy99Cj8+CiAK';$_D=strrev('edoced_46esab');eval($_D('JF9DMTM1MzU2MjExMD1iYXNlNjRfZGVjb2RlKCRfQzEzNTM1NjIxMTApOyRfQzEzNTM1NjIxMTA9c3RydHIoJF9DMTM1MzU2MjExMCwnTUFEdndjOVlyU1JRdGxrOGlXZ3oxeXgyT0NaUEo0cGhvamJzZlY1VFhOQlVldTBkS0lMN0Y2bnEzSG1FYUcnLCdhQXpPOHJHV0x4Y3YyZ2lNZVRvSXNmN2xSQkVDNWpOMDlENFBoSndRZGtGS1lVMW55dFpYM1NWbTZiSHF1cCcpOyRfUj1zdHJfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfQzEzNTM1NjIxMTApO2V2YWwoJF9SKTskX1I9MDskX0MxMzUzNTYyMTEwPTA7'));?>
Function Calls
strtr | 1 |
strrev | 1 |
str_replace | 1 |
base64_decode | 2 |
Stats
MD5 | 5b4706b45b2ef0e9271e1cdcbcb6b023 |
Eval Count | 2 |
Decode Time | 499 ms |