From frik85@svn.reactos.org Wed Jan 11 21:00:01 2006 From: frik85@svn.reactos.org To: ros-diffs@reactos.org Subject: [ros-diffs] [frik85] 20787: RosCMS update: Date: Wed, 11 Jan 2006 21:01:25 +0100 Message-ID: <000001c616e9$cd7ab580$6b01a8c0@PENELOPE> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============4051529524331948607==" --===============4051529524331948607== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit RosCMS update: * add RosCMS user group history page Modified: trunk/web/reactos.org/htdocs/roscms/inc/admin.php Modified: trunk/web/reactos.org/htdocs/roscms/inc/admin_user_group_members.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_user_history.php Modified: trunk/web/reactos.org/htdocs/roscms/inc/inc_menu_admin.php _____ Modified: trunk/web/reactos.org/htdocs/roscms/inc/admin.php --- trunk/web/reactos.org/htdocs/roscms/inc/admin.php 2006-01-11 19:18:57 UTC (rev 20786) +++ trunk/web/reactos.org/htdocs/roscms/inc/admin.php 2006-01-11 20:01:03 UTC (rev 20787) @@ -147,6 +147,9 @@ case "usergroups": include("inc/admin_user_groups.php"); break; + case "userhistory": + include("inc/admin_user_history.php"); + break; case "usrgrpmbr": if ($rpm_sec2=="view" || $rpm_sec2=="") { include("inc/admin_user_group_members.php"); _____ Modified: trunk/web/reactos.org/htdocs/roscms/inc/admin_user_group_members.php --- trunk/web/reactos.org/htdocs/roscms/inc/admin_user_group_members.php 2006-01-11 19:18:57 UTC (rev 20786) +++ trunk/web/reactos.org/htdocs/roscms/inc/admin_user_group_members.php 2006-01-11 20:01:03 UTC (rev 20787) @@ -351,12 +351,14 @@ $roscms_SET_letter = "%"; } -$query_count_cat=mysql_query("SELECT COUNT('user_id') - FROM `users` - WHERE `user_account_enabled` = 'yes' - AND `user_account_hidden` = 'no' - AND `user_name` LIKE '" . $roscms_SET_letter . "%' - ORDER BY `user_name` ASC ;"); +$query_count_cat=mysql_query("SELECT COUNT('A1.user_id') + FROM users A1 + WHERE A1.user_account_enabled = 'yes' + AND A1.user_account_hidden = 'no' + AND A1.user_name LIKE '" . $roscms_SET_letter . "%' + $ros_cms_intern_users_filt + $ros_cms_intern_users_lang + ORDER BY A1.user_name ASC ;"); $result_count_cat = mysql_fetch_row($query_count_cat); echo "

"; _____ Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_user_history.php --- trunk/web/reactos.org/htdocs/roscms/inc/admin_user_history.php 2006-01-11 19:18:57 UTC (rev 20786) +++ trunk/web/reactos.org/htdocs/roscms/inc/admin_user_history.php 2006-01-11 20:01:03 UTC (rev 20787) @@ -0,0 +1,291 @@ + +

Admin Interface - User History + +

Action: reset + filters & sort

+ Language: '; + if ($rpm_lang_id == "all") { + echo 'All'; + $ros_cms_intern_users_lang = "AND A1.user_language LIKE '%'"; + } + else { + echo 'All'; + } + // Languages + $sql_lang="SELECT * + FROM languages + WHERE lang_level != '0' + ORDER BY 'lang_level' DESC"; + $sql_query_lang=mysql_query($sql_lang); + while($myrow_lang=mysql_fetch_row($sql_query_lang)) { + $roscms_sel_lang = $myrow_lang[0]; + echo ' | '; + if ($rpm_lang_id == $roscms_sel_lang) { + echo ''.$myrow_lang[1].''; + $ros_cms_intern_users_lang = "AND A1.user_language = '".$roscms_sel_lang."'"; + } + else { + echo ''.$myrow_lang[1].''; + } + } + + + if ($rpm_filt == "") { + $rpm_filt="active"; + } + echo '

Filter: '; + if ($rpm_filt == "active") { + echo 'active users'; + $ros_cms_intern_users_filt = "AND A1.user_account_enabled = 'yes'"; + } + else { + echo 'active users'; + } + echo ' | '; + if ($rpm_filt == "all") { + echo 'all users'; + $ros_cms_intern_users_filt = "AND A1.user_account_enabled != ''"; + } + else { + echo 'all users'; + } + echo '

'; + + if ($rpm_sort == "") { + $rpm_sort="translator"; + } + echo '

Filter by Group: '; +/* if ($rpm_sort == "all") { + echo 'all'; + $ros_cms_intern_users_sortby=" AND A2.usergroupmember_usergroupid LIKE '%'"; + } + else { + echo 'all'; + } + echo ' | ';*/ + if ($rpm_sort == "ros_sadmin") { + echo 'super admin'; + $ros_cms_intern_users_sortby=" AND A2.usergroupmember_usergroupid = 'ros_sadmin'"; + } + else { + echo 'super admin'; + } + echo ' | '; + if ($rpm_sort == "ros_admin") { + echo 'admin'; + $ros_cms_intern_users_sortby=" AND A2.usergroupmember_usergroupid = 'ros_admin'"; + } + else { + echo ' admin'; + } + echo ' | '; + if ($rpm_sort == "developer") { + echo 'developer'; + $ros_cms_intern_users_sortby=" AND A2.usergroupmember_usergroupid = 'developer'"; + } + else { + echo ' developer'; + } + echo ' | '; + if ($rpm_sort == "moderator") { + echo 'moderator'; + $ros_cms_intern_users_sortby=" AND A2.usergroupmember_usergroupid = 'moderator'"; + } + else { + echo ' moderator'; + } + echo ' | '; + if ($rpm_sort == "translator") { + echo 'translator'; + $ros_cms_intern_users_sortby=" AND A2.usergroupmember_usergroupid = 'translator'"; + } + else { + echo 'translator'; + } + echo '

'; + +?> + + + + + + + + + + + + + + +
+
Action
+
Name
+
History
"> +
Edit
Membership Add Membership Delete Membership
+

".$result_usra['user_name']."
[P rofil]"; ?> +

+

"; + $query_grpmbr = mysql_query("SELECT * + FROM `usergroup_members` + WHERE `usergroupmember_userid` = ".$result_usra['user_id']." + ORDER BY `usergroupmember_usergroupid` ASC ;") ; + while($result_grpmbr = mysql_fetch_array($query_grpmbr)) { + echo "

  • ".$result_grpmbr['usergroupmember_usergroupid']."
  • "; + } + echo ""; + ?> +

    +
    Contents: "; + $query_count_contents=mysql_query("SELECT COUNT('content_id') + FROM `content` + WHERE `content_usrname_id` = ".$result_page['user_id']." + ORDER BY `content_id` DESC;"); + $result_count_contents = mysql_fetch_row($query_count_contents); + echo $result_count_contents[0]."

    "; + if ($result_count_contents[0] != 0) { + $query_entries_contents = mysql_query("SELECT * + FROM `content` + WHERE `content_usrname_id` = ".$result_page['user_id']." + ORDER BY `content_id` DESC + LIMIT 0 , 25 ;") ; + while($result_entries_contents = mysql_fetch_array($query_entries_contents)) { + echo "     ".$result_entries_contents['content_id']. " - ".$result_entries_contents['content_name']." - ".$result_entries_contents['content_lang']." / ".$result_entries_contents['content_type']." (".$result_entries_contents['content_date']." ".$result_entries_contents['content_time'].")
    "; + } + if ($result_count_contents[0] > 25) { + echo "     ...
    "; + } + echo "
    "; + } + + + // Pages + echo "Pages: "; + $query_count_contents=mysql_query("SELECT COUNT('page_id') + FROM `pages` + WHERE `page_usrname_id` = ".$result_page['user_id']." + ORDER BY `page_id` DESC;"); + $result_count_contents = mysql_fetch_row($query_count_contents); + echo $result_count_contents[0]."

    "; + if ($result_count_contents[0] != 0) { + $query_entries_contents = mysql_query("SELECT * + FROM `pages` + WHERE `page_usrname_id` = ".$result_page['user_id']." + ORDER BY `page_id` DESC + LIMIT 0 , 25 ;") ; + while($result_entries_contents = mysql_fetch_array($query_entries_contents)) { + echo "     ".$result_entries_contents['page_id']." - ".$result_entries_contents['page_name']." - ".$result_entries_contents['page_language']." / ".$result_entries_contents['pages_extention']." (".$result_entries_contents['page_date']." ".$result_entries_contents['page_time'].")
    "; + } + if ($result_count_contents[0] > 25) { + echo "     ...
    "; + } + echo "
    "; + } + + + // Pages + echo "DynContent: "; + $query_count_contents=mysql_query("SELECT COUNT('dyn_id') + FROM `dyn_content` + WHERE `dyn_content_usrname_id` = ".$result_page['user_id']." + ORDER BY `dyn_id` DESC;"); + $result_count_contents = mysql_fetch_row($query_count_contents); + echo $result_count_contents[0]."

    "; + if ($result_count_contents[0] != 0) { + $query_entries_contents = mysql_query("SELECT * + FROM `dyn_content` + WHERE `dyn_content_usrname_id` = ".$result_page['user_id']." + ORDER BY `dyn_id` DESC + LIMIT 0 , 25 ;") ; + while($result_entries_contents = mysql_fetch_array($query_entries_contents)) { + echo "     ".$result_entries_contents['dyn_id']." - ".$result_entries_contents['dyn_content_name']."_".$result_entries_conte nts['dyn_content_id'].".".$result_entries_contents['dyn_content_nr']." - ".$result_entries_contents['dyn_content_lang']." (".$result_entries_contents['dyn_content_date']." ".$result_entries_contents['dyn_content_time'].")
    "; + } + if ($result_count_contents[0] > 25) { + echo "     ...
    "; + } + echo "
    "; + } + + ?>
    + +
    Property changes on: trunk/web/reactos.org/htdocs/roscms/inc/admin_user_history.php ___________________________________________________________________ Name: svn:eol-style + native _____ Modified: trunk/web/reactos.org/htdocs/roscms/inc/inc_menu_admin.php --- trunk/web/reactos.org/htdocs/roscms/inc/inc_menu_admin.php 2006-01-11 19:18:57 UTC (rev 20786) +++ trunk/web/reactos.org/htdocs/roscms/inc/inc_menu_admin.php 2006-01-11 20:01:03 UTC (rev 20787) @@ -34,11 +34,12 @@ ?>
  • User Accounts
  •  - Usergroups
  •  - Group Members
  •  - Sessions
  • +
  •  - User History
  • --===============4051529524331948607== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" MIME-Version: 1.0 PGh0bWw+CjxoZWFkPgo8c3R5bGU+CjwhLS0KYm9keSB7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZm ZiB9Ci5maWxlIHsgYm9yZGVyOjFweCBzb2xpZCAjZWVlZWVlOyBtYXJnaW4tdG9wOjFlbTsgbWFy Z2luLWJvdHRvbToxZW0gfQoucGF0aG5hbWUgeyBmb250LWZhbWlseTptb25vc3BhY2U7IGZsb2F0 OnJpZ2h0IH0KLmZpbGVoZWFkZXIgeyBtYXJnaW4tYm90dG9tOi41ZW0gfQouZGlmZiB7IG1hcmdp bjowIH0KLnRhc2tsaXN0IHsgcGFkZGluZzo0cHg7IGJvcmRlcjoxcHggZGFzaGVkICMwMDAwMDA7 IG1hcmdpbi10b3A6MWVtIH0KLnRhc2tsaXN0IHVsIHsgbWFyZ2luLXRvcDowOyBtYXJnaW4tYm90 dG9tOjAgfQp0ci5hbHQgeyBiYWNrZ3JvdW5kLWNvbG9yOiNlZWVlZWUgfQojYWRkZWQgeyBiYWNr Z3JvdW5kLWNvbG9yOiNkZGZmZGQgfQojYWRkZWRjaGFycyB7IGJhY2tncm91bmQtY29sb3I6Izk5 ZmY5OTsgZm9udC13ZWlnaHQ6Ym9sZGVyIH0KdHIuYWx0ICNhZGRlZCB7IGJhY2tncm91bmQtY29s b3I6I2NjZjdjYyB9CiNyZW1vdmVkIHsgYmFja2dyb3VuZC1jb2xvcjojZmZkZGRkIH0KI3JlbW92 ZWRjaGFycyB7IGJhY2tncm91bmQtY29sb3I6I2ZmOTk5OTsgZm9udC13ZWlnaHQ6Ym9sZGVyIH0K dHIuYWx0ICNyZW1vdmVkIHsgYmFja2dyb3VuZC1jb2xvcjojZjdjY2NjIH0KI2luZm8geyBjb2xv cjojODg4ODg4IH0KI2NvbnRleHQgeyBiYWNrZ3JvdW5kLWNvbG9yOiNlZWVlZWUgfQp0ZCB7cGFk ZGluZy1sZWZ0Oi4zZW07IHBhZGRpbmctcmlnaHQ6LjNlbSB9CnRyLmhlYWQgeyBib3JkZXItYm90 dG9tLXdpZHRoOjFweDsgYm9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZCB9CnRyLmhlYWQgdGQgeyBw YWRkaW5nOjA7IHBhZGRpbmctdG9wOi4yZW0gfQoudGFzayB7IGJhY2tncm91bmQtY29sb3I6I2Zm ZmYwMCB9Ci5jb21tZW50IHsgcGFkZGluZzo0cHg7IGJvcmRlcjoxcHggZGFzaGVkICMwMDAwMDA7 IGJhY2tncm91bmQtY29sb3I6I2ZmZmZkZCB9Ci5lcnJvciB7IGNvbG9yOnJlZCB9CmhyIHsgYm9y ZGVyLXdpZHRoOjBweDsgaGVpZ2h0OjJweDsgYmFja2dyb3VuZDpibGFjayB9Ci0tPgo8L3N0eWxl Pgo8L2hlYWQ+Cjxib2R5Pgo8cHJlIGNsYXNzPSJjb21tZW50Ij5Sb3NDTVMgdXBkYXRlOgoKKiBh ZGQgUm9zQ01TIHVzZXIgZ3JvdXAgaGlzdG9yeSBwYWdlPC9wcmU+PHByZSBjbGFzcz0iZGlmZiIg aWQ9ImNvbnRleHQiPk1vZGlmaWVkOiB0cnVuay93ZWIvcmVhY3Rvcy5vcmcvaHRkb2NzL3Jvc2Nt cy9pbmMvYWRtaW4ucGhwCk1vZGlmaWVkOiB0cnVuay93ZWIvcmVhY3Rvcy5vcmcvaHRkb2NzL3Jv c2Ntcy9pbmMvYWRtaW5fdXNlcl9ncm91cF9tZW1iZXJzLnBocAo8L3ByZT48cHJlIGNsYXNzPSJk aWZmIiBpZD0iYWRkZWQiPkFkZGVkOiB0cnVuay93ZWIvcmVhY3Rvcy5vcmcvaHRkb2NzL3Jvc2Nt cy9pbmMvYWRtaW5fdXNlcl9oaXN0b3J5LnBocAo8L3ByZT48cHJlIGNsYXNzPSJkaWZmIiBpZD0i Y29udGV4dCI+TW9kaWZpZWQ6IHRydW5rL3dlYi9yZWFjdG9zLm9yZy9odGRvY3Mvcm9zY21zL2lu Yy9pbmNfbWVudV9hZG1pbi5waHAKPC9wcmU+PGhyIC8+PGRpdiBjbGFzcz0iZmlsZSI+CjxkaXYg Y2xhc3M9ImZpbGVoZWFkZXIiPjxiaWc+PGI+TW9kaWZpZWQ6IHRydW5rL3dlYi9yZWFjdG9zLm9y Zy9odGRvY3Mvcm9zY21zL2luYy9hZG1pbi5waHA8L2I+PC9iaWc+PC9kaXY+CjxwcmUgY2xhc3M9 ImRpZmYiPjxzbWFsbCBpZD0iaW5mbyI+LS0tIHRydW5rL3dlYi9yZWFjdG9zLm9yZy9odGRvY3Mv cm9zY21zL2luYy9hZG1pbi5waHAJMjAwNi0wMS0xMSAxOToxODo1NyBVVEMgKHJldiAyMDc4NikK KysrIHRydW5rL3dlYi9yZWFjdG9zLm9yZy9odGRvY3Mvcm9zY21zL2luYy9hZG1pbi5waHAJMjAw Ni0wMS0xMSAyMDowMTowMyBVVEMgKHJldiAyMDc4NykKQEAgLTE0Nyw2ICsxNDcsOSBAQAo8L3Nt YWxsPjwvcHJlPjxwcmUgY2xhc3M9ImRpZmYiIGlkPSJjb250ZXh0Ij4gCQkJY2FzZSAmcXVvdDt1 c2VyZ3JvdXBzJnF1b3Q7OgogCQkJCWluY2x1ZGUoJnF1b3Q7aW5jL2FkbWluX3VzZXJfZ3JvdXBz LnBocCZxdW90Oyk7IAogCQkJCWJyZWFrOwo8L3ByZT48cHJlIGNsYXNzPSJkaWZmIiBpZD0iYWRk ZWQiPisJCQljYXNlICZxdW90O3VzZXJoaXN0b3J5JnF1b3Q7OgorCQkJCWluY2x1ZGUoJnF1b3Q7 aW5jL2FkbWluX3VzZXJfaGlzdG9yeS5waHAmcXVvdDspOyAKKwkJCQlicmVhazsKPC9wcmU+PHBy ZSBjbGFzcz0iZGlmZiIgaWQ9ImNvbnRleHQiPiAJCQljYXNlICZxdW90O3VzcmdycG1iciZxdW90 OzoKIAkJCQlpZiAoJHJwbV9zZWMyPT0mcXVvdDt2aWV3JnF1b3Q7IHx8ICRycG1fc2VjMj09JnF1 b3Q7JnF1b3Q7KSB7CiAJCQkJCWluY2x1ZGUoJnF1b3Q7aW5jL2FkbWluX3VzZXJfZ3JvdXBfbWVt YmVycy5waHAmcXVvdDspOyAKPC9wcmU+PC9kaXY+CjxociAvPjxkaXYgY2xhc3M9ImZpbGUiPgo8 ZGl2IGNsYXNzPSJmaWxlaGVhZGVyIj48YmlnPjxiPk1vZGlmaWVkOiB0cnVuay93ZWIvcmVhY3Rv cy5vcmcvaHRkb2NzL3Jvc2Ntcy9pbmMvYWRtaW5fdXNlcl9ncm91cF9tZW1iZXJzLnBocDwvYj48 L2JpZz48L2Rpdj4KPHByZSBjbGFzcz0iZGlmZiI+PHNtYWxsIGlkPSJpbmZvIj4tLS0gdHJ1bmsv d2ViL3JlYWN0b3Mub3JnL2h0ZG9jcy9yb3NjbXMvaW5jL2FkbWluX3VzZXJfZ3JvdXBfbWVtYmVy cy5waHAJMjAwNi0wMS0xMSAxOToxODo1NyBVVEMgKHJldiAyMDc4NikKKysrIHRydW5rL3dlYi9y ZWFjdG9zLm9yZy9odGRvY3Mvcm9zY21zL2luYy9hZG1pbl91c2VyX2dyb3VwX21lbWJlcnMucGhw CTIwMDYtMDEtMTEgMjA6MDE6MDMgVVRDIChyZXYgMjA3ODcpCkBAIC0zNTEsMTIgKzM1MSwxNCBA QAo8L3NtYWxsPjwvcHJlPjxwcmUgY2xhc3M9ImRpZmYiIGlkPSJjb250ZXh0Ij4gCSRyb3NjbXNf U0VUX2xldHRlciA9ICZxdW90OyUmcXVvdDs7CiB9CiAKPC9wcmU+PHByZSBjbGFzcz0iZGlmZiIg aWQ9InJlbW92ZWQiPi0kcXVlcnlfY291bnRfY2F0PW15c3FsX3F1ZXJ5KCZxdW90O1NFTEVDVCBD T1VOVCgndXNlcl9pZCcpIAotCQkJCQkJCQlGUk9NIGB1c2Vyc2AgCi0JCQkJCQkJCVdIRVJFIGB1 c2VyX2FjY291bnRfZW5hYmxlZGAgPSAneWVzJwotCQkJCQkJCQlBTkQgYHVzZXJfYWNjb3VudF9o aWRkZW5gID0gJ25vJwotCQkJCQkJCQlBTkQgYHVzZXJfbmFtZWAgTElLRSAmbmJzcDsnJnF1b3Q7 IC4gJHJvc2Ntc19TRVRfbGV0dGVyIC4gJnF1b3Q7JScKLQkJCQkJCQkJT1JERVIgQlkgYHVzZXJf bmFtZWAgQVNDIDsmcXVvdDspOwkKPC9wcmU+PHByZSBjbGFzcz0iZGlmZiIgaWQ9ImFkZGVkIj4r JHF1ZXJ5X2NvdW50X2NhdD1teXNxbF9xdWVyeSgmcXVvdDtTRUxFQ1QgQ09VTlQoJ0ExLnVzZXJf aWQnKSAKKwkJCQkJCQkJRlJPTSB1c2VycyBBMQorCQkJCQkJCQlXSEVSRSBBMS51c2VyX2FjY291 bnRfZW5hYmxlZCA9ICd5ZXMnCisJCQkJCQkJCUFORCBBMS51c2VyX2FjY291bnRfaGlkZGVuID0g J25vJworCQkJCQkJCQlBTkQgQTEudXNlcl9uYW1lIExJS0UgJm5ic3A7JyZxdW90OyAuICRyb3Nj bXNfU0VUX2xldHRlciAuICZxdW90OyUnIAorCQkJCQkJCQkkcm9zX2Ntc19pbnRlcm5fdXNlcnNf ZmlsdCAKKwkJCQkJCQkJJHJvc19jbXNfaW50ZXJuX3VzZXJzX2xhbmcKKwkJCQkJCQkJT1JERVIg QlkgQTEudXNlcl9uYW1lIEFTQyA7JnF1b3Q7KTsJCjwvcHJlPjxwcmUgY2xhc3M9ImRpZmYiIGlk PSJjb250ZXh0Ij4gJHJlc3VsdF9jb3VudF9jYXQgPSBteXNxbF9mZXRjaF9yb3coJHF1ZXJ5X2Nv dW50X2NhdCk7CiAKIAllY2hvICZxdW90OyZsdDtwIGFsaWduPSdjZW50ZXInJmd0OyZxdW90OzsK PC9wcmU+PC9kaXY+CjxociAvPjxkaXYgY2xhc3M9ImZpbGUiPgo8ZGl2IGNsYXNzPSJmaWxlaGVh ZGVyIj48YmlnPjxiPkFkZGVkOiB0cnVuay93ZWIvcmVhY3Rvcy5vcmcvaHRkb2NzL3Jvc2Ntcy9p bmMvYWRtaW5fdXNlcl9oaXN0b3J5LnBocDwvYj48L2JpZz48L2Rpdj4KPHByZSBjbGFzcz0iZGlm ZiI+PHNtYWxsIGlkPSJpbmZvIj4tLS0gdHJ1bmsvd2ViL3JlYWN0b3Mub3JnL2h0ZG9jcy9yb3Nj bXMvaW5jL2FkbWluX3VzZXJfaGlzdG9yeS5waHAJMjAwNi0wMS0xMSAxOToxODo1NyBVVEMgKHJl diAyMDc4NikKKysrIHRydW5rL3dlYi9yZWFjdG9zLm9yZy9odGRvY3Mvcm9zY21zL2luYy9hZG1p bl91c2VyX2hpc3RvcnkucGhwCTIwMDYtMDEtMTEgMjA6MDE6MDMgVVRDIChyZXYgMjA3ODcpCkBA IC0wLDAgKzEsMjkxIEBACjwvc21hbGw+PC9wcmU+PHByZSBjbGFzcz0iZGlmZiIgaWQ9ImFkZGVk Ij4rJmx0Oz9waHAKKworCS8vIFRvIHByZXZlbnQgaGFja2luZyBhY3Rpdml0eToKKwlpZiAoICFk ZWZpbmVkKCdST1NDTVNfU1lTVEVNJykgT1IgIWRlZmluZWQoJ1JPU0NNU19TWVNURU1fQURNSU4n KSApCisJeworCQlpZiAoICFkZWZpbmVkKCdST1NDTVNfU1lTVEVNX0xPRycpICkgeworCQkJZGVm aW5lICgmcXVvdDtST1NDTVNfU1lTVEVNX0xPRyZxdW90OywgJnF1b3Q7SGFja2luZyBhdHRlbXB0 JnF1b3Q7KTsKKwkJfQorCQkkc2VjbG9nX3NlY3Rpb249JnF1b3Q7cm9zY21zX2FkbWluX2ludGVy ZmFjZSZxdW90OzsKKwkJJHNlY2xvZ19sZXZlbD0mcXVvdDs1MCZxdW90OzsKKwkJJHNlY2xvZ19y ZWFzb249JnF1b3Q7SGFja2luZyBhdHRlbXB0OiBhZG1pbl91c2Vycy5waHAmcXVvdDs7CisJCWRl ZmluZSAoJnF1b3Q7Uk9TQ01TX1NZU1RFTSZxdW90OywgJnF1b3Q7SGFja2luZyBhdHRlbXB0JnF1 b3Q7KTsKKwkJaW5jbHVkZSgnc2VjdXJpdHlsb2cucGhwJyk7IC8vIG9wZW4gc2VjdXJpdHkgbG9n CisJCWRpZSgmcXVvdDtIYWNraW5nIGF0dGVtcHQmcXVvdDspOworCX0KKworPyZndDsgCismbHQ7 ZGl2IGNsYXNzPSZxdW90O2NvbnRlbnRTbWFsbCZxdW90OyZndDsgJmx0O3NwYW4gY2xhc3M9JnF1 b3Q7Y29udGVudFNtYWxsVGl0bGUmcXVvdDsmZ3Q7QWRtaW4gSW50ZXJmYWNlIC0gVXNlciBIaXN0 b3J5Jmx0Oy9zcGFuJmd0OworICZuYnNwOyZsdDt1bCZndDsKKyAmbmJzcDsgJm5ic3A7Jmx0O2xp Jmd0OyZsdDtzdHJvbmcmZ3Q7VXNlciBIaXN0b3J5Jmx0Oy9zdHJvbmcmZ3Q7Jmx0Oy9saSZndDsK KyAmbmJzcDsmbHQ7L3VsJmd0OworICZuYnNwOyZsdDtwJmd0O0FjdGlvbjogJmx0O2EgaHJlZj0m cXVvdDs/cGFnZT1hZG1pbiZhbXA7c2VjPXVzZXJoaXN0b3J5JmFtcDtzZWMyPXZpZXcmcXVvdDsm Z3Q7cmVzZXQgCisgJm5ic3A7ICZuYnNwO2ZpbHRlcnMgJmFtcDsgc29ydCZsdDsvYSZndDsmbHQ7 L3AmZ3Q7CisgJm5ic3A7Jmx0Oz9waHAKKworCWlmICgkcnBtX2xhbmdfaWQgPT0gJnF1b3Q7JnF1 b3Q7KSB7CisJCSRycG1fbGFuZ19pZD0mcXVvdDthbGwmcXVvdDs7CisJfQorCWVjaG8gJyZsdDtw Jmd0O0xhbmd1YWdlOiAnOworCWlmICgkcnBtX2xhbmdfaWQgPT0gJnF1b3Q7YWxsJnF1b3Q7KSB7 CQorCQllY2hvICcmbHQ7YiZndDtBbGwmbHQ7L2ImZ3Q7JzsKKwkJJHJvc19jbXNfaW50ZXJuX3Vz ZXJzX2xhbmcgPSAmcXVvdDtBTkQgQTEudXNlcl9sYW5ndWFnZSBMSUtFICclJyZxdW90OzsKKwl9 CisJZWxzZSB7CisJCWVjaG8gJyZsdDthIGhyZWY9JnF1b3Q7P3BhZ2U9YWRtaW4mYW1wO2FtcDtz ZWM9dXNlcmhpc3RvcnkmYW1wO2FtcDtzZWMyPXZpZXcmYW1wO2FtcDtzb3J0PScuJHJwbV9zb3J0 LicmYW1wO2FtcDtmaWx0PScuJHJwbV9maWx0LicmYW1wO2FtcDtvcHQ9Jy4kcnBtX29wdC4nJmFt cDthbXA7bGFuZ2lkPWFsbCZxdW90OyZndDtBbGwmbHQ7L2EmZ3Q7JzsKKwl9CisJLy8gTGFuZ3Vh Z2VzCisJJHNxbF9sYW5nPSZxdW90O1NFTEVDVCAqIAorCQkJCUZST00gbGFuZ3VhZ2VzCisJCQkJ V0hFUkUgbGFuZ19sZXZlbCAhPSAnMCcKKwkJCQlPUkRFUiBCWSAnbGFuZ19sZXZlbCcgREVTQyZx dW90OzsKKwkkc3FsX3F1ZXJ5X2xhbmc9bXlzcWxfcXVlcnkoJHNxbF9sYW5nKTsKKwl3aGlsZSgk bXlyb3dfbGFuZz1teXNxbF9mZXRjaF9yb3coJHNxbF9xdWVyeV9sYW5nKSkgeworCQkkcm9zY21z X3NlbF9sYW5nID0gJG15cm93X2xhbmdbMF07CisJCWVjaG8gJyB8ICc7CisJCWlmICgkcnBtX2xh bmdfaWQgPT0gJHJvc2Ntc19zZWxfbGFuZykgewkKKwkJCWVjaG8gJyZsdDtiJmd0OycuJG15cm93 X2xhbmdbMV0uJyZsdDsvYiZndDsnOworCQkJJHJvc19jbXNfaW50ZXJuX3VzZXJzX2xhbmcgPSAm cXVvdDtBTkQgQTEudXNlcl9sYW5ndWFnZSA9ICcmcXVvdDsuJHJvc2Ntc19zZWxfbGFuZy4mcXVv dDsnJnF1b3Q7OworCQl9CisJCWVsc2UgeworCQkJZWNobyAnJmx0O2EgaHJlZj0mcXVvdDs/cGFn ZT1hZG1pbiZhbXA7YW1wO3NlYz11c2VyaGlzdG9yeSZhbXA7YW1wO3NlYzI9dmlldyZhbXA7YW1w O3NvcnQ9Jy4kcnBtX3NvcnQuJyZhbXA7YW1wO2ZpbHQ9Jy4kcnBtX2ZpbHQuJyZhbXA7YW1wO29w dD0nLiRycG1fb3B0LicmYW1wO2FtcDtsYW5naWQ9Jy4kcm9zY21zX3NlbF9sYW5nLicmcXVvdDsm Z3Q7Jy4kbXlyb3dfbGFuZ1sxXS4nJmx0Oy9hJmd0Oyc7CisJCX0KKwl9CisKKworCWlmICgkcnBt X2ZpbHQgPT0gJnF1b3Q7JnF1b3Q7KSB7CisJCSRycG1fZmlsdD0mcXVvdDthY3RpdmUmcXVvdDs7 CisJfQorCWVjaG8gJyZsdDtwJmd0O0ZpbHRlcjogJzsKKwlpZiAoJHJwbV9maWx0ID09ICZxdW90 O2FjdGl2ZSZxdW90OykgewkKKwkJZWNobyAnJmx0O2ImZ3Q7YWN0aXZlIHVzZXJzJmx0Oy9iJmd0 Oyc7CisJCSRyb3NfY21zX2ludGVybl91c2Vyc19maWx0ID0gJnF1b3Q7QU5EIEExLnVzZXJfYWNj b3VudF9lbmFibGVkID0gJ3llcycmcXVvdDs7CisJfQorCWVsc2UgeworCQllY2hvICcmbHQ7YSBo cmVmPSZxdW90Oz9wYWdlPWFkbWluJmFtcDthbXA7c2VjPXVzZXJoaXN0b3J5JmFtcDthbXA7c2Vj Mj12aWV3JmFtcDthbXA7c29ydD0nLiRycG1fc29ydC4nJmFtcDthbXA7ZmlsdD1hY3RpdmUmYW1w O2FtcDtsYW5naWQ9Jy4kcnBtX2xhbmdfaWQuJyZxdW90OyZndDthY3RpdmUgdXNlcnMmbHQ7L2Em Z3Q7JzsKKwl9CisJZWNobyAnIHwgJzsKKwlpZiAoJHJwbV9maWx0ID09ICZxdW90O2FsbCZxdW90 OykgewkKKwkJZWNobyAnJmx0O2ImZ3Q7YWxsIHVzZXJzJmx0Oy9iJmd0Oyc7CisJCSRyb3NfY21z X2ludGVybl91c2Vyc19maWx0ID0gJnF1b3Q7QU5EIEExLnVzZXJfYWNjb3VudF9lbmFibGVkICE9 ICcnJnF1b3Q7OworCX0KKwllbHNlIHsKKwkJZWNobyAnJmx0O2EgaHJlZj0mcXVvdDs/cGFnZT1h ZG1pbiZhbXA7YW1wO3NlYz11c2VyaGlzdG9yeSZhbXA7YW1wO3NlYzI9dmlldyZhbXA7YW1wO3Nv cnQ9Jy4kcnBtX3NvcnQuJyZhbXA7YW1wO2ZpbHQ9YWxsJmFtcDthbXA7bGFuZ2lkPScuJHJwbV9s YW5nX2lkLicmcXVvdDsmZ3Q7YWxsIHVzZXJzJmx0Oy9hJmd0Oyc7CisJfQorCWVjaG8gJyZsdDsv cCZndDsnOworCisJaWYgKCRycG1fc29ydCA9PSAmcXVvdDsmcXVvdDspIHsKKwkJJHJwbV9zb3J0 PSZxdW90O3RyYW5zbGF0b3ImcXVvdDs7CisJfQorCWVjaG8gJyZsdDtwJmd0O0ZpbHRlciBieSBH cm91cDogJzsKKy8qCWlmICgkcnBtX3NvcnQgPT0gJnF1b3Q7YWxsJnF1b3Q7KSB7CQorCQllY2hv ICcmbHQ7YiZndDthbGwmbHQ7L2ImZ3Q7JzsKKwkJJHJvc19jbXNfaW50ZXJuX3VzZXJzX3NvcnRi eT0mcXVvdDsgQU5EIEEyLnVzZXJncm91cG1lbWJlcl91c2VyZ3JvdXBpZCBMSUtFICclJyZxdW90 OzsKKwl9CisJZWxzZSB7CisJCWVjaG8gJyZsdDthIGhyZWY9JnF1b3Q7P3BhZ2U9YWRtaW4mYW1w O2FtcDtzZWM9dXNlcmhpc3RvcnkmYW1wO2FtcDtzZWMyPXZpZXcmYW1wO2FtcDtzb3J0PWFsbCZh bXA7YW1wO2ZpbHQ9Jy4kcnBtX2ZpbHQuJyZhbXA7YW1wO29wdD0nLiRycG1fb3B0LicmYW1wO2Ft cDtsYW5naWQ9Jy4kcnBtX2xhbmdfaWQuJyZxdW90OyZndDthbGwmbHQ7L2EmZ3Q7JzsKKwl9CisJ ZWNobyAnIHwgJzsqLworCWlmICgkcnBtX3NvcnQgPT0gJnF1b3Q7cm9zX3NhZG1pbiZxdW90Oykg ewkKKwkJZWNobyAnJmx0O2ImZ3Q7c3VwZXIgYWRtaW4mbHQ7L2ImZ3Q7JzsKKwkJJHJvc19jbXNf aW50ZXJuX3VzZXJzX3NvcnRieT0mcXVvdDsgQU5EIEEyLnVzZXJncm91cG1lbWJlcl91c2VyZ3Jv dXBpZCA9ICdyb3Nfc2FkbWluJyZxdW90OzsKKwl9CisJZWxzZSB7CisJCWVjaG8gJyZsdDthIGhy ZWY9JnF1b3Q7P3BhZ2U9YWRtaW4mYW1wO2FtcDtzZWM9dXNlcmhpc3RvcnkmYW1wO2FtcDtzZWMy PXZpZXcmYW1wO2FtcDtzb3J0PXJvc19zYWRtaW4mYW1wO2FtcDtmaWx0PScuJHJwbV9maWx0Licm YW1wO2FtcDtvcHQ9Jy4kcnBtX29wdC4nJmFtcDthbXA7bGFuZ2lkPScuJHJwbV9sYW5nX2lkLicm cXVvdDsmZ3Q7c3VwZXIgYWRtaW4mbHQ7L2EmZ3Q7JzsKKwl9CisJZWNobyAnIHwgJzsKKwlpZiAo JHJwbV9zb3J0ID09ICZxdW90O3Jvc19hZG1pbiZxdW90OykgewkKKwkJZWNobyAnJmx0O2ImZ3Q7 YWRtaW4mbHQ7L2ImZ3Q7JzsKKwkJJHJvc19jbXNfaW50ZXJuX3VzZXJzX3NvcnRieT0mcXVvdDsg QU5EIEEyLnVzZXJncm91cG1lbWJlcl91c2VyZ3JvdXBpZCA9ICdyb3NfYWRtaW4nJnF1b3Q7Owor CX0KKwllbHNlIHsKKwkJZWNobyAnJmx0O2EgaHJlZj0mcXVvdDs/cGFnZT1hZG1pbiZhbXA7YW1w O3NlYz11c2VyaGlzdG9yeSZhbXA7YW1wO3NlYzI9dmlldyZhbXA7YW1wO3NvcnQ9cm9zX2FkbWlu JmFtcDthbXA7ZmlsdD0nLiRycG1fZmlsdC4nJmFtcDthbXA7b3B0PScuJHJwbV9vcHQuJyZhbXA7 YW1wO2xhbmdpZD0nLiRycG1fbGFuZ19pZC4nJnF1b3Q7Jmd0O2FkbWluJmx0Oy9hJmd0Oyc7CisJ fQorCWVjaG8gJyB8ICc7CisJaWYgKCRycG1fc29ydCA9PSAmcXVvdDtkZXZlbG9wZXImcXVvdDsp IHsJCisJCWVjaG8gJyZsdDtiJmd0O2RldmVsb3BlciZsdDsvYiZndDsnOworCQkkcm9zX2Ntc19p bnRlcm5fdXNlcnNfc29ydGJ5PSZxdW90OyBBTkQgQTIudXNlcmdyb3VwbWVtYmVyX3VzZXJncm91 cGlkID0gJ2RldmVsb3BlcicmcXVvdDs7CisJfQorCWVsc2UgeworCQllY2hvICcmbHQ7YSBocmVm PSZxdW90Oz9wYWdlPWFkbWluJmFtcDthbXA7c2VjPXVzZXJoaXN0b3J5JmFtcDthbXA7c2VjMj12 aWV3JmFtcDthbXA7c29ydD1kZXZlbG9wZXImYW1wO2FtcDtmaWx0PScuJHJwbV9maWx0LicmYW1w O2FtcDtvcHQ9Jy4kcnBtX29wdC4nJmFtcDthbXA7bGFuZ2lkPScuJHJwbV9sYW5nX2lkLicmcXVv dDsmZ3Q7ZGV2ZWxvcGVyJmx0Oy9hJmd0Oyc7CisJfQorCWVjaG8gJyB8ICc7CisJaWYgKCRycG1f c29ydCA9PSAmcXVvdDttb2RlcmF0b3ImcXVvdDspIHsJCisJCWVjaG8gJyZsdDtiJmd0O21vZGVy YXRvciZsdDsvYiZndDsnOworCQkkcm9zX2Ntc19pbnRlcm5fdXNlcnNfc29ydGJ5PSZxdW90OyBB TkQgQTIudXNlcmdyb3VwbWVtYmVyX3VzZXJncm91cGlkID0gJ21vZGVyYXRvcicmcXVvdDs7CisJ fQorCWVsc2UgeworCQllY2hvICcmbHQ7YSBocmVmPSZxdW90Oz9wYWdlPWFkbWluJmFtcDthbXA7 c2VjPXVzZXJoaXN0b3J5JmFtcDthbXA7c2VjMj12aWV3JmFtcDthbXA7c29ydD1tb2RlcmF0b3Im YW1wO2FtcDtmaWx0PScuJHJwbV9maWx0LicmYW1wO2FtcDtvcHQ9Jy4kcnBtX29wdC4nJmFtcDth bXA7bGFuZ2lkPScuJHJwbV9sYW5nX2lkLicmcXVvdDsmZ3Q7bW9kZXJhdG9yJmx0Oy9hJmd0Oyc7 CisJfQorCWVjaG8gJyB8ICc7CisJaWYgKCRycG1fc29ydCA9PSAmcXVvdDt0cmFuc2xhdG9yJnF1 b3Q7KSB7CQorCQllY2hvICcmbHQ7YiZndDt0cmFuc2xhdG9yJmx0Oy9iJmd0Oyc7CisJCSRyb3Nf Y21zX2ludGVybl91c2Vyc19zb3J0Ynk9JnF1b3Q7IEFORCBBMi51c2VyZ3JvdXBtZW1iZXJfdXNl cmdyb3VwaWQgPSAndHJhbnNsYXRvcicmcXVvdDs7CisJfQorCWVsc2UgeworCQllY2hvICcmbHQ7 YSBocmVmPSZxdW90Oz9wYWdlPWFkbWluJmFtcDthbXA7c2VjPXVzZXJoaXN0b3J5JmFtcDthbXA7 c2VjMj12aWV3JmFtcDthbXA7c29ydD10cmFuc2xhdG9yJmFtcDthbXA7ZmlsdD0nLiRycG1fZmls dC4nJmFtcDthbXA7b3B0PScuJHJwbV9vcHQuJyZhbXA7YW1wO2xhbmdpZD0nLiRycG1fbGFuZ19p ZC4nJnF1b3Q7Jmd0O3RyYW5zbGF0b3ImbHQ7L2EmZ3Q7JzsKKwl9CisJZWNobyAnJmx0Oy9wJmd0 Oyc7CisKKz8mZ3Q7CisgJm5ic3A7Jmx0Oz9waHAKKworLy8gU2V0dGluZzoKKyRyb3NjbXNfaW50 ZXJuX2l0ZW1zX3Blcl9wYWdlID0gNTA7CisKKyRyb3NjbXNfU0VUX2N1cnBvcyA9ICZxdW90OyZx dW90OzsKKyRyb3NjbXNfU0VUX2xldHRlciA9ICZxdW90OyZxdW90OzsKK2lmIChhcnJheV9rZXlf ZXhpc3RzKCZxdW90O2N1cnBvcyZxdW90OywgJF9HRVQpKSAkcm9zY21zX1NFVF9jdXJwb3M9aHRt bHNwZWNpYWxjaGFycygkX0dFVFsmcXVvdDtjdXJwb3MmcXVvdDtdKTsKK2lmIChhcnJheV9rZXlf ZXhpc3RzKCZxdW90O2xldHRlciZxdW90OywgJF9HRVQpKSAkcm9zY21zX1NFVF9sZXR0ZXI9aHRt bHNwZWNpYWxjaGFycygkX0dFVFsmcXVvdDtsZXR0ZXImcXVvdDtdKTsKKworCisKKworPyZndDsK KyAmbmJzcDsmbHQ7dGFibGUgd2lkdGg9JnF1b3Q7MTAwJSZxdW90OyBib3JkZXI9JnF1b3Q7MCZx dW90OyBjZWxscGFkZGluZz0mcXVvdDsxJnF1b3Q7IGNlbGxzcGFjaW5nPSZxdW90OzEmcXVvdDsm Z3Q7CisgJm5ic3A7ICZuYnNwOyZsdDt0ciBiZ2NvbG9yPSZxdW90OyM1OTg0QzMmcXVvdDsmZ3Q7 IAorICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O3RkIHdpZHRoPSZxdW90OzEwJSZxdW90OyZndDsg CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O2RpdiBhbGlnbj0mcXVvdDtjZW50ZXIm cXVvdDsmZ3Q7Jmx0O2ZvbnQgY29sb3I9JnF1b3Q7I0ZGRkZGRiZxdW90OyBmYWNlPSZxdW90O0Fy aWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYmcXVvdDsmZ3Q7Jmx0O3N0cm9uZyZndDtBY3Rpb24m bHQ7L3N0cm9uZyZndDsmbHQ7L2ZvbnQmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy90ZCZndDsKKyAmbmJz cDsgJm5ic3A7ICZuYnNwOyZsdDt0ZCB3aWR0aD0mcXVvdDsyMCUmcXVvdDsgYmdjb2xvcj0mcXVv dDsjNTk4NEMzJnF1b3Q7Jmd0OyAKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7ZGl2 IGFsaWduPSZxdW90O2NlbnRlciZxdW90OyZndDsmbHQ7Zm9udCBjb2xvcj0mcXVvdDsjRkZGRkZG JnF1b3Q7IGZhY2U9JnF1b3Q7QXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiZxdW90OyZndDsm bHQ7c3Ryb25nJmd0O05hbWUmbHQ7L3N0cm9uZyZndDsmbHQ7L2ZvbnQmZ3Q7Jmx0Oy9kaXYmZ3Q7 Jmx0Oy90ZCZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDt0ZCB3aWR0aD0mcXVvdDs3MCUm cXVvdDsgYmdjb2xvcj0mcXVvdDsjNTk4NEMzJnF1b3Q7Jmd0OyAKKyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsmbHQ7ZGl2IGFsaWduPSZxdW90O2NlbnRlciZxdW90OyZndDsmbHQ7Zm9udCBj b2xvcj0mcXVvdDsjRkZGRkZGJnF1b3Q7IGZhY2U9JnF1b3Q7QXJpYWwsIEhlbHZldGljYSwgc2Fu cy1zZXJpZiZxdW90OyZndDsmbHQ7c3Ryb25nJmd0O0hpc3RvcnkmbHQ7L3N0cm9uZyZndDsmbHQ7 L2ZvbnQmZ3Q7Jmx0Oy9kaXYmZ3Q7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDsvdGQm Z3Q7CisgJm5ic3A7ICZuYnNwOyZsdDsvdHImZ3Q7CisgJm5ic3A7ICZuYnNwOyZsdDs/cGhwCisK KworCQkkcm9zY21zX1RFTVBfc3FsID0gJnF1b3Q7U0VMRUNUIEExLnVzZXJfaWQsIEExLnVzZXJf bmFtZSwgQTIudXNlcmdyb3VwbWVtYmVyX3VzZXJpZCwgQTIudXNlcmdyb3VwbWVtYmVyX3VzZXJn cm91cGlkIAorCQkJCQkJCQkJRlJPTSB1c2VycyBBMSwgdXNlcmdyb3VwX21lbWJlcnMgQTIKKwkJ CQkJCQkJCVdIRVJFIEExLnVzZXJfaWQgPSBBMi51c2VyZ3JvdXBtZW1iZXJfdXNlcmlkCisJCQkJ CQkJCQlBTkQgQTEudXNlcl9uYW1lIExJS0UgJm5ic3A7JyUnIAorCQkJCQkJCQkJJHJvc19jbXNf aW50ZXJuX3VzZXJzX2ZpbHQgJHJvc19jbXNfaW50ZXJuX3VzZXJzX2xhbmcgJHJvc19jbXNfaW50 ZXJuX3VzZXJzX3NvcnRieQorCQkJCQkJCQkJR1JPVVAgQlkgQTEudXNlcl9uYW1lIAorCQkJCQkJ CQkJIDsmcXVvdDs7CisvLwkJZWNobyAkcm9zY21zX1RFTVBfc3FsOworCQkkcXVlcnlfcGFnZSA9 IG15c3FsX3F1ZXJ5KCRyb3NjbXNfVEVNUF9zcWwpIDsKKworCSRjb2xvcjE9JHJvc2Ntc19pbnRl cm5fY29sb3IxOworCSRjb2xvcjI9JHJvc2Ntc19pbnRlcm5fY29sb3IyOworCSRjb2xvcmNvdW50 ZXI9JnF1b3Q7MCZxdW90OzsKKwkvLyRmYXJiZT0mcXVvdDsjQ0NDQ0MmcXVvdDs7CisJCisJd2hp bGUoJHJlc3VsdF9wYWdlID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHF1ZXJ5X3BhZ2UpKSB7IC8vIHVz ZXJzCis/Jmd0OworICZuYnNwOyAmbmJzcDsmbHQ7dHImZ3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJz cDsmbHQ7dGQgdmFsaWduPSZxdW90O3RvcCZxdW90OyBiZ2NvbG9yPSZxdW90OyZsdDs/cGhwCisJ CQkJCQkJCSRjb2xvcmNvdW50ZXIrKzsKKwkJCQkJCQkJaWYgKCRjb2xvcmNvdW50ZXIgPT0gJnF1 b3Q7MSZxdW90OykgeworCQkJCQkJCQkJZWNobyAkY29sb3IxOworCQkJCQkJCQkJJGZhcmJlID0g JGNvbG9yMTsKKwkJCQkJCQkJfQorCQkJCQkJCQllbHNlaWYgKCRjb2xvcmNvdW50ZXIgPT0gJnF1 b3Q7MiZxdW90OykgeworCQkJCQkJCQkJJGNvbG9yY291bnRlcj0mcXVvdDswJnF1b3Q7OworCQkJ CQkJCQkJZWNobyAkY29sb3IyOworCQkJCQkJCQkJJGZhcmJlID0gJGNvbG9yMjsKKwkJCQkJCQkJ fQorCQkJCQkJCSA/Jmd0OyZxdW90OyZndDsgCisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 Jmx0O2RpdiBhbGlnbj0mcXVvdDtjZW50ZXImcXVvdDsmZ3Q7Jmx0O2EgaHJlZj0mcXVvdDs/cGFn ZT1hZG1pbiZhbXA7YW1wO3NlYz11c2VyaGlzdG9yeSZhbXA7YW1wO3NlYzI9ZWRpdCZhbXA7YW1w O3NlYzM9Jmx0Oz9waHAgZWNobyAkcmVzdWx0X3BhZ2VbJ3VzZXJncm91cG1lbWJlcl91c2VyZ3Jv dXBpZCddOyA/Jmd0OyZhbXA7YW1wO2RiX2lkPSZsdDs/cGhwIGVjaG8gJHJlc3VsdF9wYWdlWyd1 c2VyX2lkJ107ID8mZ3Q7JnF1b3Q7Jmd0OyZsdDtpbWcgc3JjPSZxdW90O2ltYWdlcy92aWV3Lmdp ZiZxdW90OyBhbHQ9JnF1b3Q7RWRpdCBNZW1iZXJzaGlwJnF1b3Q7IHdpZHRoPSZxdW90OzE5JnF1 b3Q7IGhlaWdodD0mcXVvdDsxOCZxdW90OyBib3JkZXI9JnF1b3Q7MCZxdW90OyZndDsmbHQ7L2Em Z3Q7JmFtcDtuYnNwOyZsdDthIGhyZWY9JnF1b3Q7P3BhZ2U9YWRtaW4mYW1wO2FtcDtzZWM9dXNl cmhpc3RvcnkmYW1wO2FtcDtzZWMyPWFkZCZhbXA7YW1wO3NlYzM9bmV3JmFtcDthbXA7ZGJfaWQ9 Jmx0Oz9waHAgZWNobyAkcmVzdWx0X3BhZ2VbJ3VzZXJncm91cG1lbWJlcl91c2VyaWQnXTsgPyZn dDsmcXVvdDsmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7aW1hZ2VzL3Rvb2wuZ2lmJnF1b3Q7IGFsdD0m cXVvdDtBZGQgTWVtYmVyc2hpcCZxdW90OyB3aWR0aD0mcXVvdDsxOSZxdW90OyBoZWlnaHQ9JnF1 b3Q7MTgmcXVvdDsgYm9yZGVyPSZxdW90OzAmcXVvdDsmZ3Q7Jmx0Oy9hJmd0OyZhbXA7bmJzcDsm bHQ7YSBocmVmPSZxdW90Oz9wYWdlPWFkbWluJmFtcDthbXA7c2VjPXVzZXJoaXN0b3J5JmFtcDth bXA7c2VjMj1kZWxldGUmYW1wO2FtcDtzZWMzPSZsdDs/cGhwIGVjaG8gJHJlc3VsdF9wYWdlWyd1 c2VyZ3JvdXBtZW1iZXJfdXNlcmdyb3VwaWQnXTsgPyZndDsmYW1wO2FtcDtkYl9pZD0mbHQ7P3Bo cCBlY2hvICRyZXN1bHRfcGFnZVsndXNlcmdyb3VwbWVtYmVyX3VzZXJpZCddOyA/Jmd0OyZxdW90 OyZndDsmbHQ7aW1nIHNyYz0mcXVvdDtpbWFnZXMvZGVsZXRlLmdpZiZxdW90OyBhbHQ9JnF1b3Q7 RGVsZXRlIE1lbWJlcnNoaXAmcXVvdDsgd2lkdGg9JnF1b3Q7MTkmcXVvdDsgaGVpZ2h0PSZxdW90 OzE4JnF1b3Q7IGJvcmRlcj0mcXVvdDswJnF1b3Q7Jmd0OyZsdDsvYSZndDsmbHQ7L2RpdiZndDsm bHQ7L3RkJmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O3RkIHZhbGlnbj0mcXVvdDt0b3Am cXVvdDsgYmdjb2xvcj0mcXVvdDsmbHQ7P3BocCBlY2hvICRmYXJiZTsgPyZndDsmcXVvdDsmZ3Q7 ICZsdDtkaXYgYWxpZ249JnF1b3Q7bGVmdCZxdW90OyZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsmbHQ7cCBhbGlnbj0mcXVvdDtjZW50ZXImcXVvdDsmZ3Q7Jmx0O2ZvbnQgZmFjZT0m cXVvdDtBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmJnF1b3Q7Jmd0OyZsdDs/cGhwIGVjaG8g JHJlc3VsdF9wYWdlWyd1c2VyX2lkJ10uICZxdW90OyAtICZxdW90OzsgCisJCSRxdWVyeV91c3Jh ID0gbXlzcWxfcXVlcnkoJnF1b3Q7U0VMRUNUIHVzZXJfaWQsIHVzZXJfbmFtZSBGUk9NIHVzZXJz IFdIRVJFIHVzZXJfaWQgPSAnJnF1b3Q7LiRyZXN1bHRfcGFnZVsndXNlcl9pZCddLiZxdW90Oycm cXVvdDspIG9yIGRpZSgnREIgZXJyb3IgKG1lbWJlcnNoaXAgc2NyaXB0KSEnKTsKKwkJJHJlc3Vs dF91c3JhID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHF1ZXJ5X3VzcmEpOyAvLyBvciBkaWUoJ0RCIGVy cm9yIChzaG93X3Nlc3Npb25zIHNjcmlwdCknKTsKKwkgJm5ic3A7CisJICZuYnNwOyBlY2hvICZx dW90OyZsdDtiJmd0OyZxdW90Oy4kcmVzdWx0X3VzcmFbJ3VzZXJfbmFtZSddLiZxdW90OyZsdDsv YiZndDsmbHQ7YnIgLyZndDsmbHQ7YSBocmVmPSc/cGFnZT11c2VyJmFtcDthbXA7c2VjPXByb2Zp bCZhbXA7YW1wO3NlYzI9JnF1b3Q7LiRyZXN1bHRfcGFnZVsndXNlcl9pZCddLiZxdW90OycmZ3Q7 W1Byb2ZpbF0mbHQ7L2EmZ3Q7JnF1b3Q7OyA/Jmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7Jmx0Oy9mb250Jmd0OyZsdDsvcCZndDsKKyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsmbHQ7cCZndDsmbHQ7Zm9udCBmYWNlPSZxdW90O0FyaWFsLCBIZWx2ZXRp Y2EsIHNhbnMtc2VyaWYmcXVvdDsmZ3Q7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7Jmx0Oz9waHAKKwkJCWVjaG8gJnF1b3Q7Jmx0O3VsJmd0OyZxdW90OzsKKwkJCSRx dWVyeV9ncnBtYnIgPSBteXNxbF9xdWVyeSgmcXVvdDtTRUxFQ1QgKiAKKwkJCQkJCQkJCQlGUk9N IGB1c2VyZ3JvdXBfbWVtYmVyc2AgCisJCQkJCQkJCQkJV0hFUkUgYHVzZXJncm91cG1lbWJlcl91 c2VyaWRgID0gJnF1b3Q7LiRyZXN1bHRfdXNyYVsndXNlcl9pZCddLiZxdW90OyAKKwkJCQkJCQkJ CQlPUkRFUiBCWSBgdXNlcmdyb3VwbWVtYmVyX3VzZXJncm91cGlkYCBBU0MgOyZxdW90OykgOwor CQkJd2hpbGUoJHJlc3VsdF9ncnBtYnIgPSBteXNxbF9mZXRjaF9hcnJheSgkcXVlcnlfZ3JwbWJy KSkgeworCQkJCWVjaG8gJnF1b3Q7Jmx0O2xpJmd0OyZxdW90Oy4kcmVzdWx0X2dycG1iclsndXNl cmdyb3VwbWVtYmVyX3VzZXJncm91cGlkJ10uJnF1b3Q7Jmx0Oy9saSZndDsmcXVvdDs7CisJCQl9 CisJCQllY2hvICZxdW90OyZsdDsvdWwmZ3Q7JnF1b3Q7OworCQkgPyZndDsKKyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDsvZm9udCZndDsmbHQ7L3AmZ3Q7Cisg Jm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7L2RpdiZndDsmbHQ7L3RkJmd0OworICZuYnNwOyAmbmJz cDsgJm5ic3A7Jmx0O3RkIHZhbGlnbj0mcXVvdDt0b3AmcXVvdDsgYmdjb2xvcj0mcXVvdDsmbHQ7 P3BocCBlY2hvICRmYXJiZTsgPyZndDsmcXVvdDsmZ3Q7Jmx0Oz9waHAgCisKKwkvLyBDb250ZW50 cwkKKwkJZWNobyAmcXVvdDsmbHQ7YiZndDsmbHQ7dSZndDsmbHQ7aSZndDtDb250ZW50czombHQ7 L2kmZ3Q7Jmx0Oy91Jmd0OyZsdDsvYiZndDsgJnF1b3Q7OworCQkkcXVlcnlfY291bnRfY29udGVu dHM9bXlzcWxfcXVlcnkoJnF1b3Q7U0VMRUNUIENPVU5UKCdjb250ZW50X2lkJykgCisJCQkJCQkJ CQkJCUZST00gYGNvbnRlbnRgIAorCQkJCQkJCQkJCQlXSEVSRSBgY29udGVudF91c3JuYW1lX2lk YCA9ICZxdW90Oy4kcmVzdWx0X3BhZ2VbJ3VzZXJfaWQnXS4mcXVvdDsKKwkJCQkJCQkJCQkJT1JE RVIgQlkgYGNvbnRlbnRfaWRgIERFU0M7JnF1b3Q7KTsJCisJCSRyZXN1bHRfY291bnRfY29udGVu dHMgPSBteXNxbF9mZXRjaF9yb3coJHF1ZXJ5X2NvdW50X2NvbnRlbnRzKTsKKwkJZWNobyAkcmVz dWx0X2NvdW50X2NvbnRlbnRzWzBdLiZxdW90OyZsdDticiAvJmd0OyZsdDticiAvJmd0OyZxdW90 OzsKKwkJaWYgKCRyZXN1bHRfY291bnRfY29udGVudHNbMF0gIT0gMCkgeworCQkJJHF1ZXJ5X2Vu dHJpZXNfY29udGVudHMgPSBteXNxbF9xdWVyeSgmcXVvdDtTRUxFQ1QgKiAKKwkJCQkJCQkJCQkJ CQlGUk9NIGBjb250ZW50YCAKKwkJCQkJCQkJCQkJCQlXSEVSRSBgY29udGVudF91c3JuYW1lX2lk YCA9ICZxdW90Oy4kcmVzdWx0X3BhZ2VbJ3VzZXJfaWQnXS4mcXVvdDsKKwkJCQkJCQkJCQkJCQlP UkRFUiBCWSBgY29udGVudF9pZGAgREVTQyAKKwkJCQkJCQkJCQkJCQlMSU1JVCAwICwgMjUgOyZx dW90OykgOworCQkJd2hpbGUoJHJlc3VsdF9lbnRyaWVzX2NvbnRlbnRzID0gbXlzcWxfZmV0Y2hf YXJyYXkoJHF1ZXJ5X2VudHJpZXNfY29udGVudHMpKSB7CisJCQkJZWNobyAmcXVvdDsmYW1wO25i c3A7JmFtcDtuYnNwOyZhbXA7bmJzcDsmYW1wO25ic3A7JmFtcDtuYnNwOyZxdW90Oy4kcmVzdWx0 X2VudHJpZXNfY29udGVudHNbJ2NvbnRlbnRfaWQnXS4mcXVvdDsgLSAmcXVvdDsuJHJlc3VsdF9l bnRyaWVzX2NvbnRlbnRzWydjb250ZW50X25hbWUnXS4mcXVvdDsgJmx0O2ZvbnQgc2l6ZT0nMScm Z3Q7LSAmcXVvdDsuJHJlc3VsdF9lbnRyaWVzX2NvbnRlbnRzWydjb250ZW50X2xhbmcnXS4mcXVv dDsgLyAmcXVvdDsuJHJlc3VsdF9lbnRyaWVzX2NvbnRlbnRzWydjb250ZW50X3R5cGUnXS4mcXVv dDsgKCZxdW90Oy4kcmVzdWx0X2VudHJpZXNfY29udGVudHNbJ2NvbnRlbnRfZGF0ZSddLiZxdW90 OyAmcXVvdDsuJHJlc3VsdF9lbnRyaWVzX2NvbnRlbnRzWydjb250ZW50X3RpbWUnXS4mcXVvdDsp Jmx0Oy9mb250Jmd0OyZsdDticiAvJmd0OyZxdW90OzsKKwkJCX0KKwkJCWlmICgkcmVzdWx0X2Nv dW50X2NvbnRlbnRzWzBdICZndDsgMjUpIHsKKwkJCQllY2hvICZxdW90OyZhbXA7bmJzcDsmYW1w O25ic3A7JmFtcDtuYnNwOyZhbXA7bmJzcDsmYW1wO25ic3A7Li4uJmx0O2JyIC8mZ3Q7JnF1b3Q7 OworCQkJfQorCQkJZWNobyAmcXVvdDsmbHQ7YnIgLyZndDsmcXVvdDs7CisJCX0KKworCisJLy8g UGFnZXMJCisJCWVjaG8gJnF1b3Q7Jmx0O2ImZ3Q7Jmx0O3UmZ3Q7Jmx0O2kmZ3Q7UGFnZXM6Jmx0 Oy9pJmd0OyZsdDsvdSZndDsmbHQ7L2ImZ3Q7ICZxdW90OzsKKwkJJHF1ZXJ5X2NvdW50X2NvbnRl bnRzPW15c3FsX3F1ZXJ5KCZxdW90O1NFTEVDVCBDT1VOVCgncGFnZV9pZCcpIAorCQkJCQkJCQkJ CQlGUk9NIGBwYWdlc2AgCisJCQkJCQkJCQkJCVdIRVJFIGBwYWdlX3Vzcm5hbWVfaWRgID0gJnF1 b3Q7LiRyZXN1bHRfcGFnZVsndXNlcl9pZCddLiZxdW90OworCQkJCQkJCQkJCQlPUkRFUiBCWSBg cGFnZV9pZGAgREVTQzsmcXVvdDspOwkKKwkJJHJlc3VsdF9jb3VudF9jb250ZW50cyA9IG15c3Fs X2ZldGNoX3JvdygkcXVlcnlfY291bnRfY29udGVudHMpOworCQllY2hvICRyZXN1bHRfY291bnRf Y29udGVudHNbMF0uJnF1b3Q7Jmx0O2JyIC8mZ3Q7Jmx0O2JyIC8mZ3Q7JnF1b3Q7OworCQlpZiAo JHJlc3VsdF9jb3VudF9jb250ZW50c1swXSAhPSAwKSB7CisJCQkkcXVlcnlfZW50cmllc19jb250 ZW50cyA9IG15c3FsX3F1ZXJ5KCZxdW90O1NFTEVDVCAqIAorCQkJCQkJCQkJCQkJCUZST00gYHBh Z2VzYCAKKwkJCQkJCQkJCQkJCQlXSEVSRSBgcGFnZV91c3JuYW1lX2lkYCA9ICZxdW90Oy4kcmVz dWx0X3BhZ2VbJ3VzZXJfaWQnXS4mcXVvdDsKKwkJCQkJCQkJCQkJCQlPUkRFUiBCWSBgcGFnZV9p ZGAgREVTQyAKKwkJCQkJCQkJCQkJCQlMSU1JVCAwICwgMjUgOyZxdW90OykgOworCQkJd2hpbGUo JHJlc3VsdF9lbnRyaWVzX2NvbnRlbnRzID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHF1ZXJ5X2VudHJp ZXNfY29udGVudHMpKSB7CisJCQkJZWNobyAmcXVvdDsmYW1wO25ic3A7JmFtcDtuYnNwOyZhbXA7 bmJzcDsmYW1wO25ic3A7JmFtcDtuYnNwOyZxdW90Oy4kcmVzdWx0X2VudHJpZXNfY29udGVudHNb J3BhZ2VfaWQnXS4mcXVvdDsgLSAmcXVvdDsuJHJlc3VsdF9lbnRyaWVzX2NvbnRlbnRzWydwYWdl X25hbWUnXS4mcXVvdDsgJmx0O2ZvbnQgc2l6ZT0nMScmZ3Q7LSAmcXVvdDsuJHJlc3VsdF9lbnRy aWVzX2NvbnRlbnRzWydwYWdlX2xhbmd1YWdlJ10uJnF1b3Q7IC8gJnF1b3Q7LiRyZXN1bHRfZW50 cmllc19jb250ZW50c1sncGFnZXNfZXh0ZW50aW9uJ10uJnF1b3Q7ICgmcXVvdDsuJHJlc3VsdF9l bnRyaWVzX2NvbnRlbnRzWydwYWdlX2RhdGUnXS4mcXVvdDsgJnF1b3Q7LiRyZXN1bHRfZW50cmll c19jb250ZW50c1sncGFnZV90aW1lJ10uJnF1b3Q7KSZsdDsvZm9udCZndDsmbHQ7YnIgLyZndDsm cXVvdDs7CisJCQl9CisJCQlpZiAoJHJlc3VsdF9jb3VudF9jb250ZW50c1swXSAmZ3Q7IDI1KSB7 CisJCQkJZWNobyAmcXVvdDsmYW1wO25ic3A7JmFtcDtuYnNwOyZhbXA7bmJzcDsmYW1wO25ic3A7 JmFtcDtuYnNwOy4uLiZsdDticiAvJmd0OyZxdW90OzsKKwkJCX0KKwkJCWVjaG8gJnF1b3Q7Jmx0 O2JyIC8mZ3Q7JnF1b3Q7OworCQl9CisKKworCS8vIFBhZ2VzCQorCQllY2hvICZxdW90OyZsdDti Jmd0OyZsdDt1Jmd0OyZsdDtpJmd0O0R5bkNvbnRlbnQ6Jmx0Oy9pJmd0OyZsdDsvdSZndDsmbHQ7 L2ImZ3Q7ICZxdW90OzsKKwkJJHF1ZXJ5X2NvdW50X2NvbnRlbnRzPW15c3FsX3F1ZXJ5KCZxdW90 O1NFTEVDVCBDT1VOVCgnZHluX2lkJykgCisJCQkJCQkJCQkJCUZST00gYGR5bl9jb250ZW50YCAK KwkJCQkJCQkJCQkJV0hFUkUgYGR5bl9jb250ZW50X3Vzcm5hbWVfaWRgID0gJnF1b3Q7LiRyZXN1 bHRfcGFnZVsndXNlcl9pZCddLiZxdW90OworCQkJCQkJCQkJCQlPUkRFUiBCWSBgZHluX2lkYCBE RVNDOyZxdW90Oyk7CQorCQkkcmVzdWx0X2NvdW50X2NvbnRlbnRzID0gbXlzcWxfZmV0Y2hfcm93 KCRxdWVyeV9jb3VudF9jb250ZW50cyk7CisJCWVjaG8gJHJlc3VsdF9jb3VudF9jb250ZW50c1sw XS4mcXVvdDsmbHQ7YnIgLyZndDsmbHQ7YnIgLyZndDsmcXVvdDs7CisJCWlmICgkcmVzdWx0X2Nv dW50X2NvbnRlbnRzWzBdICE9IDApIHsKKwkJCSRxdWVyeV9lbnRyaWVzX2NvbnRlbnRzID0gbXlz cWxfcXVlcnkoJnF1b3Q7U0VMRUNUICogCisJCQkJCQkJCQkJCQkJRlJPTSBgZHluX2NvbnRlbnRg IAorCQkJCQkJCQkJCQkJCVdIRVJFIGBkeW5fY29udGVudF91c3JuYW1lX2lkYCA9ICZxdW90Oy4k cmVzdWx0X3BhZ2VbJ3VzZXJfaWQnXS4mcXVvdDsKKwkJCQkJCQkJCQkJCQlPUkRFUiBCWSBgZHlu X2lkYCBERVNDIAorCQkJCQkJCQkJCQkJCUxJTUlUIDAgLCAyNSA7JnF1b3Q7KSA7CisJCQl3aGls ZSgkcmVzdWx0X2VudHJpZXNfY29udGVudHMgPSBteXNxbF9mZXRjaF9hcnJheSgkcXVlcnlfZW50 cmllc19jb250ZW50cykpIHsKKwkJCQllY2hvICZxdW90OyZhbXA7bmJzcDsmYW1wO25ic3A7JmFt cDtuYnNwOyZhbXA7bmJzcDsmYW1wO25ic3A7JnF1b3Q7LiRyZXN1bHRfZW50cmllc19jb250ZW50 c1snZHluX2lkJ10uJnF1b3Q7IC0gJnF1b3Q7LiRyZXN1bHRfZW50cmllc19jb250ZW50c1snZHlu X2NvbnRlbnRfbmFtZSddLiZxdW90O18mcXVvdDsuJHJlc3VsdF9lbnRyaWVzX2NvbnRlbnRzWydk eW5fY29udGVudF9pZCddLiZxdW90Oy4mcXVvdDsuJHJlc3VsdF9lbnRyaWVzX2NvbnRlbnRzWydk eW5fY29udGVudF9uciddLiZxdW90OyAmbHQ7Zm9udCBzaXplPScxJyZndDstICZxdW90Oy4kcmVz dWx0X2VudHJpZXNfY29udGVudHNbJ2R5bl9jb250ZW50X2xhbmcnXS4mcXVvdDsgKCZxdW90Oy4k cmVzdWx0X2VudHJpZXNfY29udGVudHNbJ2R5bl9jb250ZW50X2RhdGUnXS4mcXVvdDsgJnF1b3Q7 LiRyZXN1bHRfZW50cmllc19jb250ZW50c1snZHluX2NvbnRlbnRfdGltZSddLiZxdW90OykmbHQ7 L2ZvbnQmZ3Q7Jmx0O2JyIC8mZ3Q7JnF1b3Q7OworCQkJfQorCQkJaWYgKCRyZXN1bHRfY291bnRf Y29udGVudHNbMF0gJmd0OyAyNSkgeworCQkJCWVjaG8gJnF1b3Q7JmFtcDtuYnNwOyZhbXA7bmJz cDsmYW1wO25ic3A7JmFtcDtuYnNwOyZhbXA7bmJzcDsuLi4mbHQ7YnIgLyZndDsmcXVvdDs7CisJ CQl9CisJCQllY2hvICZxdW90OyZsdDticiAvJmd0OyZxdW90OzsKKwkJfQorCisJICZuYnNwOz8m Z3Q7Jmx0Oy90ZCZndDsKKyAmbmJzcDsgJm5ic3A7Jmx0Oy90ciZndDsKKyAmbmJzcDsgJm5ic3A7 Jmx0Oz9waHAJCisJfQkvLyBlbmQgd2hpbGUKKz8mZ3Q7CisgJm5ic3A7Jmx0Oy90YWJsZSZndDsK KyAmbmJzcDsmbHQ7P3BocAorICZuYnNwOwkkcm9zY21zX2luZm90YWJsZSA9ICZxdW90O3VzZXIm cXVvdDs7CisJaW5jbHVkZSgmcXVvdDtpbmMvaW5jX2Rlc2NyaXB0aW9uX3RhYmxlLnBocCZxdW90 Oyk7Cis/Jmd0OworJmx0Oy9kaXYmZ3Q7CjwvcHJlPjxwcmUgY2xhc3M9ImRpZmYiIGlkPSJjb250 ZXh0Ij5Qcm9wZXJ0eSBjaGFuZ2VzIG9uOiB0cnVuay93ZWIvcmVhY3Rvcy5vcmcvaHRkb2NzL3Jv c2Ntcy9pbmMvYWRtaW5fdXNlcl9oaXN0b3J5LnBocApfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wt c3R5bGUKICZuYnNwOyArIG5hdGl2ZQo8L3ByZT48L2Rpdj4KPGhyIC8+PGRpdiBjbGFzcz0iZmls ZSI+CjxkaXYgY2xhc3M9ImZpbGVoZWFkZXIiPjxiaWc+PGI+TW9kaWZpZWQ6IHRydW5rL3dlYi9y ZWFjdG9zLm9yZy9odGRvY3Mvcm9zY21zL2luYy9pbmNfbWVudV9hZG1pbi5waHA8L2I+PC9iaWc+ PC9kaXY+CjxwcmUgY2xhc3M9ImRpZmYiPjxzbWFsbCBpZD0iaW5mbyI+LS0tIHRydW5rL3dlYi9y ZWFjdG9zLm9yZy9odGRvY3Mvcm9zY21zL2luYy9pbmNfbWVudV9hZG1pbi5waHAJMjAwNi0wMS0x MSAxOToxODo1NyBVVEMgKHJldiAyMDc4NikKKysrIHRydW5rL3dlYi9yZWFjdG9zLm9yZy9odGRv Y3Mvcm9zY21zL2luYy9pbmNfbWVudV9hZG1pbi5waHAJMjAwNi0wMS0xMSAyMDowMTowMyBVVEMg KHJldiAyMDc4NykKQEAgLTM0LDExICszNCwxMiBAQAo8L3NtYWxsPjwvcHJlPjxwcmUgY2xhc3M9 ImRpZmYiIGlkPSJjb250ZXh0Ij4gPyZndDsKIAkJJmx0O2xpJmd0OyZsdDthIGhyZWY9JnF1b3Q7 P3BhZ2U9YWRtaW4mYW1wO2FtcDtzZWM9dXNlcnMmcXVvdDsmZ3Q7VXNlciBBY2NvdW50cyZsdDsv YSZndDsmbHQ7L2xpJmd0OwogJmx0Oz9waHAKPC9wcmU+PHByZSBjbGFzcz0iZGlmZiIgaWQ9InJl bW92ZWQiPi0JaWYgKCRycG1fc2VjID09ICZxdW90O3VzZXJzJnF1b3Q7IHx8ICRycG1fc2VjID09 ICZxdW90O3VzZXJncm91cHMmcXVvdDsgfHwgJHJwbV9zZWMgPT0gJnF1b3Q7dXNyZ3JwbWJyJnF1 b3Q7IHx8ICRycG1fc2VjID09ICZxdW90O3Nlc3Npb25zJnF1b3Q7KSB7IAo8L3ByZT48cHJlIGNs YXNzPSJkaWZmIiBpZD0iYWRkZWQiPisJaWYgKCRycG1fc2VjID09ICZxdW90O3VzZXJzJnF1b3Q7 IHx8ICRycG1fc2VjID09ICZxdW90O3VzZXJncm91cHMmcXVvdDsgfHwgJHJwbV9zZWMgPT0gJnF1 b3Q7dXNyZ3JwbWJyJnF1b3Q7IHx8ICRycG1fc2VjID09ICZxdW90OzxzcGFuIGlkPSJhZGRlZGNo YXJzIj51c2VyaGlzdG9yeSZxdW90OyB8fCAkcnBtX3NlYyA9PSAmcXVvdDs8L3NwYW4+c2Vzc2lv bnMmcXVvdDspIHsgCjwvcHJlPjxwcmUgY2xhc3M9ImRpZmYiIGlkPSJjb250ZXh0Ij4gPyZndDsK IAkJJmx0O2xpJmd0OyZsdDthIGhyZWY9JnF1b3Q7P3BhZ2U9YWRtaW4mYW1wO2FtcDtzZWM9dXNl cmdyb3VwcyZxdW90OyZndDsmYW1wO25ic3A7LSBVc2VyZ3JvdXBzJmx0Oy9hJmd0OyZsdDsvbGkm Z3Q7CiAJCSZsdDtsaSZndDsmbHQ7YSBocmVmPSZxdW90Oz9wYWdlPWFkbWluJmFtcDthbXA7c2Vj PXVzcmdycG1iciZxdW90OyZndDsmYW1wO25ic3A7LSBHcm91cCBNZW1iZXJzJmx0Oy9hJmd0OyZs dDsvbGkmZ3Q7CiAJCSZsdDtsaSZndDsmbHQ7YSBocmVmPSZxdW90Oz9wYWdlPWFkbWluJmFtcDth bXA7c2VjPXNlc3Npb25zJnF1b3Q7Jmd0OyZhbXA7bmJzcDstIFNlc3Npb25zJmx0Oy9hJmd0OyZs dDsvbGkmZ3Q7CQkKPC9wcmU+PHByZSBjbGFzcz0iZGlmZiIgaWQ9ImFkZGVkIj4rCQkmbHQ7bGkm Z3Q7Jmx0O2EgaHJlZj0mcXVvdDs/cGFnZT1hZG1pbiZhbXA7YW1wO3NlYz11c2VyaGlzdG9yeSZx dW90OyZndDsmYW1wO25ic3A7LSBVc2VyIEhpc3RvcnkmbHQ7L2EmZ3Q7Jmx0Oy9saSZndDsKPC9w cmU+PHByZSBjbGFzcz0iZGlmZiIgaWQ9ImNvbnRleHQiPiAmbHQ7P3BocAogCX0KID8mZ3Q7Cjwv cHJlPgo8L2Rpdj4KCjwvYm9keT4KPC9odG1sPgo= --===============4051529524331948607==--