From 06317ed1e4d4dd9f39a0b6bc9ad7ac1bf7170836 Mon Sep 17 00:00:00 2001 From: GaalexxC Date: Tue, 16 Apr 2019 01:02:22 -0400 Subject: [PATCH 01/23] Updated Badges --- README.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 8873e99..0dd4921 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,11 @@ ![devCUHead](https://www.devcu.net/mediasrc/githubhead_2.gif?V=1.4) -[![License](https://img.shields.io/badge/License-GNUv3-blue.svg)](https://github.com/devCU/IPS-SideNote/blob/master/LICENSE) [![Version](https://img.shields.io/badge/Version-1.0.1-blue.svg)](https://www.devcu.com/forums/devcu-tracker/) - [![Build](https://img.shields.io/badge/Build-Stable-important.svg)](https://www.devcu.com/forums/devcu-tracker/) - [![Status](https://img.shields.io/badge/Status-Release-brightgreen.svg)](https://www.devcu.com/forums/devcu-tracker/) - [![Development](https://img.shields.io/badge/Development-Active-blue.svg)](https://www.devcu.com/forums/devcu-tracker/) - - -## ** Become a Patron of devCU ** +[![License](https://img.shields.io/badge/License-GNUv3-blue.svg)](https://github.com/devCU/IPS-SideNote/blob/master/LICENSE) +[![Version](https://img.shields.io/badge/Version-1.0.1-ff69b4.svg)](https://www.devcu.com/forums/devcu-tracker/) +[![Build](https://img.shields.io/badge/Build-Stable-blueviolet.svg)](https://www.devcu.com/forums/devcu-tracker/) +[![Status](https://img.shields.io/badge/Status-Release-brightgreen.svg)](https://www.devcu.com/forums/devcu-tracker/) +[![Development](https://img.shields.io/badge/Development-Active-success.svg)](https://www.devcu.com/forums/devcu-tracker/) +[![Platform](https://img.shields.io/badge/Platform-IPS4.3+-blue.svg)](https://www.devcu.com/forums/devcu-tracker/) **Please support our Open Source Projects and keep this software free** From 80b04b7359af10eef7a135310b37f6687c9782cb Mon Sep 17 00:00:00 2001 From: Gary Cornell Date: Tue, 16 Apr 2019 01:08:00 -0400 Subject: [PATCH 02/23] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0dd4921..559570b 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ #### Inspired by IPS dev mode message, SideNote is a highly customizable and immediately visible plug-in for IPS 4 Community Suite. A colorful (Side) bar that pops up a (Note) message on click. Out of the way to the side but instantly noticed. Visitors to your site will click on this first everytime. Can be used for anything including site information, holiday greetings, announcements, special offers/advertisements and anything else you want to make your sites visitors aware of. - + From 3ae515752268eb2d685f819e88fdf25e9c52172b Mon Sep 17 00:00:00 2001 From: GaalexxC Date: Wed, 17 Apr 2019 19:39:38 -0400 Subject: [PATCH 03/23] Update 1.0.2 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 559570b..74d310f 100644 --- a/README.md +++ b/README.md @@ -54,9 +54,9 @@ Import SideNote.xml via Install New Plugin in IPS ACP ## ** Updated Notes ** -04/15/19 +04/17/19 -- New release 1.0.1 for some minor issues and feature updates/additions. +- New release 1.0.2 coming this weekend, Fixes several bugs and a new feature added - Added toastr notifications for page addresses - Working stable release for 4.3x and 4.4x available in /src folder and compressed on releases page - IPS 4.4 version updated for PHP root-namespace From 53dd858b1ffeecb4e1c2074c5ff2c6c1db92d93d Mon Sep 17 00:00:00 2001 From: GaalexxC Date: Thu, 18 Apr 2019 08:38:21 -0400 Subject: [PATCH 04/23] Update --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 74d310f..5c10fa3 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ - Custom FontAwesome icons - Custom Colors and look - Mesage box with date and time stamps -- Hover effects, blinking icon effects, etc +- Hover effects, image effects, etc - More... ## Install @@ -54,9 +54,9 @@ Import SideNote.xml via Install New Plugin in IPS ACP ## ** Updated Notes ** -04/17/19 +04/18/19 -- New release 1.0.2 coming this weekend, Fixes several bugs and a new feature added +- New release 1.0.2 coming this weekend, Fixes several bugs and a new options/features added - Added toastr notifications for page addresses - Working stable release for 4.3x and 4.4x available in /src folder and compressed on releases page - IPS 4.4 version updated for PHP root-namespace From b2b5b065c85c97bad9521bdc1ad0d1e7dd763178 Mon Sep 17 00:00:00 2001 From: GaalexxC Date: Thu, 18 Apr 2019 10:51:57 -0400 Subject: [PATCH 05/23] dev 1.0.2 --- README.md | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5c10fa3..0122ac4 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,22 @@ - Hover effects, image effects, etc - More... +## ** 1.0.2 Release Notes ** + +### Maintenance +- Several Typos, more detailed descriptions of some options +- ToggleOff when hiding sidebar +- Return Form - Return to last active tab when editing +- Toastr CSS improvements and overrides +- Lang bits updated + +### Bug Fixes +- Toastr Notifications issue #2 + +### New Features/Options +- 3 Sidebar options, striped, solid, and image background. +- Adding new animations + ## Install Import SideNote.xml via Install New Plugin in IPS ACP @@ -56,8 +72,7 @@ Import SideNote.xml via Install New Plugin in IPS ACP 04/18/19 -- New release 1.0.2 coming this weekend, Fixes several bugs and a new options/features added -- Added toastr notifications for page addresses +- New release 1.0.2 - Working stable release for 4.3x and 4.4x available in /src folder and compressed on releases page - IPS 4.4 version updated for PHP root-namespace - Please report and issues, feature requests, or suggestions in Issues From f97337236437162b6e286e4e5f07a3c00344224b Mon Sep 17 00:00:00 2001 From: GaalexxC Date: Thu, 18 Apr 2019 10:54:01 -0400 Subject: [PATCH 06/23] dev 1.0.2 --- README.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 0122ac4..535460a 100644 --- a/README.md +++ b/README.md @@ -49,34 +49,34 @@ - Hover effects, image effects, etc - More... +## ** Updated Notes ** + +04/18/19 + +- New release 1.0.2 +- Working stable release for 4.3x and 4.4x available in /src folder and compressed on releases page +- IPS 4.4 version updated for PHP root-namespace +- Please report and issues, feature requests, or suggestions in Issues + ## ** 1.0.2 Release Notes ** -### Maintenance +#### Maintenance - Several Typos, more detailed descriptions of some options - ToggleOff when hiding sidebar - Return Form - Return to last active tab when editing - Toastr CSS improvements and overrides - Lang bits updated -### Bug Fixes +#### Bug Fixes - Toastr Notifications issue #2 -### New Features/Options +#### New Features/Options - 3 Sidebar options, striped, solid, and image background. - Adding new animations -## Install +## ** Install ** Import SideNote.xml via Install New Plugin in IPS ACP -## ** Updated Notes ** - -04/18/19 - -- New release 1.0.2 -- Working stable release for 4.3x and 4.4x available in /src folder and compressed on releases page -- IPS 4.4 version updated for PHP root-namespace -- Please report and issues, feature requests, or suggestions in Issues - ## License From d982917e587cda6d60b0d2adb6f78488e7af2e6f Mon Sep 17 00:00:00 2001 From: GaalexxC Date: Thu, 18 Apr 2019 10:56:00 -0400 Subject: [PATCH 07/23] dev 1.0.2 --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 535460a..e1fee4d 100644 --- a/README.md +++ b/README.md @@ -58,23 +58,23 @@ - IPS 4.4 version updated for PHP root-namespace - Please report and issues, feature requests, or suggestions in Issues -## ** 1.0.2 Release Notes ** +## ** 1.0.2 Changelog ** -#### Maintenance +__Maintenance__ - Several Typos, more detailed descriptions of some options - ToggleOff when hiding sidebar - Return Form - Return to last active tab when editing - Toastr CSS improvements and overrides - Lang bits updated -#### Bug Fixes +__Bug Fixes__ - Toastr Notifications issue #2 -#### New Features/Options +__New Features/Options__ - 3 Sidebar options, striped, solid, and image background. - Adding new animations -## ** Install ** +## ** Install/Upgrade ** Import SideNote.xml via Install New Plugin in IPS ACP From 1326dcac6406462db36f785e97646f46b8723fc7 Mon Sep 17 00:00:00 2001 From: GaalexxC Date: Thu, 18 Apr 2019 10:59:24 -0400 Subject: [PATCH 08/23] dev 1.0.2 --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e1fee4d..0319d42 100644 --- a/README.md +++ b/README.md @@ -61,18 +61,17 @@ ## ** 1.0.2 Changelog ** __Maintenance__ -- Several Typos, more detailed descriptions of some options +- Couple Typos, more detailed descriptions of some options - ToggleOff when hiding sidebar - Return Form - Return to last active tab when editing - Toastr CSS improvements and overrides - Lang bits updated __Bug Fixes__ -- Toastr Notifications issue #2 +- Toastr Notifications [issue #2](https://github.com/devCU/IPS-SideNote/issues/2) __New Features/Options__ -- 3 Sidebar options, striped, solid, and image background. -- Adding new animations +- 2 New sidebar options in addition to striped, solid and image background added. ## ** Install/Upgrade ** Import SideNote.xml via Install New Plugin in IPS ACP From 467bd8d1bc280438a04e30c8c99bd9f761518acd Mon Sep 17 00:00:00 2001 From: GaalexxC Date: Thu, 18 Apr 2019 11:22:36 -0400 Subject: [PATCH 09/23] dev 1.0.2 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0319d42..a463756 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ #### Inspired by IPS dev mode message, SideNote is a highly customizable and immediately visible plug-in for IPS 4 Community Suite. A colorful (Side) bar that pops up a (Note) message on click. Out of the way to the side but instantly noticed. Visitors to your site will click on this first everytime. Can be used for anything including site information, holiday greetings, announcements, special offers/advertisements and anything else you want to make your sites visitors aware of. - + From f92705f51f6eefed143e3f5c59baf3bbcfef53e8 Mon Sep 17 00:00:00 2001 From: GaalexxC Date: Thu, 18 Apr 2019 14:32:23 -0400 Subject: [PATCH 10/23] dev 1.0.2 --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a463756..57042cf 100644 --- a/README.md +++ b/README.md @@ -53,10 +53,10 @@ 04/18/19 -- New release 1.0.2 +- New release 1.0.2 due on Easter (4/21) - Working stable release for 4.3x and 4.4x available in /src folder and compressed on releases page - IPS 4.4 version updated for PHP root-namespace -- Please report and issues, feature requests, or suggestions in Issues +- Please report any issues, feature requests, or suggestions in [Issues](https://github.com/devCU/IPS-SideNote/issues) ## ** 1.0.2 Changelog ** @@ -64,8 +64,9 @@ __Maintenance__ - Couple Typos, more detailed descriptions of some options - ToggleOff when hiding sidebar - Return Form - Return to last active tab when editing -- Toastr CSS improvements and overrides +- Toastr CSS improvements and overrides available in sidenote.css for customization - Lang bits updated +- Code cleanup __Bug Fixes__ - Toastr Notifications [issue #2](https://github.com/devCU/IPS-SideNote/issues/2) From 05adb87e73af4f71dee828a92d9c4b45929f2d5c Mon Sep 17 00:00:00 2001 From: GaalexxC Date: Thu, 18 Apr 2019 15:10:38 -0400 Subject: [PATCH 11/23] dev 1.0.2 --- src/IPS4.3/SideNote.xml | 57 ++++++++++++++++++++++++++++++++++++----- src/IPS4.4/SideNote.xml | 57 ++++++++++++++++++++++++++++++++++++----- 2 files changed, 100 insertions(+), 14 deletions(-) diff --git a/src/IPS4.3/SideNote.xml b/src/IPS4.3/SideNote.xml index 70bf5b4..e45ac85 100644 --- a/src/IPS4.3/SideNote.xml +++ b/src/IPS4.3/SideNote.xml @@ -1,5 +1,5 @@ -sdn_enabled0sdn_titlesdn_lgdescsdn_stdescsdn_fonticonf071sdn_background_color#FFFsdn_stripe_color#f4b738sdn_sidebar_width10sdn_fonticon_size25sdn_fonticon_color#FFFFFFsdn_fonticon_hovercolor#bbb6b6sdn_groupssdn_hide0sdn_date_startsdn_date_endsdn_modal_sizemediumsdn_infobox_enabled0sdn_infobox_contentsdn_infobox_fonticonf05asdn_infobox_fonticon_size15sdn_infobox_color#326196sdn_infobox_showtime0sdn_sidebar_hide0sdn_tab_color#f4b738sdn_tab_sizew60sdn_tab_sizeh50sdn_tab_radius30sdn_tab_positionbottomsdn_tab_window10sdn_configure_pages_type0sdn_configure_pages_listsdn_hide_guests0sdn_notfication_groups4sdn_notfication_enabled0sdn_icon_animation0sdn_enabled0sdn_titlesdn_lgdescsdn_stdescsdn_fonticonf071sdn_background_color#FFFsdn_stripe_color#f4b738sdn_sidebar_width10sdn_fonticon_size25sdn_fonticon_color#FFFFFFsdn_fonticon_hovercolor#bbb6b6sdn_groupssdn_hide0sdn_date_startsdn_date_endsdn_modal_sizemediumsdn_infobox_enabled0sdn_infobox_contentsdn_infobox_fonticonf05asdn_infobox_fonticon_size15sdn_infobox_color#326196sdn_infobox_showtime0sdn_sidebar_hide0sdn_tab_color#f4b738sdn_tab_sizew60sdn_tab_sizeh50sdn_tab_radius30sdn_tab_positionbottomsdn_tab_window10sdn_configure_pages_type0sdn_configure_pages_listsdn_hide_guests0sdn_notfication_groups4sdn_notfication_enabled0sdn_icon_animation0sdn_bar_style0sdn_solid_colorsdn_image_backaddTab('sdn_configure'); $form->addHeader('sdn_configure'); @@ -218,21 +218,35 @@ $form->add( new \IPS\Helpers\Form\Select( 'sdn_icon_animation', \IPS\Settings::i $form->addTab('sdn_custom_bar' ); $form->addHeader( 'sdn_custom' ); $form->addSeparator(); -$form->add( new \IPS\Helpers\Form\YesNo( 'sdn_sidebar_hide', \IPS\Settings::i()->sdn_sidebar_hide, FALSE, array(), NULL, NULL, NULL, 'sdn_sidebar_hide') ); -$form->add( new \IPS\Helpers\Form\Number( 'sdn_sidebar_width', \IPS\Settings::i()->sdn_sidebar_width, FALSE, array(), NULL, NULL, NULL, 'sdn_sidebar_width') ); +$form->add( new \IPS\Helpers\Form\YesNo( 'sdn_sidebar_hide', \IPS\Settings::i()->sdn_sidebar_hide, FALSE, array( 'togglesOff' => array( 'sdn_bar_style', 'sdn_sidebar_width' ) ), NULL, NULL, NULL, 'sdn_sidebar_hide') ); + + $form->add( new \IPS\Helpers\Form\Radio( 'sdn_bar_style', \IPS\Settings::i()->sdn_bar_style, FALSE, array( + 'options' => array( + '0' => 'sdn_barstriped', + '1' => 'sdn_barsolid', + '2' => 'sdn_barimage' ), + 'toggles' => array( + '0' => array( 'sdn_stripe_color', 'sdn_background_color' ), + '1' => array( 'sdn_solid_color' ), + '2' => array( 'sdn_image_back' ), + ) + ), NULL, NULL, NULL, 'sdn_bar_style' ) ); + $form->add( new \IPS\Helpers\Form\Color( 'sdn_stripe_color', \IPS\Settings::i()->sdn_stripe_color, FALSE, array(), NULL, NULL, NULL, 'sdn_stripe_color') ); $form->add( new \IPS\Helpers\Form\Color( 'sdn_background_color', \IPS\Settings::i()->sdn_background_color, FALSE, array(), NULL, NULL, NULL, 'sdn_background_color') ); - +$form->add( new \IPS\Helpers\Form\Color( 'sdn_solid_color', \IPS\Settings::i()->sdn_solid_color, FALSE, array(), NULL, NULL, NULL, 'sdn_solid_color') ); +$form->add( new \IPS\Helpers\Form\Number( 'sdn_sidebar_width', \IPS\Settings::i()->sdn_sidebar_width, FALSE, array(), NULL, NULL, NULL, 'sdn_sidebar_width') ); if ( $values = $form->values() ) { - $form->saveAsSettings(); \IPS\Lang::saveCustom( 'core', 'sdn_lgdesc_value', $values['sdn_lgdesc'] ); unset( $values['sdn_lgdesc'] ); \IPS\Request::i()->setCookie( 'SideNoteMessage_dismissed', NULL ); \IPS\Db::i()->update( 'core_members', array( 'SideNoteMessage_dismissed' => 0 ) ); $form->saveAsSettings(); return TRUE; -}]]>PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSdTaWRlTm90ZUJhcic+PC9kaXY+CiAgICB7e2VuZGlmfX0KCQkJICAgIDxkaXYgaWQ9J2VsU05NRGlhbG9nJyBjbGFzcz0naXBzSGlkZSBpcHNQYWQnPgogICAge3tpZiBzZXR0aW5ncy5zZG5faW5mb2JveF9lbmFibGVkfX0KCSAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdpcHNNZXNzYWdlIFNpZGVOb3RlSW5mb0JveCc+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlNpZGVOb3RlSW5mb0JveEljb24iPntleHByZXNzaW9uPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9pbmZvYm94X2NvbnRlbnQifSA8L3NwYW4+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X3Nob3d0aW1lID09IDF9fQogICAgICAgICAgICAgICAgICAgIDxicj48c3Ryb25nPlN0YXJ0IFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9zdGFydCIgbm9yZWxhdGl2ZT0iZmFsc2UifSA8PiA8c3Ryb25nPkVuZCBUaW1lOjwvc3Ryb25nPiB7ZGF0ZXRpbWU9IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2RhdGVfZW5kIiBub3JlbGF0aXZlPSJmYWxzZSJ9CiAgICB7e2VuZGlmfX0KICAgICAgICAgICAgICAgPC9kaXY+CiAge3tlbmRpZn19CgkJCQkgICAgIDxwIGNsYXNzPSdpcHNUeXBlX3Jlc2V0IGlwc1NwYWNlcl9ib3R0b20gaXBzVHlwZV9ub3JtYWwnPgogICAgICAgICAgICAgICB7bGFuZz0ic2RuX2xnZGVzY192YWx1ZSJ9CgkJCQkgICAgPC9wPgoKCXt7aWYgc2V0dGluZ3Muc2RuX2hpZGV9fQoJe3tpZiAhc2V0dGluZ3Muc2RuX2hpZGVfZ3Vlc3RzfX0KCQkJCSAgIDxkaXYgaWQ9IlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIj4KCQkJCQkgIDxhIGNsYXNzPSJpcHNCdXR0b24gaXBzQnV0dG9uX3ZlcnlTbWFsbCBpcHNCdXR0b25faW1wb3J0YW50IGlwc0J1dHRvbl9mdWxsV2lkdGgiIGhyZWY9Int1cmw9ImFwcD1jb3JlJm1vZHVsZT1zeXN0ZW0mc2VjdGlvbj1wbHVnaW5zJmRvPVNpZGVOb3RlRGlzbWlzcyIgY3NyZj0iMSJ9IiBkYXRhLWlwc3Rvb2x0aXAgdGl0bGU9IntsYW5nPSdzZG5faGlkZV90b29sdGlwJ30iIGRhdGEtYWN0aW9uPSJkaXNtaXNzIj57bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9PC9hPgoJCQkJICAgPC9kaXY+Cgl7e2Vsc2VpZiBzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHMgYW5kICFcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+bWVtYmVyX2lkIH19CiAgICAgICAgICAgICAgICAgIDxwPiA8L3A+Cgl7e2Vsc2V9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZW5kaWZ9fQoJe3tlbmRpZn19CiAgICAgICAgICAgIDwvZGl2Pgp7e2VuZGlmfX0KCgp7e2lmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDEpfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtc3VjY2VzcyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X3llcyJ9PC9lbT4KCTwvZGl2Pgp7e2Vsc2VpZiAoJFVSTGVuYWJsZWQgPT0gMSkgJiYgKCRwYWdldmlzaWJsZSA9PSAwKX19Cgk8ZGl2IGlkPSJzZG5TaWRlTm90ZSIgY2xhc3M9InRvYXN0LXdhcm5pbmciIGhpZGRlbj4KCQl7bGFuZz0ic2RuX3BhZ2VfYWRkcmVzcyJ9IDxzdHJvbmc+eyRjdXJyZW50X3VybH08L3N0cm9uZz48L2JyPjxlbT57bGFuZz0ic2RuX3BhZ2VfZGlzcGxheV9ubyJ9PC9lbT4KCTwvZGl2Pgp7e2VuZGlmfX0=LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhciB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhciB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYmlnCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDcwcHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkBrZXlmcmFtZXMgcHVsc2UKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMzVweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpAa2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLlNpZGVOb3RlVGFiOmhvdmVyOmFmdGVyIHsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2hvdmVyY29sb3IifTsKfQoKCS5TaWRlTm90ZVRhYjpob3ZlciB7CgkJY3Vyc29yOiBoZWxwOwoJfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVUYWIgewoJCWxlZnQ6IDA7Cgl9CglodG1sW2Rpcj0icnRsIl0gLlNpZGVOb3RlVGFiIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZUluZm9Cb3ggewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKCWJhY2tncm91bmQ6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9jb2xvciJ9Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbiB7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9mb250aWNvbl9zaXplIn1weDsKfQoKLlNpZGVOb3RlSW5mb0JveEljb246YmVmb3JlIHsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAwLjNyZW07Cn0KCi8qIFBIT05FUyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKLlNpZGVOb3RlQmFyIHsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMDsKCXRvcDogMDsKCXdpZHRoOiA1cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX2JhY2tncm91bmRfY29sb3IifTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA1MDA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCgkuU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCAyMHB4IDIwcHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMTBweDsKCXdpZHRoOiAzNXB4OwoJaGVpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiAzMHB4OwoJei1pbmRleDogMTA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cgl9CgouU2lkZU5vdGVUYWI6YWZ0ZXIgewoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9mb250aWNvbl9ibGlua319CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fZm9udGljb25fc3Bpbn19CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBpbmZpbml0ZSBsaW5lYXI7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyOwoJCXt7ZW5kaWZ9fQogICB9Cn0KCi50b2FzdC10aXRsZXtmb250LXdlaWdodDo3MDB9LnRvYXN0LW1lc3NhZ2V7LW1zLXdvcmQtd3JhcDpicmVhay13b3JkO3dvcmQtd3JhcDpicmVhay13b3JkfS50b2FzdC1tZXNzYWdlIGEsLnRvYXN0LW1lc3NhZ2UgbGFiZWx7Y29sb3I6I0ZGRn0udG9hc3QtbWVzc2FnZSBhOmhvdmVye2NvbG9yOiNDQ0M7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnRvYXN0LWNsb3NlLWJ1dHRvbntwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDotLjNlbTt0b3A6LS4zZW07ZmxvYXQ6cmlnaHQ7Zm9udC1zaXplOjIwcHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiNGRkY7LXdlYmtpdC10ZXh0LXNoYWRvdzowIDFweCAwICNmZmY7dGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApO2xpbmUtaGVpZ2h0OjF9LnRvYXN0LWNsb3NlLWJ1dHRvbjpmb2N1cywudG9hc3QtY2xvc2UtYnV0dG9uOmhvdmVye2NvbG9yOiMwMDA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXI7b3BhY2l0eTouNDstbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTQwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT00MCl9LnJ0bCAudG9hc3QtY2xvc2UtYnV0dG9ue2xlZnQ6LS4zZW07ZmxvYXQ6bGVmdDtyaWdodDouM2VtfWJ1dHRvbi50b2FzdC1jbG9zZS1idXR0b257cGFkZGluZzowO2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6MCAwO2JvcmRlcjowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lfS50b2FzdC10b3AtY2VudGVye3RvcDowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtYm90dG9tLWNlbnRlcntib3R0b206MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LXRvcC1mdWxsLXdpZHRoe3RvcDowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtYm90dG9tLWZ1bGwtd2lkdGh7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtbGVmdHt0b3A6MTJweDtsZWZ0OjEycHh9LnRvYXN0LXRvcC1yaWdodHt0b3A6MTJweDtyaWdodDoxMnB4fS50b2FzdC1ib3R0b20tcmlnaHR7cmlnaHQ6MTJweDtib3R0b206MTJweH0udG9hc3QtYm90dG9tLWxlZnR7Ym90dG9tOjEycHg7bGVmdDoxMnB4fSN0b2FzdC1jb250YWluZXJ7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDo5OTk5OTk7cG9pbnRlci1ldmVudHM6bm9uZX0jdG9hc3QtY29udGFpbmVyICp7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fSN0b2FzdC1jb250YWluZXI+ZGl2e3Bvc2l0aW9uOnJlbGF0aXZlO3BvaW50ZXItZXZlbnRzOmF1dG87b3ZlcmZsb3c6aGlkZGVuO21hcmdpbjowIDAgNnB4O3BhZGRpbmc6MTVweCAxNXB4IDE1cHggNTBweDt3aWR0aDozMDBweDstbW96LWJvcmRlci1yYWRpdXM6M3B4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7Ym9yZGVyLXJhZGl1czozcHg7YmFja2dyb3VuZC1wb3NpdGlvbjoxNXB4IGNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7LW1vei1ib3gtc2hhZG93OjAgMCAxMnB4ICM5OTk7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAxMnB4ICM5OTk7Ym94LXNoYWRvdzowIDAgMTJweCAjOTk5O2NvbG9yOiNGRkY7b3BhY2l0eTouODstbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTgwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT04MCl9I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse2RpcmVjdGlvbjpydGw7cGFkZGluZzoxNXB4IDUwcHggMTVweCAxNXB4O2JhY2tncm91bmQtcG9zaXRpb246cmlnaHQgMTVweCBjZW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj5kaXY6aG92ZXJ7LW1vei1ib3gtc2hhZG93OjAgMCAxMnB4ICMwMDA7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAxMnB4ICMwMDA7Ym94LXNoYWRvdzowIDAgMTJweCAjMDAwO29wYWNpdHk6MTstbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTtjdXJzb3I6cG9pbnRlcn0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1pbmZve2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFHd1NVUkJWRWhMdFphOVNnTkJFTWM5c1V4eFJjb1VLU3pTV0loWHBGTWhoWVdGaGFCZzR5UFlpV0NYWnhCTEVSc0xSUzNFUWtFZndDS2RqV0pBd1NLQ2dvS0NjdWR2NE81WUxydDdFemdYaGlVMy80K2IyY2ttd1ZqSlNwS2tRNndBaTRnd2hUK3ozd1JCY0V6MHlqU3NlVVRyY1J5ZnNIc1htRDBBbWJIT0M5SWk4VkltbnVYQlBnbEhwUTV3d1NWTTdzTm5URzdaYTRKd0RkQ2p4eUFpSDNueUEybXRhVEp1ZmlEWjVkQ2FxbEl0SUxoMU5IYXRmTjVza3ZqeDlaMzhtNjlDZ3p1WG1aZ1ZyUElHRTc2M0p4OXFLc1JveldZdzZ4T0hkRVIrbm4yS2tPK0JiK1VWNUNCTjZXQzZRdEJnYlJWb3pyYWhBYm1tNkh0VXNndFBDMTl0RmR4WFpZQk9ma2JtRkoxVmFIQTFWQUhqZDBwcDcwb1RaenZSK0VWcngyWWdmZHNxNmV1NTVCSFlSOGhsY2tpK24ra0VSVUZHOEJyQTBCd2plQXYyTThXTFFCdGN5K1NENmZOc21uQjNBbEJMcmdUdFZXMWMyUU40YlZXTEFUYUlTNjBKMkR1NXkxVGlKZ2pTQnZGVlpnVG13Q1UrZEFaRm9QeEdFRXM4bnlIQzlCd2UyR3ZFSnYyV1haYjB2amR5RlQ0Q3hrM2Uva0lxbE9Hb1ZMd3dQZXZwWUhUKzAwVCtoV3dYRGY0QUpBT1VxV2NEaGJ3QUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBSE9TVVJCVkVoTHJaYS9TZ05CRU1aemgwV0tDQ2xTQ0thSVlPRUQrQUFLZVFRTEc4SFd6dExDSW1CcllhZGdJZFkrZ0lLTllrQkZTd3U3Q0FvcUNna2tvR0JJL0UyOFBkYkxabWVETGd6WnpjeDgzL3paMlNTWEMxajlmcitJMUhxOTNnMnl4SDRpd00xdmtvQldBZHhDbXB6VHhma04yUmN5Wk5hSEZJa1NvMTArOGtneGtYSVVSVjVIR3hUbUZ1Yzc1QjJSZlFrcHhIRzhhQWdhQUZhMHRBSHFZRmZRN0l3ZTJ5aE9EazgrSjRDN3lBb1JUV0kzdy80a2xHUmdSNGxPN1JwbjkrZ3ZNeVdwK3V4Rmg4K0grQVJsZ04xbkp1SnVRQVl2TmtFbndHRmNrMThFcjRxM2VnRWMvb08rbWhMZEtnUnloZE5GaWFjQzBybE9DYmhOVno0SDlGbkFZZ0RCdlUzUUlpb1psSkZMSnRzb0hZUkRmaVpvVXlJeHFDdFJwVmxBTnEwRVU0ZEFwanJ0Z2V6UEZhZDVTMTlXZ2prYzBoTlZudUY0SGpWQTZDN1FyU0lieWxCK29aZTNhSGdCc3FsTnFLWUg0OGpYeUpLTXVBYml5Vko4S3phQjNlUmMwcGc5VndRNG5pRnJ5STY4cWlPaTNBYmp3ZHNmbkF0azBiQ2pUTEpLcjZtckQ5ZzhpcS9TL0I4MWhndU9NbFFUblZ5RzQwd0Fjam5tZ3NDTkVTRHJqbWU3d2ZmdFA0UDdTUDROM0NKWmR2em9OeUdxMmMvSFdPWEpHc3ZWZytSQS9rMk1DL3dONkkyWUEyUHQ4R2tBQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXI+LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQURzU1VSQlZFaExZMkFZQmZRTWdmLy8vM1A4Ky9ldkFJZ3ZBL0ZzSUYrQmF2WUREV01CR3JvYVNNTUJpRThWQzdBWkRySUZhTUZuaWkzQVpUalVnc1VVV1VEQThPZEFINmlRYlFFaHc0SHlHc1BFY0tCWEJJQzRBUmhleDRHNEJzam13ZVUxc29JRmFHZy9XdG9GWlJJWmRFdklNaHhrQ0NqWElWc0FUVjZnRkdBQ3M0UnN3MEVHZ0lJSDNRSllKZ0hTQVJRWkRyV0FCK2phd3pncytRMlVPNDlEN2puUlNSR29FRlJJTGNkbUVNV0dJMGNtMEpKMlFwWUExUkR2Y216SkVXaEFCaEQvcHFyTDBTMENXdUFCS2duUmtpOWxMc2VTN2cyQWxxd0hXUVNLSDRvS0xySUxwUkdoRVFDdzJMaVJVSWE0bHdBQUFBQkpSVTVFcmtKZ2dnPT0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFHWVNVUkJWRWhMNVpTdlRzTlFGTWJYWkdJQ01ZR1ltSmhBUUlKQUlDWVFQQUFDaVNEQjhBaUlDUVFKVDRDcVFFd2dKdllBU0FRQ2laaVltSmhBSUJBVENBUkp5KzlyVHNsZGQ4c0t1MU0wK2RMYjA1N3Y2L2xicS8yckswbVMvVFJOajljV05BS1BZSUpJSTdnSXhDY1E1MWN2cUlEK0dJRVg4QVNHNEIxYks1Z0laRmVRZm9KZEVYT2ZnWDRRQVFnN2tIMkE2NXlRODdseXhiMjdzZ2drQXpBdUZoYmJnMUsya2dDa0IxYlZ3eUlSOW0yTDdQUlBJaERVSVhnR3R5S3c1NzV5ejNsVE5zNlg0SlhualYrTEtNL20zTXlkblRidE9LSWp0ejZWaENCcTR2U20zbmNkckQybGswVmdVWFNWS2pWREpYSnppalcxUlFkc1U3Rjc3SGU4dTY4a29OWlR6OE96NXlHYTZKM0gzbFoweFlnWEJLMlF5bWxXV0ErUlduWWhza0xCdjJ2bUUraEJNQ3RiQTdLWDVkcld5UlQvMkpzcVoySXZmQjlZNGJXRE5NRmJKUkZtQzlFNzRTb1MwQ3F1bHdqa0MwKzVicGNWMUNaOE5NZWo0cGp5MFUrZG9EUXNHeW8xaHpWSnR0SWpoUTdHbkJ0UkZOMVVhclVsSDhGM3hpY3QrSFkwN3JFem9VR1BsV2NqUkZScjQvZ0NoWmdjM1pMMmQ4b0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lci50b2FzdC1ib3R0b20tY2VudGVyPmRpdiwjdG9hc3QtY29udGFpbmVyLnRvYXN0LXRvcC1jZW50ZXI+ZGl2e3dpZHRoOjMwMHB4O21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG99I3RvYXN0LWNvbnRhaW5lci50b2FzdC1ib3R0b20tZnVsbC13aWR0aD5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtZnVsbC13aWR0aD5kaXZ7d2lkdGg6OTYlO21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG99LnRvYXN0e2JhY2tncm91bmQtY29sb3I6IzAzMDMwM30udG9hc3Qtc3VjY2Vzc3tiYWNrZ3JvdW5kLWNvbG9yOiM1MUEzNTF9LnRvYXN0LWVycm9ye2JhY2tncm91bmQtY29sb3I6I0JEMzYyRn0udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWNvbG9yOiMyRjk2QjR9LnRvYXN0LXdhcm5pbmd7YmFja2dyb3VuZC1jb2xvcjojRjg5NDA2fS50b2FzdC1wcm9ncmVzc3twb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7Ym90dG9tOjA7aGVpZ2h0OjRweDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7b3BhY2l0eTouNDstbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTQwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT00MCl9QG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDoyNDBweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzo4cHggOHB4IDhweCA1MHB4O3dpZHRoOjExZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6OHB4IDUwcHggOHB4IDhweH0jdG9hc3QtY29udGFpbmVyIC50b2FzdC1jbG9zZS1idXR0b257cmlnaHQ6LS4yZW07dG9wOi0uMmVtfSN0b2FzdC1jb250YWluZXIgLnJ0bCAudG9hc3QtY2xvc2UtYnV0dG9ue2xlZnQ6LS4yZW07cmlnaHQ6LjJlbX19QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDoyNDFweCkgYW5kIChtYXgtd2lkdGg6NDgwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxOGVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6NDgxcHgpIGFuZCAobWF4LXdpZHRoOjc2OHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MjVlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzoxNXB4IDUwcHggMTVweCAxNXB4fX0KCi50b2FzdC1zdWNjZXNzIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLnRvYXN0LXdhcm5pbmcgewoJZm9udC1zaXplOiAxNnB4Owp9OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7CgokKGZ1bmN0aW9uICgpIHsKdG9hc3RyLm9wdGlvbnMgPSB7CiAgImNsb3NlQnV0dG9uIjogZmFsc2UsCiAgImRlYnVnIjogZmFsc2UsCiAgIm5ld2VzdE9uVG9wIjogZmFsc2UsCiAgInByb2dyZXNzQmFyIjogdHJ1ZSwKICAicG9zaXRpb25DbGFzcyI6ICJ0b2FzdC1ib3R0b20tZnVsbC13aWR0aCIsCiAgInByZXZlbnREdXBsaWNhdGVzIjogZmFsc2UsCiAgIm9uY2xpY2siOiBudWxsLAogICJzaG93RHVyYXRpb24iOiAiMzAwIiwKICAiaGlkZUR1cmF0aW9uIjogIjEwMDAiLAogICJ0aW1lT3V0IjogIjYwMDAiLAogICJleHRlbmRlZFRpbWVPdXQiOiAiMTAwMCIsCiAgInNob3dFYXNpbmciOiAic3dpbmciLAogICJoaWRlRWFzaW5nIjogImxpbmVhciIsCiAgInNob3dNZXRob2QiOiAiZmFkZUluIiwKICAiaGlkZU1ldGhvZCI6ICJmYWRlT3V0Igp9OwoKbGV0IHZpc2libGVNZXNzYWdlID0gJCgiLnRvYXN0LXN1Y2Nlc3MiKS5odG1sKCk7CmlmICh2aXNpYmxlTWVzc2FnZSAmJiB2aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgdG9hc3RyLnN1Y2Nlc3ModmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICBjb250YWluZXJJZDogInRvYXN0LWNvbnRhaW5lciIsCiAgfSk7Cn0KCmxldCBpbnZpc2libGVNZXNzYWdlID0gJCgiLnRvYXN0LXdhcm5pbmciKS5odG1sKCk7CmlmIChpbnZpc2libGVNZXNzYWdlICYmIGludmlzaWJsZU1lc3NhZ2UubGVuZ3RoID4gMCkgewogIHRvYXN0ci53YXJuaW5nKGludmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICBjb250YWluZXJJZDogInRvYXN0LWNvbnRhaW5lciIKICB9KTsKfQp9KTsoalF1ZXJ5LCBfKTs=SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypePage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsCurrent page addressSideNote will display on this pageSideNote will not display on this pageSideNote ContentSideNote CustomizeSideNote InfoBoxSideNote BarSideNote TabMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingStart DateEnd DateFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Enable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorShow the Start and End TimesClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabTab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSd7e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMH19U2lkZU5vdGVCYXJTdHJpcGV7e2VuZGlmfX17e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMX19U2lkZU5vdGVCYXJTb2xpZHt7ZW5kaWZ9fSc+PC9kaXY+CiAgICB7e2VuZGlmfX0KCQkJICAgIDxkaXYgaWQ9J2VsU05NRGlhbG9nJyBjbGFzcz0naXBzSGlkZSBpcHNQYWQnPgogICAge3tpZiBzZXR0aW5ncy5zZG5faW5mb2JveF9lbmFibGVkfX0KCSAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdpcHNNZXNzYWdlIFNpZGVOb3RlSW5mb0JveCc+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlNpZGVOb3RlSW5mb0JveEljb24iPntleHByZXNzaW9uPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9pbmZvYm94X2NvbnRlbnQifSA8L3NwYW4+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X3Nob3d0aW1lID09IDF9fQogICAgICAgICAgICAgICAgICAgIDxicj48c3Ryb25nPlN0YXJ0IFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9zdGFydCIgbm9yZWxhdGl2ZT0iZmFsc2UifSA8PiA8c3Ryb25nPkVuZCBUaW1lOjwvc3Ryb25nPiB7ZGF0ZXRpbWU9IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2RhdGVfZW5kIiBub3JlbGF0aXZlPSJmYWxzZSJ9CiAgICB7e2VuZGlmfX0KICAgICAgICAgICAgICAgPC9kaXY+CiAge3tlbmRpZn19CgkJCQkgICAgIDxwIGNsYXNzPSdpcHNUeXBlX3Jlc2V0IGlwc1NwYWNlcl9ib3R0b20gaXBzVHlwZV9ub3JtYWwnPgogICAgICAgICAgICAgICB7bGFuZz0ic2RuX2xnZGVzY192YWx1ZSJ9CgkJCQkgICAgPC9wPgoKCXt7aWYgc2V0dGluZ3Muc2RuX2hpZGV9fQoJe3tpZiAhc2V0dGluZ3Muc2RuX2hpZGVfZ3Vlc3RzfX0KCQkJCSAgIDxkaXYgaWQ9IlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIj4KCQkJCQkgIDxhIGNsYXNzPSJpcHNCdXR0b24gaXBzQnV0dG9uX3ZlcnlTbWFsbCBpcHNCdXR0b25faW1wb3J0YW50IGlwc0J1dHRvbl9mdWxsV2lkdGgiIGhyZWY9Int1cmw9ImFwcD1jb3JlJm1vZHVsZT1zeXN0ZW0mc2VjdGlvbj1wbHVnaW5zJmRvPVNpZGVOb3RlRGlzbWlzcyIgY3NyZj0iMSJ9IiBkYXRhLWlwc3Rvb2x0aXAgdGl0bGU9IntsYW5nPSdzZG5faGlkZV90b29sdGlwJ30iIGRhdGEtYWN0aW9uPSJkaXNtaXNzIj57bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9PC9hPgoJCQkJICAgPC9kaXY+Cgl7e2Vsc2VpZiBzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHMgYW5kICFcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+bWVtYmVyX2lkIH19CiAgICAgICAgICAgICAgICAgIDxwPiA8L3A+Cgl7e2Vsc2V9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZW5kaWZ9fQoJe3tlbmRpZn19CiAgICAgICAgICAgIDwvZGl2Pgp7e2VuZGlmfX0KCgp7e2lmICgkZW5hYmxlZCA9PSAxKSAmJiAoJFVSTGVuYWJsZWQgPT0gMSkgJiYgKCRwYWdldmlzaWJsZSA9PSAxKX19Cgk8ZGl2IGlkPSJzZG5TaWRlTm90ZSIgY2xhc3M9InRvYXN0LXN1Y2Nlc3MiIGhpZGRlbj4KCQl7bGFuZz0ic2RuX3BhZ2VfYWRkcmVzcyJ9IDxzdHJvbmc+eyRjdXJyZW50X3VybH08L3N0cm9uZz48L2JyPjxlbT57bGFuZz0ic2RuX3BhZ2VfZGlzcGxheV95ZXMifTwvZW0+Cgk8L2Rpdj4Ke3tlbHNlaWYgKCRlbmFibGVkID09IDEpICYmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDApfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtd2FybmluZyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X25vIn08L2VtPgoJPC9kaXY+Cnt7ZW5kaWZ9fQ==LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhclN0cmlwZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyU3RyaXBlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhclN0cmlwZSB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJTb2xpZCB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fc29saWRfY29sb3IifTsKCWJhY2tncm91bmQtc2l6ZTogODBweCA4MHB4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wOwoJei1pbmRleDogOTk5OTsKfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYmlnCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDcwcHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkBrZXlmcmFtZXMgcHVsc2UKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMzVweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpAa2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLlNpZGVOb3RlVGFiOmhvdmVyOmFmdGVyIHsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2hvdmVyY29sb3IifTsKfQoKCS5TaWRlTm90ZVRhYjpob3ZlciB7CgkJY3Vyc29yOiBoZWxwOwoJfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVUYWIgewoJCWxlZnQ6IDA7Cgl9CglodG1sW2Rpcj0icnRsIl0gLlNpZGVOb3RlVGFiIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZUluZm9Cb3ggewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKCWJhY2tncm91bmQ6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9jb2xvciJ9Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbiB7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9mb250aWNvbl9zaXplIn1weDsKfQoKLlNpZGVOb3RlSW5mb0JveEljb246YmVmb3JlIHsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAwLjNyZW07Cn0KCi8qIFBIT05FUyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKLlNpZGVOb3RlQmFyU3RyaXBlIHsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMDsKCXRvcDogMDsKCXdpZHRoOiA1cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX2JhY2tncm91bmRfY29sb3IifTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA1MDA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCgkuU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCAyMHB4IDIwcHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMTBweDsKCXdpZHRoOiAzNXB4OwoJaGVpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiAzMHB4OwoJei1pbmRleDogMTA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cgl9CgouU2lkZU5vdGVUYWI6YWZ0ZXIgewoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9mb250aWNvbl9ibGlua319CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fZm9udGljb25fc3Bpbn19CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBpbmZpbml0ZSBsaW5lYXI7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyOwoJCXt7ZW5kaWZ9fQogICB9Cn0KCi8qIFRvYXN0ciAqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6NzAwfS50b2FzdC1tZXNzYWdley1tcy13b3JkLXdyYXA6YnJlYWstd29yZDt3b3JkLXdyYXA6YnJlYWstd29yZH0udG9hc3QtbWVzc2FnZSBhLC50b2FzdC1tZXNzYWdlIGxhYmVse2NvbG9yOiNGRkZ9LnRvYXN0LW1lc3NhZ2UgYTpob3Zlcntjb2xvcjojQ0NDO3RleHQtZGVjb3JhdGlvbjpub25lfS50b2FzdC1jbG9zZS1idXR0b257cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6LS4zZW07dG9wOi0uM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojRkZGOy13ZWJraXQtdGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtsaW5lLWhlaWdodDoxfS50b2FzdC1jbG9zZS1idXR0b246Zm9jdXMsLnRvYXN0LWNsb3NlLWJ1dHRvbjpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfS5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uM2VtO2Zsb2F0OmxlZnQ7cmlnaHQ6LjNlbX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9hc3QtdG9wLWNlbnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1jZW50ZXJ7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtZnVsbC13aWR0aHt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoe2JvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtdG9wLWxlZnR7dG9wOjEycHg7bGVmdDoxMnB4fS50b2FzdC10b3AtcmlnaHR7dG9wOjEycHg7cmlnaHQ6MTJweH0udG9hc3QtYm90dG9tLXJpZ2h0e3JpZ2h0OjEycHg7Ym90dG9tOjEycHh9LnRvYXN0LWJvdHRvbS1sZWZ0e2JvdHRvbToxMnB4O2xlZnQ6MTJweH0jdG9hc3QtY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5OTk5O3BvaW50ZXItZXZlbnRzOm5vbmV9I3RvYXN0LWNvbnRhaW5lciAqey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdG9hc3QtY29udGFpbmVyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtwb2ludGVyLWV2ZW50czphdXRvO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjojRkZGO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtkaXJlY3Rpb246cnRsO3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDE1cHggY2VudGVyfSN0b2FzdC1jb250YWluZXI+ZGl2OmhvdmVyey1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjMDAwOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjMDAwO2JveC1zaGFkb3c6MCAwIDEycHggIzAwMDtvcGFjaXR5OjE7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7Y3Vyc29yOnBvaW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtZXJyb3J7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtd2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyPmRpdnt3aWR0aDozMDBweDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2e3dpZHRoOjk2JTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFBMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNCRDM2MkZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMkY5NkI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I0Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxMWVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6MjQxcHgpIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjhweCA4cHggOHB4IDUwcHg7d2lkdGg6MThlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzo4cHggNTBweCA4cHggOHB4fSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotLjJlbTt0b3A6LS4yZW19I3RvYXN0LWNvbnRhaW5lciAucnRsIC50b2FzdC1jbG9zZS1idXR0b257bGVmdDotLjJlbTtyaWdodDouMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweH19CgoudG9hc3Qtc3VjY2VzcyB7Cglmb250LXNpemU6IDE2cHg7Cn0KCi50b2FzdC13YXJuaW5nIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLyogVG9hc3RyIE92ZXJpZGVzICovCgoudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGggewoJYm90dG9tOjA7CiAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICB3aWR0aDogOTAlOwp9CgoudG9hc3QtdG9wLWZ1bGwtd2lkdGggewoJdG9wOjA7CiAgICBtYXJnaW46IGF1dG87CiAgICB3aWR0aDogOTAlOwp9CgojdG9hc3QtY29udGFpbmVyLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoPmRpdiwjdG9hc3QtY29udGFpbmVyLnRvYXN0LXRvcC1mdWxsLXdpZHRoPmRpdiB7CiAgIHdpZHRoOiA5NiU7CiAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0=OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7CgoJJChmdW5jdGlvbiAoKSB7CgkJdG9hc3RyLm9wdGlvbnMgPSB7CgkJCQkiY2xvc2VCdXR0b24iOiBmYWxzZSwKCQkJCSJkZWJ1ZyI6IGZhbHNlLAoJCQkJIm5ld2VzdE9uVG9wIjogZmFsc2UsCgkJCQkicHJvZ3Jlc3NCYXIiOiB0cnVlLAoJCQkJInBvc2l0aW9uQ2xhc3MiOiAidG9hc3QtYm90dG9tLWZ1bGwtd2lkdGgiLAoJCQkJInByZXZlbnREdXBsaWNhdGVzIjogZmFsc2UsCgkJCQkib25jbGljayI6IG51bGwsCgkJCQkic2hvd0R1cmF0aW9uIjogIjMwMCIsCgkJCQkiaGlkZUR1cmF0aW9uIjogIjEwMDAiLAoJCQkJInRpbWVPdXQiOiAiNjAwMCIsCgkJCQkiZXh0ZW5kZWRUaW1lT3V0IjogIjEwMDAiLAoJCQkJInNob3dFYXNpbmciOiAic3dpbmciLAoJCQkJImhpZGVFYXNpbmciOiAibGluZWFyIiwKCQkJCSJzaG93TWV0aG9kIjogImZhZGVJbiIsCgkJCQkiaGlkZU1ldGhvZCI6ICJmYWRlT3V0IgoJCX07CgoJCWxldCB2aXNpYmxlTWVzc2FnZSA9ICQoIi50b2FzdC1zdWNjZXNzIikuaHRtbCgpOwoJCQkJaWYgKHZpc2libGVNZXNzYWdlICYmIHZpc2libGVNZXNzYWdlLmxlbmd0aCA+IDApIHsKICAJCQkJdG9hc3RyLnN1Y2Nlc3ModmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICAJCQkJY29udGFpbmVySWQ6ICJ0b2FzdC1jb250YWluZXIiLAogCQkgfSk7CiAgfQoKCQlsZXQgaW52aXNpYmxlTWVzc2FnZSA9ICQoIi50b2FzdC13YXJuaW5nIikuaHRtbCgpOwoJCQkJaWYgKGludmlzaWJsZU1lc3NhZ2UgJiYgaW52aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgCQkJCXRvYXN0ci53YXJuaW5nKGludmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICAJCQkJY29udGFpbmVySWQ6ICJ0b2FzdC1jb250YWluZXIiCgkJCX0pOwogIH0KfSk7KGpRdWVyeSwgXyk7SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypePage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsCurrent page addressSideNote will display on this pageSideNote will not display on this pageSideNote ContentMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentStart DateEnd DateSideNote InfoBoxEnable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Descriptive text, keep it short for best displayingShow the Start and End TimesSideNote CustomizeSideNote BarSideNote TabAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Solid ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabSide Bar StyleStripedSolidImageImageTab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
diff --git a/src/IPS4.4/SideNote.xml b/src/IPS4.4/SideNote.xml index 8ab23f7..9e14a82 100644 --- a/src/IPS4.4/SideNote.xml +++ b/src/IPS4.4/SideNote.xml @@ -1,5 +1,5 @@ -sdn_enabled0sdn_titlesdn_lgdescsdn_stdescsdn_fonticonf071sdn_background_color#FFFsdn_stripe_color#f4b738sdn_sidebar_width10sdn_fonticon_size25sdn_fonticon_color#FFFFFFsdn_fonticon_hovercolor#bbb6b6sdn_groupssdn_hide0sdn_date_startsdn_date_endsdn_modal_sizemediumsdn_infobox_enabled0sdn_infobox_contentsdn_infobox_fonticonf05asdn_infobox_fonticon_size15sdn_infobox_color#326196sdn_infobox_showtime0sdn_sidebar_hide0sdn_tab_color#f4b738sdn_tab_sizew60sdn_tab_sizeh50sdn_tab_radius30sdn_tab_positionbottomsdn_tab_window10sdn_configure_pages_type0sdn_configure_pages_listsdn_hide_guests0sdn_notfication_groups4sdn_notfication_enabled0sdn_icon_animation0sdn_enabled0sdn_titlesdn_lgdescsdn_stdescsdn_fonticonf071sdn_background_color#FFFsdn_stripe_color#f4b738sdn_sidebar_width10sdn_fonticon_size25sdn_fonticon_color#FFFFFFsdn_fonticon_hovercolor#bbb6b6sdn_groupssdn_hide0sdn_date_startsdn_date_endsdn_modal_sizemediumsdn_infobox_enabled0sdn_infobox_contentsdn_infobox_fonticonf05asdn_infobox_fonticon_size15sdn_infobox_color#326196sdn_infobox_showtime0sdn_sidebar_hide0sdn_tab_color#f4b738sdn_tab_sizew60sdn_tab_sizeh50sdn_tab_radius30sdn_tab_positionbottomsdn_tab_window10sdn_configure_pages_type0sdn_configure_pages_listsdn_hide_guests0sdn_notfication_groups4sdn_notfication_enabled0sdn_icon_animation0sdn_bar_style0sdn_solid_colorsdn_image_backaddTab('sdn_configure'); $form->addHeader('sdn_configure'); @@ -218,21 +218,35 @@ $form->add( new \IPS\Helpers\Form\Select( 'sdn_icon_animation', \IPS\Settings::i $form->addTab('sdn_custom_bar' ); $form->addHeader( 'sdn_custom' ); $form->addSeparator(); -$form->add( new \IPS\Helpers\Form\YesNo( 'sdn_sidebar_hide', \IPS\Settings::i()->sdn_sidebar_hide, FALSE, array(), NULL, NULL, NULL, 'sdn_sidebar_hide') ); -$form->add( new \IPS\Helpers\Form\Number( 'sdn_sidebar_width', \IPS\Settings::i()->sdn_sidebar_width, FALSE, array(), NULL, NULL, NULL, 'sdn_sidebar_width') ); +$form->add( new \IPS\Helpers\Form\YesNo( 'sdn_sidebar_hide', \IPS\Settings::i()->sdn_sidebar_hide, FALSE, array( 'togglesOff' => array( 'sdn_bar_style', 'sdn_sidebar_width' ) ), NULL, NULL, NULL, 'sdn_sidebar_hide') ); + + $form->add( new \IPS\Helpers\Form\Radio( 'sdn_bar_style', \IPS\Settings::i()->sdn_bar_style, FALSE, array( + 'options' => array( + '0' => 'sdn_barstriped', + '1' => 'sdn_barsolid', + '2' => 'sdn_barimage' ), + 'toggles' => array( + '0' => array( 'sdn_stripe_color', 'sdn_background_color' ), + '1' => array( 'sdn_solid_color' ), + '2' => array( 'sdn_image_back' ), + ) + ), NULL, NULL, NULL, 'sdn_bar_style' ) ); + $form->add( new \IPS\Helpers\Form\Color( 'sdn_stripe_color', \IPS\Settings::i()->sdn_stripe_color, FALSE, array(), NULL, NULL, NULL, 'sdn_stripe_color') ); $form->add( new \IPS\Helpers\Form\Color( 'sdn_background_color', \IPS\Settings::i()->sdn_background_color, FALSE, array(), NULL, NULL, NULL, 'sdn_background_color') ); - +$form->add( new \IPS\Helpers\Form\Color( 'sdn_solid_color', \IPS\Settings::i()->sdn_solid_color, FALSE, array(), NULL, NULL, NULL, 'sdn_solid_color') ); +$form->add( new \IPS\Helpers\Form\Number( 'sdn_sidebar_width', \IPS\Settings::i()->sdn_sidebar_width, FALSE, array(), NULL, NULL, NULL, 'sdn_sidebar_width') ); if ( $values = $form->values() ) { - $form->saveAsSettings(); \IPS\Lang::saveCustom( 'core', 'sdn_lgdesc_value', $values['sdn_lgdesc'] ); unset( $values['sdn_lgdesc'] ); \IPS\Request::i()->setCookie( 'SideNoteMessage_dismissed', NULL ); \IPS\Db::i()->update( 'core_members', array( 'SideNoteMessage_dismissed' => 0 ) ); $form->saveAsSettings(); return TRUE; -}]]>PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSdTaWRlTm90ZUJhcic+PC9kaXY+CiAgICB7e2VuZGlmfX0KCQkJICAgIDxkaXYgaWQ9J2VsU05NRGlhbG9nJyBjbGFzcz0naXBzSGlkZSBpcHNQYWQnPgogICAge3tpZiBzZXR0aW5ncy5zZG5faW5mb2JveF9lbmFibGVkfX0KCSAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdpcHNNZXNzYWdlIFNpZGVOb3RlSW5mb0JveCc+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlNpZGVOb3RlSW5mb0JveEljb24iPntleHByZXNzaW9uPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9pbmZvYm94X2NvbnRlbnQifSA8L3NwYW4+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X3Nob3d0aW1lID09IDF9fQogICAgICAgICAgICAgICAgICAgIDxicj48c3Ryb25nPlN0YXJ0IFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9zdGFydCIgbm9yZWxhdGl2ZT0iZmFsc2UifSA8PiA8c3Ryb25nPkVuZCBUaW1lOjwvc3Ryb25nPiB7ZGF0ZXRpbWU9IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2RhdGVfZW5kIiBub3JlbGF0aXZlPSJmYWxzZSJ9CiAgICB7e2VuZGlmfX0KICAgICAgICAgICAgICAgPC9kaXY+CiAge3tlbmRpZn19CgkJCQkgICAgIDxwIGNsYXNzPSdpcHNUeXBlX3Jlc2V0IGlwc1NwYWNlcl9ib3R0b20gaXBzVHlwZV9ub3JtYWwnPgogICAgICAgICAgICAgICB7bGFuZz0ic2RuX2xnZGVzY192YWx1ZSJ9CgkJCQkgICAgPC9wPgoKCXt7aWYgc2V0dGluZ3Muc2RuX2hpZGV9fQoJe3tpZiAhc2V0dGluZ3Muc2RuX2hpZGVfZ3Vlc3RzfX0KCQkJCSAgIDxkaXYgaWQ9IlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIj4KCQkJCQkgIDxhIGNsYXNzPSJpcHNCdXR0b24gaXBzQnV0dG9uX3ZlcnlTbWFsbCBpcHNCdXR0b25faW1wb3J0YW50IGlwc0J1dHRvbl9mdWxsV2lkdGgiIGhyZWY9Int1cmw9ImFwcD1jb3JlJm1vZHVsZT1zeXN0ZW0mc2VjdGlvbj1wbHVnaW5zJmRvPVNpZGVOb3RlRGlzbWlzcyIgY3NyZj0iMSJ9IiBkYXRhLWlwc3Rvb2x0aXAgdGl0bGU9IntsYW5nPSdzZG5faGlkZV90b29sdGlwJ30iIGRhdGEtYWN0aW9uPSJkaXNtaXNzIj57bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9PC9hPgoJCQkJICAgPC9kaXY+Cgl7e2Vsc2VpZiBzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHMgYW5kICFcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+bWVtYmVyX2lkIH19CiAgICAgICAgICAgICAgICAgIDxwPiA8L3A+Cgl7e2Vsc2V9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZW5kaWZ9fQoJe3tlbmRpZn19CiAgICAgICAgICAgIDwvZGl2Pgp7e2VuZGlmfX0KCgp7e2lmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDEpfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtc3VjY2VzcyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X3llcyJ9PC9lbT4KCTwvZGl2Pgp7e2Vsc2VpZiAoJFVSTGVuYWJsZWQgPT0gMSkgJiYgKCRwYWdldmlzaWJsZSA9PSAwKX19Cgk8ZGl2IGlkPSJzZG5TaWRlTm90ZSIgY2xhc3M9InRvYXN0LXdhcm5pbmciIGhpZGRlbj4KCQl7bGFuZz0ic2RuX3BhZ2VfYWRkcmVzcyJ9IDxzdHJvbmc+eyRjdXJyZW50X3VybH08L3N0cm9uZz48L2JyPjxlbT57bGFuZz0ic2RuX3BhZ2VfZGlzcGxheV9ubyJ9PC9lbT4KCTwvZGl2Pgp7e2VuZGlmfX0=LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhciB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhciB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYmlnCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDcwcHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkBrZXlmcmFtZXMgcHVsc2UKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMzVweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpAa2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLlNpZGVOb3RlVGFiOmhvdmVyOmFmdGVyIHsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2hvdmVyY29sb3IifTsKfQoKCS5TaWRlTm90ZVRhYjpob3ZlciB7CgkJY3Vyc29yOiBoZWxwOwoJfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVUYWIgewoJCWxlZnQ6IDA7Cgl9CglodG1sW2Rpcj0icnRsIl0gLlNpZGVOb3RlVGFiIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZUluZm9Cb3ggewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKCWJhY2tncm91bmQ6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9jb2xvciJ9Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbiB7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9mb250aWNvbl9zaXplIn1weDsKfQoKLlNpZGVOb3RlSW5mb0JveEljb246YmVmb3JlIHsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAwLjNyZW07Cn0KCi8qIFBIT05FUyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKLlNpZGVOb3RlQmFyIHsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMDsKCXRvcDogMDsKCXdpZHRoOiA1cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX2JhY2tncm91bmRfY29sb3IifTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA1MDA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCgkuU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCAyMHB4IDIwcHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMTBweDsKCXdpZHRoOiAzNXB4OwoJaGVpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiAzMHB4OwoJei1pbmRleDogMTA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cgl9CgouU2lkZU5vdGVUYWI6YWZ0ZXIgewoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9mb250aWNvbl9ibGlua319CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fZm9udGljb25fc3Bpbn19CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBpbmZpbml0ZSBsaW5lYXI7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyOwoJCXt7ZW5kaWZ9fQogICB9Cn0KCi50b2FzdC10aXRsZXtmb250LXdlaWdodDo3MDB9LnRvYXN0LW1lc3NhZ2V7LW1zLXdvcmQtd3JhcDpicmVhay13b3JkO3dvcmQtd3JhcDpicmVhay13b3JkfS50b2FzdC1tZXNzYWdlIGEsLnRvYXN0LW1lc3NhZ2UgbGFiZWx7Y29sb3I6I0ZGRn0udG9hc3QtbWVzc2FnZSBhOmhvdmVye2NvbG9yOiNDQ0M7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnRvYXN0LWNsb3NlLWJ1dHRvbntwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDotLjNlbTt0b3A6LS4zZW07ZmxvYXQ6cmlnaHQ7Zm9udC1zaXplOjIwcHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiNGRkY7LXdlYmtpdC10ZXh0LXNoYWRvdzowIDFweCAwICNmZmY7dGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApO2xpbmUtaGVpZ2h0OjF9LnRvYXN0LWNsb3NlLWJ1dHRvbjpmb2N1cywudG9hc3QtY2xvc2UtYnV0dG9uOmhvdmVye2NvbG9yOiMwMDA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXI7b3BhY2l0eTouNDstbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTQwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT00MCl9LnJ0bCAudG9hc3QtY2xvc2UtYnV0dG9ue2xlZnQ6LS4zZW07ZmxvYXQ6bGVmdDtyaWdodDouM2VtfWJ1dHRvbi50b2FzdC1jbG9zZS1idXR0b257cGFkZGluZzowO2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6MCAwO2JvcmRlcjowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lfS50b2FzdC10b3AtY2VudGVye3RvcDowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtYm90dG9tLWNlbnRlcntib3R0b206MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LXRvcC1mdWxsLXdpZHRoe3RvcDowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtYm90dG9tLWZ1bGwtd2lkdGh7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtbGVmdHt0b3A6MTJweDtsZWZ0OjEycHh9LnRvYXN0LXRvcC1yaWdodHt0b3A6MTJweDtyaWdodDoxMnB4fS50b2FzdC1ib3R0b20tcmlnaHR7cmlnaHQ6MTJweDtib3R0b206MTJweH0udG9hc3QtYm90dG9tLWxlZnR7Ym90dG9tOjEycHg7bGVmdDoxMnB4fSN0b2FzdC1jb250YWluZXJ7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDo5OTk5OTk7cG9pbnRlci1ldmVudHM6bm9uZX0jdG9hc3QtY29udGFpbmVyICp7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fSN0b2FzdC1jb250YWluZXI+ZGl2e3Bvc2l0aW9uOnJlbGF0aXZlO3BvaW50ZXItZXZlbnRzOmF1dG87b3ZlcmZsb3c6aGlkZGVuO21hcmdpbjowIDAgNnB4O3BhZGRpbmc6MTVweCAxNXB4IDE1cHggNTBweDt3aWR0aDozMDBweDstbW96LWJvcmRlci1yYWRpdXM6M3B4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7Ym9yZGVyLXJhZGl1czozcHg7YmFja2dyb3VuZC1wb3NpdGlvbjoxNXB4IGNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7LW1vei1ib3gtc2hhZG93OjAgMCAxMnB4ICM5OTk7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAxMnB4ICM5OTk7Ym94LXNoYWRvdzowIDAgMTJweCAjOTk5O2NvbG9yOiNGRkY7b3BhY2l0eTouODstbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTgwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT04MCl9I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse2RpcmVjdGlvbjpydGw7cGFkZGluZzoxNXB4IDUwcHggMTVweCAxNXB4O2JhY2tncm91bmQtcG9zaXRpb246cmlnaHQgMTVweCBjZW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj5kaXY6aG92ZXJ7LW1vei1ib3gtc2hhZG93OjAgMCAxMnB4ICMwMDA7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAxMnB4ICMwMDA7Ym94LXNoYWRvdzowIDAgMTJweCAjMDAwO29wYWNpdHk6MTstbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTtjdXJzb3I6cG9pbnRlcn0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1pbmZve2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFHd1NVUkJWRWhMdFphOVNnTkJFTWM5c1V4eFJjb1VLU3pTV0loWHBGTWhoWVdGaGFCZzR5UFlpV0NYWnhCTEVSc0xSUzNFUWtFZndDS2RqV0pBd1NLQ2dvS0NjdWR2NE81WUxydDdFemdYaGlVMy80K2IyY2ttd1ZqSlNwS2tRNndBaTRnd2hUK3ozd1JCY0V6MHlqU3NlVVRyY1J5ZnNIc1htRDBBbWJIT0M5SWk4VkltbnVYQlBnbEhwUTV3d1NWTTdzTm5URzdaYTRKd0RkQ2p4eUFpSDNueUEybXRhVEp1ZmlEWjVkQ2FxbEl0SUxoMU5IYXRmTjVza3ZqeDlaMzhtNjlDZ3p1WG1aZ1ZyUElHRTc2M0p4OXFLc1JveldZdzZ4T0hkRVIrbm4yS2tPK0JiK1VWNUNCTjZXQzZRdEJnYlJWb3pyYWhBYm1tNkh0VXNndFBDMTl0RmR4WFpZQk9ma2JtRkoxVmFIQTFWQUhqZDBwcDcwb1RaenZSK0VWcngyWWdmZHNxNmV1NTVCSFlSOGhsY2tpK24ra0VSVUZHOEJyQTBCd2plQXYyTThXTFFCdGN5K1NENmZOc21uQjNBbEJMcmdUdFZXMWMyUU40YlZXTEFUYUlTNjBKMkR1NXkxVGlKZ2pTQnZGVlpnVG13Q1UrZEFaRm9QeEdFRXM4bnlIQzlCd2UyR3ZFSnYyV1haYjB2amR5RlQ0Q3hrM2Uva0lxbE9Hb1ZMd3dQZXZwWUhUKzAwVCtoV3dYRGY0QUpBT1VxV2NEaGJ3QUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBSE9TVVJCVkVoTHJaYS9TZ05CRU1aemgwV0tDQ2xTQ0thSVlPRUQrQUFLZVFRTEc4SFd6dExDSW1CcllhZGdJZFkrZ0lLTllrQkZTd3U3Q0FvcUNna2tvR0JJL0UyOFBkYkxabWVETGd6WnpjeDgzL3paMlNTWEMxajlmcitJMUhxOTNnMnl4SDRpd00xdmtvQldBZHhDbXB6VHhma04yUmN5Wk5hSEZJa1NvMTArOGtneGtYSVVSVjVIR3hUbUZ1Yzc1QjJSZlFrcHhIRzhhQWdhQUZhMHRBSHFZRmZRN0l3ZTJ5aE9EazgrSjRDN3lBb1JUV0kzdy80a2xHUmdSNGxPN1JwbjkrZ3ZNeVdwK3V4Rmg4K0grQVJsZ04xbkp1SnVRQVl2TmtFbndHRmNrMThFcjRxM2VnRWMvb08rbWhMZEtnUnloZE5GaWFjQzBybE9DYmhOVno0SDlGbkFZZ0RCdlUzUUlpb1psSkZMSnRzb0hZUkRmaVpvVXlJeHFDdFJwVmxBTnEwRVU0ZEFwanJ0Z2V6UEZhZDVTMTlXZ2prYzBoTlZudUY0SGpWQTZDN1FyU0lieWxCK29aZTNhSGdCc3FsTnFLWUg0OGpYeUpLTXVBYml5Vko4S3phQjNlUmMwcGc5VndRNG5pRnJ5STY4cWlPaTNBYmp3ZHNmbkF0azBiQ2pUTEpLcjZtckQ5ZzhpcS9TL0I4MWhndU9NbFFUblZ5RzQwd0Fjam5tZ3NDTkVTRHJqbWU3d2ZmdFA0UDdTUDROM0NKWmR2em9OeUdxMmMvSFdPWEpHc3ZWZytSQS9rMk1DL3dONkkyWUEyUHQ4R2tBQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXI+LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQURzU1VSQlZFaExZMkFZQmZRTWdmLy8vM1A4Ky9ldkFJZ3ZBL0ZzSUYrQmF2WUREV01CR3JvYVNNTUJpRThWQzdBWkRySUZhTUZuaWkzQVpUalVnc1VVV1VEQThPZEFINmlRYlFFaHc0SHlHc1BFY0tCWEJJQzRBUmhleDRHNEJzam13ZVUxc29JRmFHZy9XdG9GWlJJWmRFdklNaHhrQ0NqWElWc0FUVjZnRkdBQ3M0UnN3MEVHZ0lJSDNRSllKZ0hTQVJRWkRyV0FCK2phd3pncytRMlVPNDlEN2puUlNSR29FRlJJTGNkbUVNV0dJMGNtMEpKMlFwWUExUkR2Y216SkVXaEFCaEQvcHFyTDBTMENXdUFCS2duUmtpOWxMc2VTN2cyQWxxd0hXUVNLSDRvS0xySUxwUkdoRVFDdzJMaVJVSWE0bHdBQUFBQkpSVTVFcmtKZ2dnPT0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFHWVNVUkJWRWhMNVpTdlRzTlFGTWJYWkdJQ01ZR1ltSmhBUUlKQUlDWVFQQUFDaVNEQjhBaUlDUVFKVDRDcVFFd2dKdllBU0FRQ2laaVltSmhBSUJBVENBUkp5KzlyVHNsZGQ4c0t1MU0wK2RMYjA1N3Y2L2xicS8yckswbVMvVFJOajljV05BS1BZSUpJSTdnSXhDY1E1MWN2cUlEK0dJRVg4QVNHNEIxYks1Z0laRmVRZm9KZEVYT2ZnWDRRQVFnN2tIMkE2NXlRODdseXhiMjdzZ2drQXpBdUZoYmJnMUsya2dDa0IxYlZ3eUlSOW0yTDdQUlBJaERVSVhnR3R5S3c1NzV5ejNsVE5zNlg0SlhualYrTEtNL20zTXlkblRidE9LSWp0ejZWaENCcTR2U20zbmNkckQybGswVmdVWFNWS2pWREpYSnppalcxUlFkc1U3Rjc3SGU4dTY4a29OWlR6OE96NXlHYTZKM0gzbFoweFlnWEJLMlF5bWxXV0ErUlduWWhza0xCdjJ2bUUraEJNQ3RiQTdLWDVkcld5UlQvMkpzcVoySXZmQjlZNGJXRE5NRmJKUkZtQzlFNzRTb1MwQ3F1bHdqa0MwKzVicGNWMUNaOE5NZWo0cGp5MFUrZG9EUXNHeW8xaHpWSnR0SWpoUTdHbkJ0UkZOMVVhclVsSDhGM3hpY3QrSFkwN3JFem9VR1BsV2NqUkZScjQvZ0NoWmdjM1pMMmQ4b0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lci50b2FzdC1ib3R0b20tY2VudGVyPmRpdiwjdG9hc3QtY29udGFpbmVyLnRvYXN0LXRvcC1jZW50ZXI+ZGl2e3dpZHRoOjMwMHB4O21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG99I3RvYXN0LWNvbnRhaW5lci50b2FzdC1ib3R0b20tZnVsbC13aWR0aD5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtZnVsbC13aWR0aD5kaXZ7d2lkdGg6OTYlO21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG99LnRvYXN0e2JhY2tncm91bmQtY29sb3I6IzAzMDMwM30udG9hc3Qtc3VjY2Vzc3tiYWNrZ3JvdW5kLWNvbG9yOiM1MUEzNTF9LnRvYXN0LWVycm9ye2JhY2tncm91bmQtY29sb3I6I0JEMzYyRn0udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWNvbG9yOiMyRjk2QjR9LnRvYXN0LXdhcm5pbmd7YmFja2dyb3VuZC1jb2xvcjojRjg5NDA2fS50b2FzdC1wcm9ncmVzc3twb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7Ym90dG9tOjA7aGVpZ2h0OjRweDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7b3BhY2l0eTouNDstbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTQwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT00MCl9QG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDoyNDBweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzo4cHggOHB4IDhweCA1MHB4O3dpZHRoOjExZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6OHB4IDUwcHggOHB4IDhweH0jdG9hc3QtY29udGFpbmVyIC50b2FzdC1jbG9zZS1idXR0b257cmlnaHQ6LS4yZW07dG9wOi0uMmVtfSN0b2FzdC1jb250YWluZXIgLnJ0bCAudG9hc3QtY2xvc2UtYnV0dG9ue2xlZnQ6LS4yZW07cmlnaHQ6LjJlbX19QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDoyNDFweCkgYW5kIChtYXgtd2lkdGg6NDgwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxOGVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6NDgxcHgpIGFuZCAobWF4LXdpZHRoOjc2OHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MjVlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzoxNXB4IDUwcHggMTVweCAxNXB4fX0KCi50b2FzdC1zdWNjZXNzIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLnRvYXN0LXdhcm5pbmcgewoJZm9udC1zaXplOiAxNnB4Owp9OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7CgokKGZ1bmN0aW9uICgpIHsKdG9hc3RyLm9wdGlvbnMgPSB7CiAgImNsb3NlQnV0dG9uIjogZmFsc2UsCiAgImRlYnVnIjogZmFsc2UsCiAgIm5ld2VzdE9uVG9wIjogZmFsc2UsCiAgInByb2dyZXNzQmFyIjogdHJ1ZSwKICAicG9zaXRpb25DbGFzcyI6ICJ0b2FzdC1ib3R0b20tZnVsbC13aWR0aCIsCiAgInByZXZlbnREdXBsaWNhdGVzIjogZmFsc2UsCiAgIm9uY2xpY2siOiBudWxsLAogICJzaG93RHVyYXRpb24iOiAiMzAwIiwKICAiaGlkZUR1cmF0aW9uIjogIjEwMDAiLAogICJ0aW1lT3V0IjogIjYwMDAiLAogICJleHRlbmRlZFRpbWVPdXQiOiAiMTAwMCIsCiAgInNob3dFYXNpbmciOiAic3dpbmciLAogICJoaWRlRWFzaW5nIjogImxpbmVhciIsCiAgInNob3dNZXRob2QiOiAiZmFkZUluIiwKICAiaGlkZU1ldGhvZCI6ICJmYWRlT3V0Igp9OwoKbGV0IHZpc2libGVNZXNzYWdlID0gJCgiLnRvYXN0LXN1Y2Nlc3MiKS5odG1sKCk7CmlmICh2aXNpYmxlTWVzc2FnZSAmJiB2aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgdG9hc3RyLnN1Y2Nlc3ModmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICBjb250YWluZXJJZDogInRvYXN0LWNvbnRhaW5lciIsCiAgfSk7Cn0KCmxldCBpbnZpc2libGVNZXNzYWdlID0gJCgiLnRvYXN0LXdhcm5pbmciKS5odG1sKCk7CmlmIChpbnZpc2libGVNZXNzYWdlICYmIGludmlzaWJsZU1lc3NhZ2UubGVuZ3RoID4gMCkgewogIHRvYXN0ci53YXJuaW5nKGludmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICBjb250YWluZXJJZDogInRvYXN0LWNvbnRhaW5lciIKICB9KTsKfQp9KTsoalF1ZXJ5LCBfKTs=SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypePage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsCurrent page addressSideNote will display on this pageSideNote will not display on this pageSideNote ContentSideNote CustomizeSideNote InfoBoxSideNote BarSideNote TabMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingStart DateEnd DateFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Enable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorShow the Start and End TimesClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabTab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSd7e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMH19U2lkZU5vdGVCYXJTdHJpcGV7e2VuZGlmfX17e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMX19U2lkZU5vdGVCYXJTb2xpZHt7ZW5kaWZ9fSc+PC9kaXY+CiAgICB7e2VuZGlmfX0KCQkJICAgIDxkaXYgaWQ9J2VsU05NRGlhbG9nJyBjbGFzcz0naXBzSGlkZSBpcHNQYWQnPgogICAge3tpZiBzZXR0aW5ncy5zZG5faW5mb2JveF9lbmFibGVkfX0KCSAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdpcHNNZXNzYWdlIFNpZGVOb3RlSW5mb0JveCc+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlNpZGVOb3RlSW5mb0JveEljb24iPntleHByZXNzaW9uPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9pbmZvYm94X2NvbnRlbnQifSA8L3NwYW4+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X3Nob3d0aW1lID09IDF9fQogICAgICAgICAgICAgICAgICAgIDxicj48c3Ryb25nPlN0YXJ0IFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9zdGFydCIgbm9yZWxhdGl2ZT0iZmFsc2UifSA8PiA8c3Ryb25nPkVuZCBUaW1lOjwvc3Ryb25nPiB7ZGF0ZXRpbWU9IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2RhdGVfZW5kIiBub3JlbGF0aXZlPSJmYWxzZSJ9CiAgICB7e2VuZGlmfX0KICAgICAgICAgICAgICAgPC9kaXY+CiAge3tlbmRpZn19CgkJCQkgICAgIDxwIGNsYXNzPSdpcHNUeXBlX3Jlc2V0IGlwc1NwYWNlcl9ib3R0b20gaXBzVHlwZV9ub3JtYWwnPgogICAgICAgICAgICAgICB7bGFuZz0ic2RuX2xnZGVzY192YWx1ZSJ9CgkJCQkgICAgPC9wPgoKCXt7aWYgc2V0dGluZ3Muc2RuX2hpZGV9fQoJe3tpZiAhc2V0dGluZ3Muc2RuX2hpZGVfZ3Vlc3RzfX0KCQkJCSAgIDxkaXYgaWQ9IlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIj4KCQkJCQkgIDxhIGNsYXNzPSJpcHNCdXR0b24gaXBzQnV0dG9uX3ZlcnlTbWFsbCBpcHNCdXR0b25faW1wb3J0YW50IGlwc0J1dHRvbl9mdWxsV2lkdGgiIGhyZWY9Int1cmw9ImFwcD1jb3JlJm1vZHVsZT1zeXN0ZW0mc2VjdGlvbj1wbHVnaW5zJmRvPVNpZGVOb3RlRGlzbWlzcyIgY3NyZj0iMSJ9IiBkYXRhLWlwc3Rvb2x0aXAgdGl0bGU9IntsYW5nPSdzZG5faGlkZV90b29sdGlwJ30iIGRhdGEtYWN0aW9uPSJkaXNtaXNzIj57bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9PC9hPgoJCQkJICAgPC9kaXY+Cgl7e2Vsc2VpZiBzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHMgYW5kICFcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+bWVtYmVyX2lkIH19CiAgICAgICAgICAgICAgICAgIDxwPiA8L3A+Cgl7e2Vsc2V9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZW5kaWZ9fQoJe3tlbmRpZn19CiAgICAgICAgICAgIDwvZGl2Pgp7e2VuZGlmfX0KCgp7e2lmICgkZW5hYmxlZCA9PSAxKSAmJiAoJFVSTGVuYWJsZWQgPT0gMSkgJiYgKCRwYWdldmlzaWJsZSA9PSAxKX19Cgk8ZGl2IGlkPSJzZG5TaWRlTm90ZSIgY2xhc3M9InRvYXN0LXN1Y2Nlc3MiIGhpZGRlbj4KCQl7bGFuZz0ic2RuX3BhZ2VfYWRkcmVzcyJ9IDxzdHJvbmc+eyRjdXJyZW50X3VybH08L3N0cm9uZz48L2JyPjxlbT57bGFuZz0ic2RuX3BhZ2VfZGlzcGxheV95ZXMifTwvZW0+Cgk8L2Rpdj4Ke3tlbHNlaWYgKCRlbmFibGVkID09IDEpICYmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDApfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtd2FybmluZyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X25vIn08L2VtPgoJPC9kaXY+Cnt7ZW5kaWZ9fQ==LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhclN0cmlwZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyU3RyaXBlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhclN0cmlwZSB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJTb2xpZCB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fc29saWRfY29sb3IifTsKCWJhY2tncm91bmQtc2l6ZTogODBweCA4MHB4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wOwoJei1pbmRleDogOTk5OTsKfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYmlnCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDcwcHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkBrZXlmcmFtZXMgcHVsc2UKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMzVweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpAa2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLlNpZGVOb3RlVGFiOmhvdmVyOmFmdGVyIHsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2hvdmVyY29sb3IifTsKfQoKCS5TaWRlTm90ZVRhYjpob3ZlciB7CgkJY3Vyc29yOiBoZWxwOwoJfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVUYWIgewoJCWxlZnQ6IDA7Cgl9CglodG1sW2Rpcj0icnRsIl0gLlNpZGVOb3RlVGFiIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZUluZm9Cb3ggewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKCWJhY2tncm91bmQ6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9jb2xvciJ9Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbiB7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9mb250aWNvbl9zaXplIn1weDsKfQoKLlNpZGVOb3RlSW5mb0JveEljb246YmVmb3JlIHsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAwLjNyZW07Cn0KCi8qIFBIT05FUyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKLlNpZGVOb3RlQmFyU3RyaXBlIHsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMDsKCXRvcDogMDsKCXdpZHRoOiA1cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX2JhY2tncm91bmRfY29sb3IifTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA1MDA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCgkuU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCAyMHB4IDIwcHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMTBweDsKCXdpZHRoOiAzNXB4OwoJaGVpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiAzMHB4OwoJei1pbmRleDogMTA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cgl9CgouU2lkZU5vdGVUYWI6YWZ0ZXIgewoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9mb250aWNvbl9ibGlua319CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fZm9udGljb25fc3Bpbn19CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBpbmZpbml0ZSBsaW5lYXI7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyOwoJCXt7ZW5kaWZ9fQogICB9Cn0KCi8qIFRvYXN0ciAqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6NzAwfS50b2FzdC1tZXNzYWdley1tcy13b3JkLXdyYXA6YnJlYWstd29yZDt3b3JkLXdyYXA6YnJlYWstd29yZH0udG9hc3QtbWVzc2FnZSBhLC50b2FzdC1tZXNzYWdlIGxhYmVse2NvbG9yOiNGRkZ9LnRvYXN0LW1lc3NhZ2UgYTpob3Zlcntjb2xvcjojQ0NDO3RleHQtZGVjb3JhdGlvbjpub25lfS50b2FzdC1jbG9zZS1idXR0b257cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6LS4zZW07dG9wOi0uM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojRkZGOy13ZWJraXQtdGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtsaW5lLWhlaWdodDoxfS50b2FzdC1jbG9zZS1idXR0b246Zm9jdXMsLnRvYXN0LWNsb3NlLWJ1dHRvbjpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfS5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uM2VtO2Zsb2F0OmxlZnQ7cmlnaHQ6LjNlbX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9hc3QtdG9wLWNlbnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1jZW50ZXJ7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtZnVsbC13aWR0aHt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoe2JvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtdG9wLWxlZnR7dG9wOjEycHg7bGVmdDoxMnB4fS50b2FzdC10b3AtcmlnaHR7dG9wOjEycHg7cmlnaHQ6MTJweH0udG9hc3QtYm90dG9tLXJpZ2h0e3JpZ2h0OjEycHg7Ym90dG9tOjEycHh9LnRvYXN0LWJvdHRvbS1sZWZ0e2JvdHRvbToxMnB4O2xlZnQ6MTJweH0jdG9hc3QtY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5OTk5O3BvaW50ZXItZXZlbnRzOm5vbmV9I3RvYXN0LWNvbnRhaW5lciAqey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdG9hc3QtY29udGFpbmVyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtwb2ludGVyLWV2ZW50czphdXRvO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjojRkZGO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtkaXJlY3Rpb246cnRsO3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDE1cHggY2VudGVyfSN0b2FzdC1jb250YWluZXI+ZGl2OmhvdmVyey1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjMDAwOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjMDAwO2JveC1zaGFkb3c6MCAwIDEycHggIzAwMDtvcGFjaXR5OjE7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7Y3Vyc29yOnBvaW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtZXJyb3J7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtd2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyPmRpdnt3aWR0aDozMDBweDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2e3dpZHRoOjk2JTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFBMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNCRDM2MkZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMkY5NkI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I0Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxMWVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6MjQxcHgpIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjhweCA4cHggOHB4IDUwcHg7d2lkdGg6MThlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzo4cHggNTBweCA4cHggOHB4fSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotLjJlbTt0b3A6LS4yZW19I3RvYXN0LWNvbnRhaW5lciAucnRsIC50b2FzdC1jbG9zZS1idXR0b257bGVmdDotLjJlbTtyaWdodDouMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweH19CgoudG9hc3Qtc3VjY2VzcyB7Cglmb250LXNpemU6IDE2cHg7Cn0KCi50b2FzdC13YXJuaW5nIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLyogVG9hc3RyIE92ZXJpZGVzICovCgoudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGggewoJYm90dG9tOjA7CiAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICB3aWR0aDogOTAlOwp9CgoudG9hc3QtdG9wLWZ1bGwtd2lkdGggewoJdG9wOjA7CiAgICBtYXJnaW46IGF1dG87CiAgICB3aWR0aDogOTAlOwp9CgojdG9hc3QtY29udGFpbmVyLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoPmRpdiwjdG9hc3QtY29udGFpbmVyLnRvYXN0LXRvcC1mdWxsLXdpZHRoPmRpdiB7CiAgIHdpZHRoOiA5NiU7CiAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0=OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7CgoJJChmdW5jdGlvbiAoKSB7CgkJdG9hc3RyLm9wdGlvbnMgPSB7CgkJCQkiY2xvc2VCdXR0b24iOiBmYWxzZSwKCQkJCSJkZWJ1ZyI6IGZhbHNlLAoJCQkJIm5ld2VzdE9uVG9wIjogZmFsc2UsCgkJCQkicHJvZ3Jlc3NCYXIiOiB0cnVlLAoJCQkJInBvc2l0aW9uQ2xhc3MiOiAidG9hc3QtYm90dG9tLWZ1bGwtd2lkdGgiLAoJCQkJInByZXZlbnREdXBsaWNhdGVzIjogZmFsc2UsCgkJCQkib25jbGljayI6IG51bGwsCgkJCQkic2hvd0R1cmF0aW9uIjogIjMwMCIsCgkJCQkiaGlkZUR1cmF0aW9uIjogIjEwMDAiLAoJCQkJInRpbWVPdXQiOiAiNjAwMCIsCgkJCQkiZXh0ZW5kZWRUaW1lT3V0IjogIjEwMDAiLAoJCQkJInNob3dFYXNpbmciOiAic3dpbmciLAoJCQkJImhpZGVFYXNpbmciOiAibGluZWFyIiwKCQkJCSJzaG93TWV0aG9kIjogImZhZGVJbiIsCgkJCQkiaGlkZU1ldGhvZCI6ICJmYWRlT3V0IgoJCX07CgoJCWxldCB2aXNpYmxlTWVzc2FnZSA9ICQoIi50b2FzdC1zdWNjZXNzIikuaHRtbCgpOwoJCQkJaWYgKHZpc2libGVNZXNzYWdlICYmIHZpc2libGVNZXNzYWdlLmxlbmd0aCA+IDApIHsKICAJCQkJdG9hc3RyLnN1Y2Nlc3ModmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICAJCQkJY29udGFpbmVySWQ6ICJ0b2FzdC1jb250YWluZXIiLAogCQkgfSk7CiAgfQoKCQlsZXQgaW52aXNpYmxlTWVzc2FnZSA9ICQoIi50b2FzdC13YXJuaW5nIikuaHRtbCgpOwoJCQkJaWYgKGludmlzaWJsZU1lc3NhZ2UgJiYgaW52aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgCQkJCXRvYXN0ci53YXJuaW5nKGludmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICAJCQkJY29udGFpbmVySWQ6ICJ0b2FzdC1jb250YWluZXIiCgkJCX0pOwogIH0KfSk7KGpRdWVyeSwgXyk7SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypePage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsCurrent page addressSideNote will display on this pageSideNote will not display on this pageSideNote ContentMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentStart DateEnd DateSideNote InfoBoxEnable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Descriptive text, keep it short for best displayingShow the Start and End TimesSideNote CustomizeSideNote BarSideNote TabAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Solid ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabSide Bar StyleStripedSolidImageImageTab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
From e49d47f4e1996d8a4de538ead80af605151f4e72 Mon Sep 17 00:00:00 2001 From: GaalexxC Date: Fri, 19 Apr 2019 22:16:38 -0400 Subject: [PATCH 12/23] dev 1.0.2 --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 57042cf..069e4b9 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ - Modal sizes: Narrow, Medium, Large, Full screem - Page Preferences - White/Black list options -- Page Address Notifications - Admin/Staff page address notifications via toastr _NEW!_ +- Page Visibility Notifications - Admin/Staff page address/visibilty notifications via toastr _NEW!_ - Option to disable dismiss for guests only _NEW!_ - Options to animate icons _NEW!_ - Custom FontAwesome icons @@ -51,7 +51,7 @@ ## ** Updated Notes ** -04/18/19 +04/19/19 - New release 1.0.2 due on Easter (4/21) - Working stable release for 4.3x and 4.4x available in /src folder and compressed on releases page @@ -64,7 +64,7 @@ __Maintenance__ - Couple Typos, more detailed descriptions of some options - ToggleOff when hiding sidebar - Return Form - Return to last active tab when editing -- Toastr CSS improvements and overrides available in sidenote.css for customization +- Toastr CSS improvements and overrides - Lang bits updated - Code cleanup @@ -73,6 +73,7 @@ __Bug Fixes__ __New Features/Options__ - 2 New sidebar options in addition to striped, solid and image background added. +- Toastr Notifications configurations, size, style and positioning options available ## ** Install/Upgrade ** Import SideNote.xml via Install New Plugin in IPS ACP From 93754c5690b5bd1d83e54fbc64ad71c93d594309 Mon Sep 17 00:00:00 2001 From: GaalexxC Date: Fri, 19 Apr 2019 22:21:34 -0400 Subject: [PATCH 13/23] dev 1.0.2 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 069e4b9..3246f4b 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,7 @@ __Maintenance__ - Return Form - Return to last active tab when editing - Toastr CSS improvements and overrides - Lang bits updated +- Mobile display improvements - Code cleanup __Bug Fixes__ From 438de09026810489faac42e51b173ef6ba77af70 Mon Sep 17 00:00:00 2001 From: GaalexxC Date: Fri, 19 Apr 2019 23:52:43 -0400 Subject: [PATCH 14/23] dev 1.0.2 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3246f4b..bf3c2a2 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![License](https://img.shields.io/badge/License-GNUv3-blue.svg)](https://github.com/devCU/IPS-SideNote/blob/master/LICENSE) [![Version](https://img.shields.io/badge/Version-1.0.1-ff69b4.svg)](https://www.devcu.com/forums/devcu-tracker/) [![Build](https://img.shields.io/badge/Build-Stable-blueviolet.svg)](https://www.devcu.com/forums/devcu-tracker/) -[![Status](https://img.shields.io/badge/Status-Release-brightgreen.svg)](https://www.devcu.com/forums/devcu-tracker/) +[![Status](https://img.shields.io/badge/Status-Release-critical.svg)](https://www.devcu.com/forums/devcu-tracker/) [![Development](https://img.shields.io/badge/Development-Active-success.svg)](https://www.devcu.com/forums/devcu-tracker/) [![Platform](https://img.shields.io/badge/Platform-IPS4.3+-blue.svg)](https://www.devcu.com/forums/devcu-tracker/) From d39e2e6961f7f26045ac404efd7ed53ec9643609 Mon Sep 17 00:00:00 2001 From: GaalexxC Date: Sat, 20 Apr 2019 03:20:20 -0400 Subject: [PATCH 15/23] dev 1.0.2 --- src/IPS4.3/SideNote.xml | 9 +++++++-- src/IPS4.4/SideNote.xml | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/IPS4.3/SideNote.xml b/src/IPS4.3/SideNote.xml index e45ac85..fd582c0 100644 --- a/src/IPS4.3/SideNote.xml +++ b/src/IPS4.3/SideNote.xml @@ -132,7 +132,7 @@ public function SideNoteDismiss() } } -}]]>sdn_enabled0sdn_titlesdn_lgdescsdn_stdescsdn_fonticonf071sdn_background_color#FFFsdn_stripe_color#f4b738sdn_sidebar_width10sdn_fonticon_size25sdn_fonticon_color#FFFFFFsdn_fonticon_hovercolor#bbb6b6sdn_groupssdn_hide0sdn_date_startsdn_date_endsdn_modal_sizemediumsdn_infobox_enabled0sdn_infobox_contentsdn_infobox_fonticonf05asdn_infobox_fonticon_size15sdn_infobox_color#326196sdn_infobox_showtime0sdn_sidebar_hide0sdn_tab_color#f4b738sdn_tab_sizew60sdn_tab_sizeh50sdn_tab_radius30sdn_tab_positionbottomsdn_tab_window10sdn_configure_pages_type0sdn_configure_pages_listsdn_hide_guests0sdn_notfication_groups4sdn_notfication_enabled0sdn_icon_animation0sdn_bar_style0sdn_solid_colorsdn_image_backsdn_enabled0sdn_titlesdn_lgdescsdn_stdescsdn_fonticonf071sdn_background_color#FFFsdn_stripe_color#f4b738sdn_sidebar_width10sdn_fonticon_size25sdn_fonticon_color#FFFFFFsdn_fonticon_hovercolor#bbb6b6sdn_groupssdn_hide0sdn_date_startsdn_date_endsdn_modal_sizemediumsdn_infobox_enabled0sdn_infobox_contentsdn_infobox_fonticonf05asdn_infobox_fonticon_size15sdn_infobox_color#326196sdn_infobox_showtime0sdn_sidebar_hide0sdn_tab_color#f4b738sdn_tab_sizew60sdn_tab_sizeh50sdn_tab_radius30sdn_tab_positionbottomsdn_tab_window10sdn_configure_pages_type0sdn_configure_pages_listsdn_hide_guests0sdn_notfication_groups4sdn_notfication_enabled0sdn_icon_animation0sdn_bar_style0sdn_solid_colorsdn_image_backsdn_toastr_sizew100addTab('sdn_configure'); $form->addHeader('sdn_configure'); @@ -162,9 +162,14 @@ $form->add( new \IPS\Helpers\Form\Select( 'sdn_configure_pages_type', \IPS\Setti 'multiple' => FALSE) ) ); $form->add( new \IPS\Helpers\Form\TextArea( 'sdn_configure_pages_list', \IPS\Settings::i()->sdn_configure_pages_list, FALSE, array(), NULL, NULL, NULL, 'sdn_configure_pages_list') ); +$form->addTab('sdn_notifications'); $form->addHeader('sdn_header_notfication'); +$form->addSeparator(); $form->add( new \IPS\Helpers\Form\YesNo( 'sdn_notfication_enabled', \IPS\Settings::i()->sdn_notfication_enabled, FALSE, array(), NULL, NULL, NULL, 'sdn_notfication_enabled') ); $form->add( new \IPS\Helpers\Form\Select( 'sdn_notfication_groups', explode( ',' , \IPS\Settings::i()->sdn_notfication_groups ), FALSE, array( 'options' => \IPS\Member\Group::groups(TRUE, FALSE), 'parse' => 'normal', 'multiple' => TRUE ), NULL, NULL, NULL, 'sdn_notfication_groups' ) ); +$form->addHeader('sdn_header_toastr'); +$form->addSeparator(); +$form->add( new \IPS\Helpers\Form\Number( 'sdn_toastr_sizew', \IPS\Settings::i()->sdn_toastr_sizew, FALSE, array(), NULL, NULL, NULL, 'sdn_toastr_sizew' ) ); $form->addTab('sdn_content'); $form->addHeader( 'sdn_content' ); @@ -246,7 +251,7 @@ if ( $values = $form->values() ) return TRUE; } -return $form;]]>PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSd7e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMH19U2lkZU5vdGVCYXJTdHJpcGV7e2VuZGlmfX17e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMX19U2lkZU5vdGVCYXJTb2xpZHt7ZW5kaWZ9fSc+PC9kaXY+CiAgICB7e2VuZGlmfX0KCQkJICAgIDxkaXYgaWQ9J2VsU05NRGlhbG9nJyBjbGFzcz0naXBzSGlkZSBpcHNQYWQnPgogICAge3tpZiBzZXR0aW5ncy5zZG5faW5mb2JveF9lbmFibGVkfX0KCSAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdpcHNNZXNzYWdlIFNpZGVOb3RlSW5mb0JveCc+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlNpZGVOb3RlSW5mb0JveEljb24iPntleHByZXNzaW9uPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9pbmZvYm94X2NvbnRlbnQifSA8L3NwYW4+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X3Nob3d0aW1lID09IDF9fQogICAgICAgICAgICAgICAgICAgIDxicj48c3Ryb25nPlN0YXJ0IFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9zdGFydCIgbm9yZWxhdGl2ZT0iZmFsc2UifSA8PiA8c3Ryb25nPkVuZCBUaW1lOjwvc3Ryb25nPiB7ZGF0ZXRpbWU9IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2RhdGVfZW5kIiBub3JlbGF0aXZlPSJmYWxzZSJ9CiAgICB7e2VuZGlmfX0KICAgICAgICAgICAgICAgPC9kaXY+CiAge3tlbmRpZn19CgkJCQkgICAgIDxwIGNsYXNzPSdpcHNUeXBlX3Jlc2V0IGlwc1NwYWNlcl9ib3R0b20gaXBzVHlwZV9ub3JtYWwnPgogICAgICAgICAgICAgICB7bGFuZz0ic2RuX2xnZGVzY192YWx1ZSJ9CgkJCQkgICAgPC9wPgoKCXt7aWYgc2V0dGluZ3Muc2RuX2hpZGV9fQoJe3tpZiAhc2V0dGluZ3Muc2RuX2hpZGVfZ3Vlc3RzfX0KCQkJCSAgIDxkaXYgaWQ9IlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIj4KCQkJCQkgIDxhIGNsYXNzPSJpcHNCdXR0b24gaXBzQnV0dG9uX3ZlcnlTbWFsbCBpcHNCdXR0b25faW1wb3J0YW50IGlwc0J1dHRvbl9mdWxsV2lkdGgiIGhyZWY9Int1cmw9ImFwcD1jb3JlJm1vZHVsZT1zeXN0ZW0mc2VjdGlvbj1wbHVnaW5zJmRvPVNpZGVOb3RlRGlzbWlzcyIgY3NyZj0iMSJ9IiBkYXRhLWlwc3Rvb2x0aXAgdGl0bGU9IntsYW5nPSdzZG5faGlkZV90b29sdGlwJ30iIGRhdGEtYWN0aW9uPSJkaXNtaXNzIj57bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9PC9hPgoJCQkJICAgPC9kaXY+Cgl7e2Vsc2VpZiBzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHMgYW5kICFcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+bWVtYmVyX2lkIH19CiAgICAgICAgICAgICAgICAgIDxwPiA8L3A+Cgl7e2Vsc2V9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZW5kaWZ9fQoJe3tlbmRpZn19CiAgICAgICAgICAgIDwvZGl2Pgp7e2VuZGlmfX0KCgp7e2lmICgkZW5hYmxlZCA9PSAxKSAmJiAoJFVSTGVuYWJsZWQgPT0gMSkgJiYgKCRwYWdldmlzaWJsZSA9PSAxKX19Cgk8ZGl2IGlkPSJzZG5TaWRlTm90ZSIgY2xhc3M9InRvYXN0LXN1Y2Nlc3MiIGhpZGRlbj4KCQl7bGFuZz0ic2RuX3BhZ2VfYWRkcmVzcyJ9IDxzdHJvbmc+eyRjdXJyZW50X3VybH08L3N0cm9uZz48L2JyPjxlbT57bGFuZz0ic2RuX3BhZ2VfZGlzcGxheV95ZXMifTwvZW0+Cgk8L2Rpdj4Ke3tlbHNlaWYgKCRlbmFibGVkID09IDEpICYmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDApfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtd2FybmluZyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X25vIn08L2VtPgoJPC9kaXY+Cnt7ZW5kaWZ9fQ==LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhclN0cmlwZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyU3RyaXBlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhclN0cmlwZSB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJTb2xpZCB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fc29saWRfY29sb3IifTsKCWJhY2tncm91bmQtc2l6ZTogODBweCA4MHB4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wOwoJei1pbmRleDogOTk5OTsKfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYmlnCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDcwcHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkBrZXlmcmFtZXMgcHVsc2UKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMzVweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpAa2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLlNpZGVOb3RlVGFiOmhvdmVyOmFmdGVyIHsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2hvdmVyY29sb3IifTsKfQoKCS5TaWRlTm90ZVRhYjpob3ZlciB7CgkJY3Vyc29yOiBoZWxwOwoJfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVUYWIgewoJCWxlZnQ6IDA7Cgl9CglodG1sW2Rpcj0icnRsIl0gLlNpZGVOb3RlVGFiIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZUluZm9Cb3ggewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKCWJhY2tncm91bmQ6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9jb2xvciJ9Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbiB7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9mb250aWNvbl9zaXplIn1weDsKfQoKLlNpZGVOb3RlSW5mb0JveEljb246YmVmb3JlIHsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAwLjNyZW07Cn0KCi8qIFBIT05FUyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKLlNpZGVOb3RlQmFyU3RyaXBlIHsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMDsKCXRvcDogMDsKCXdpZHRoOiA1cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX2JhY2tncm91bmRfY29sb3IifTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA1MDA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCgkuU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCAyMHB4IDIwcHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMTBweDsKCXdpZHRoOiAzNXB4OwoJaGVpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiAzMHB4OwoJei1pbmRleDogMTA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cgl9CgouU2lkZU5vdGVUYWI6YWZ0ZXIgewoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9mb250aWNvbl9ibGlua319CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fZm9udGljb25fc3Bpbn19CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBpbmZpbml0ZSBsaW5lYXI7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyOwoJCXt7ZW5kaWZ9fQogICB9Cn0KCi8qIFRvYXN0ciAqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6NzAwfS50b2FzdC1tZXNzYWdley1tcy13b3JkLXdyYXA6YnJlYWstd29yZDt3b3JkLXdyYXA6YnJlYWstd29yZH0udG9hc3QtbWVzc2FnZSBhLC50b2FzdC1tZXNzYWdlIGxhYmVse2NvbG9yOiNGRkZ9LnRvYXN0LW1lc3NhZ2UgYTpob3Zlcntjb2xvcjojQ0NDO3RleHQtZGVjb3JhdGlvbjpub25lfS50b2FzdC1jbG9zZS1idXR0b257cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6LS4zZW07dG9wOi0uM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojRkZGOy13ZWJraXQtdGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtsaW5lLWhlaWdodDoxfS50b2FzdC1jbG9zZS1idXR0b246Zm9jdXMsLnRvYXN0LWNsb3NlLWJ1dHRvbjpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfS5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uM2VtO2Zsb2F0OmxlZnQ7cmlnaHQ6LjNlbX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9hc3QtdG9wLWNlbnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1jZW50ZXJ7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtZnVsbC13aWR0aHt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoe2JvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtdG9wLWxlZnR7dG9wOjEycHg7bGVmdDoxMnB4fS50b2FzdC10b3AtcmlnaHR7dG9wOjEycHg7cmlnaHQ6MTJweH0udG9hc3QtYm90dG9tLXJpZ2h0e3JpZ2h0OjEycHg7Ym90dG9tOjEycHh9LnRvYXN0LWJvdHRvbS1sZWZ0e2JvdHRvbToxMnB4O2xlZnQ6MTJweH0jdG9hc3QtY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5OTk5O3BvaW50ZXItZXZlbnRzOm5vbmV9I3RvYXN0LWNvbnRhaW5lciAqey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdG9hc3QtY29udGFpbmVyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtwb2ludGVyLWV2ZW50czphdXRvO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjojRkZGO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtkaXJlY3Rpb246cnRsO3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDE1cHggY2VudGVyfSN0b2FzdC1jb250YWluZXI+ZGl2OmhvdmVyey1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjMDAwOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjMDAwO2JveC1zaGFkb3c6MCAwIDEycHggIzAwMDtvcGFjaXR5OjE7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7Y3Vyc29yOnBvaW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtZXJyb3J7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtd2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyPmRpdnt3aWR0aDozMDBweDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2e3dpZHRoOjk2JTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFBMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNCRDM2MkZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMkY5NkI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I0Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxMWVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6MjQxcHgpIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjhweCA4cHggOHB4IDUwcHg7d2lkdGg6MThlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzo4cHggNTBweCA4cHggOHB4fSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotLjJlbTt0b3A6LS4yZW19I3RvYXN0LWNvbnRhaW5lciAucnRsIC50b2FzdC1jbG9zZS1idXR0b257bGVmdDotLjJlbTtyaWdodDouMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweH19CgoudG9hc3Qtc3VjY2VzcyB7Cglmb250LXNpemU6IDE2cHg7Cn0KCi50b2FzdC13YXJuaW5nIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLyogVG9hc3RyIE92ZXJpZGVzICovCgoudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGggewoJYm90dG9tOjA7CiAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICB3aWR0aDogOTAlOwp9CgoudG9hc3QtdG9wLWZ1bGwtd2lkdGggewoJdG9wOjA7CiAgICBtYXJnaW46IGF1dG87CiAgICB3aWR0aDogOTAlOwp9CgojdG9hc3QtY29udGFpbmVyLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoPmRpdiwjdG9hc3QtY29udGFpbmVyLnRvYXN0LXRvcC1mdWxsLXdpZHRoPmRpdiB7CiAgIHdpZHRoOiA5NiU7CiAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0=OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7CgoJJChmdW5jdGlvbiAoKSB7CgkJdG9hc3RyLm9wdGlvbnMgPSB7CgkJCQkiY2xvc2VCdXR0b24iOiBmYWxzZSwKCQkJCSJkZWJ1ZyI6IGZhbHNlLAoJCQkJIm5ld2VzdE9uVG9wIjogZmFsc2UsCgkJCQkicHJvZ3Jlc3NCYXIiOiB0cnVlLAoJCQkJInBvc2l0aW9uQ2xhc3MiOiAidG9hc3QtYm90dG9tLWZ1bGwtd2lkdGgiLAoJCQkJInByZXZlbnREdXBsaWNhdGVzIjogZmFsc2UsCgkJCQkib25jbGljayI6IG51bGwsCgkJCQkic2hvd0R1cmF0aW9uIjogIjMwMCIsCgkJCQkiaGlkZUR1cmF0aW9uIjogIjEwMDAiLAoJCQkJInRpbWVPdXQiOiAiNjAwMCIsCgkJCQkiZXh0ZW5kZWRUaW1lT3V0IjogIjEwMDAiLAoJCQkJInNob3dFYXNpbmciOiAic3dpbmciLAoJCQkJImhpZGVFYXNpbmciOiAibGluZWFyIiwKCQkJCSJzaG93TWV0aG9kIjogImZhZGVJbiIsCgkJCQkiaGlkZU1ldGhvZCI6ICJmYWRlT3V0IgoJCX07CgoJCWxldCB2aXNpYmxlTWVzc2FnZSA9ICQoIi50b2FzdC1zdWNjZXNzIikuaHRtbCgpOwoJCQkJaWYgKHZpc2libGVNZXNzYWdlICYmIHZpc2libGVNZXNzYWdlLmxlbmd0aCA+IDApIHsKICAJCQkJdG9hc3RyLnN1Y2Nlc3ModmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICAJCQkJY29udGFpbmVySWQ6ICJ0b2FzdC1jb250YWluZXIiLAogCQkgfSk7CiAgfQoKCQlsZXQgaW52aXNpYmxlTWVzc2FnZSA9ICQoIi50b2FzdC13YXJuaW5nIikuaHRtbCgpOwoJCQkJaWYgKGludmlzaWJsZU1lc3NhZ2UgJiYgaW52aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgCQkJCXRvYXN0ci53YXJuaW5nKGludmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICAJCQkJY29udGFpbmVySWQ6ICJ0b2FzdC1jb250YWluZXIiCgkJCX0pOwogIH0KfSk7KGpRdWVyeSwgXyk7SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypePage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsCurrent page addressSideNote will display on this pageSideNote will not display on this pageSideNote ContentMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentStart DateEnd DateSideNote InfoBoxEnable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Descriptive text, keep it short for best displayingShow the Start and End TimesSideNote CustomizeSideNote BarSideNote TabAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Solid ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabSide Bar StyleStripedSolidImageImageTab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSd7e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMH19U2lkZU5vdGVCYXJTdHJpcGV7e2VuZGlmfX17e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMX19U2lkZU5vdGVCYXJTb2xpZHt7ZW5kaWZ9fSc+PC9kaXY+CiAgICB7e2VuZGlmfX0KCQkJICAgIDxkaXYgaWQ9J2VsU05NRGlhbG9nJyBjbGFzcz0naXBzSGlkZSBpcHNQYWQnPgogICAge3tpZiBzZXR0aW5ncy5zZG5faW5mb2JveF9lbmFibGVkfX0KCSAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdpcHNNZXNzYWdlIFNpZGVOb3RlSW5mb0JveCc+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlNpZGVOb3RlSW5mb0JveEljb24iPntleHByZXNzaW9uPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9pbmZvYm94X2NvbnRlbnQifSA8L3NwYW4+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X3Nob3d0aW1lID09IDF9fQogICAgICAgICAgICAgICAgICAgIDxicj48c3Ryb25nPlN0YXJ0IFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9zdGFydCIgbm9yZWxhdGl2ZT0iZmFsc2UifSA8PiA8c3Ryb25nPkVuZCBUaW1lOjwvc3Ryb25nPiB7ZGF0ZXRpbWU9IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2RhdGVfZW5kIiBub3JlbGF0aXZlPSJmYWxzZSJ9CiAgICB7e2VuZGlmfX0KICAgICAgICAgICAgICAgPC9kaXY+CiAge3tlbmRpZn19CgkJCQkgICAgIDxwIGNsYXNzPSdpcHNUeXBlX3Jlc2V0IGlwc1NwYWNlcl9ib3R0b20gaXBzVHlwZV9ub3JtYWwnPgogICAgICAgICAgICAgICB7bGFuZz0ic2RuX2xnZGVzY192YWx1ZSJ9CgkJCQkgICAgPC9wPgoKCXt7aWYgc2V0dGluZ3Muc2RuX2hpZGV9fQoJe3tpZiAhc2V0dGluZ3Muc2RuX2hpZGVfZ3Vlc3RzfX0KCQkJCSAgIDxkaXYgaWQ9IlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIj4KCQkJCQkgIDxhIGNsYXNzPSJpcHNCdXR0b24gaXBzQnV0dG9uX3ZlcnlTbWFsbCBpcHNCdXR0b25faW1wb3J0YW50IGlwc0J1dHRvbl9mdWxsV2lkdGgiIGhyZWY9Int1cmw9ImFwcD1jb3JlJm1vZHVsZT1zeXN0ZW0mc2VjdGlvbj1wbHVnaW5zJmRvPVNpZGVOb3RlRGlzbWlzcyIgY3NyZj0iMSJ9IiBkYXRhLWlwc3Rvb2x0aXAgdGl0bGU9IntsYW5nPSdzZG5faGlkZV90b29sdGlwJ30iIGRhdGEtYWN0aW9uPSJkaXNtaXNzIj57bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9PC9hPgoJCQkJICAgPC9kaXY+Cgl7e2Vsc2VpZiBzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHMgYW5kICFcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+bWVtYmVyX2lkIH19CiAgICAgICAgICAgICAgICAgIDxwPiA8L3A+Cgl7e2Vsc2V9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZW5kaWZ9fQoJe3tlbmRpZn19CiAgICAgICAgICAgIDwvZGl2Pgp7e2VuZGlmfX0KCgp7e2lmICgkZW5hYmxlZCA9PSAxKSAmJiAoJFVSTGVuYWJsZWQgPT0gMSkgJiYgKCRwYWdldmlzaWJsZSA9PSAxKX19Cgk8ZGl2IGlkPSJzZG5TaWRlTm90ZSIgY2xhc3M9InRvYXN0LXN1Y2Nlc3MiIGhpZGRlbj4KCQl7bGFuZz0ic2RuX3BhZ2VfYWRkcmVzcyJ9IDxzdHJvbmc+eyRjdXJyZW50X3VybH08L3N0cm9uZz48L2JyPjxlbT57bGFuZz0ic2RuX3BhZ2VfZGlzcGxheV95ZXMifTwvZW0+Cgk8L2Rpdj4Ke3tlbHNlaWYgKCRlbmFibGVkID09IDEpICYmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDApfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtd2FybmluZyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X25vIn08L2VtPgoJPC9kaXY+Cnt7ZW5kaWZ9fQ==LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhclN0cmlwZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyU3RyaXBlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhclN0cmlwZSB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJTb2xpZCB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fc29saWRfY29sb3IifTsKCWJhY2tncm91bmQtc2l6ZTogODBweCA4MHB4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wOwoJei1pbmRleDogOTk5OTsKfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYmlnCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDcwcHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkBrZXlmcmFtZXMgcHVsc2UKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMzVweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpAa2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLlNpZGVOb3RlVGFiOmhvdmVyOmFmdGVyIHsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2hvdmVyY29sb3IifTsKfQoKCS5TaWRlTm90ZVRhYjpob3ZlciB7CgkJY3Vyc29yOiBoZWxwOwoJfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVUYWIgewoJCWxlZnQ6IDA7Cgl9CglodG1sW2Rpcj0icnRsIl0gLlNpZGVOb3RlVGFiIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZUluZm9Cb3ggewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKCWJhY2tncm91bmQ6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9jb2xvciJ9Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbiB7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9mb250aWNvbl9zaXplIn1weDsKfQoKLlNpZGVOb3RlSW5mb0JveEljb246YmVmb3JlIHsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAwLjNyZW07Cn0KCi8qIFBIT05FUyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKLlNpZGVOb3RlQmFyU3RyaXBlIHsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMDsKCXRvcDogMDsKCXdpZHRoOiA1cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX2JhY2tncm91bmRfY29sb3IifTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA1MDA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCgkuU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCAyMHB4IDIwcHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMTBweDsKCXdpZHRoOiAzNXB4OwoJaGVpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiAzMHB4OwoJei1pbmRleDogMTA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cgl9CgoKLlNpZGVOb3RlVGFiIHsKICAgIGJvcmRlci1yYWRpdXM6IDAge3NldHRpbmc9InNkbl90YWJfcmFkaXVzIn1weCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IDA7Cglwb3NpdGlvbjogZml4ZWQ7CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAndG9wJ319Cgl0b3A6IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAnYm90dG9tJ319Cglib3R0b206IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19Cgl3aWR0aDoge3NldHRpbmc9InNkbl90YWJfc2l6ZXcifXB4OwoJaGVpZ2h0OiB7c2V0dGluZz0ic2RuX3RhYl9zaXplaCJ9cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX3RhYl9jb2xvciJ9OwoJdGV4dC1zaGFkb3c6IDBweCAxcHggNHB4IHJnYmEoMTUxLCAxMTIsIDMwLCAwLjUpOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJbGluZS1oZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCXotaW5kZXg6IDk5OTg7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCi5TaWRlTm90ZVRhYjpiZWZvcmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwoJY29udGVudDogJ1x7c2V0dGluZz0ic2RuX2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwoJZm9udC1zaXplOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX3NpemUifXB4OwoJY29sb3I6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fY29sb3IifTsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMn19CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gM319CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CiAgICBhbmltYXRpb246IHB1bHNlIDFzIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMX19Cgktd2Via2l0LWFuaW1hdGlvbjogYmxpbmtlciAxcyBzdGVwLXN0YXJ0IGluZmluaXRlOwoJYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQogICB9Cn0KCi8qIFRvYXN0ciAqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6NzAwfS50b2FzdC1tZXNzYWdley1tcy13b3JkLXdyYXA6YnJlYWstd29yZDt3b3JkLXdyYXA6YnJlYWstd29yZH0udG9hc3QtbWVzc2FnZSBhLC50b2FzdC1tZXNzYWdlIGxhYmVse2NvbG9yOiNGRkZ9LnRvYXN0LW1lc3NhZ2UgYTpob3Zlcntjb2xvcjojQ0NDO3RleHQtZGVjb3JhdGlvbjpub25lfS50b2FzdC1jbG9zZS1idXR0b257cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6LS4zZW07dG9wOi0uM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojRkZGOy13ZWJraXQtdGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtsaW5lLWhlaWdodDoxfS50b2FzdC1jbG9zZS1idXR0b246Zm9jdXMsLnRvYXN0LWNsb3NlLWJ1dHRvbjpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfS5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uM2VtO2Zsb2F0OmxlZnQ7cmlnaHQ6LjNlbX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9hc3QtdG9wLWNlbnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1jZW50ZXJ7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtZnVsbC13aWR0aHt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoe2JvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtdG9wLWxlZnR7dG9wOjEycHg7bGVmdDoxMnB4fS50b2FzdC10b3AtcmlnaHR7dG9wOjEycHg7cmlnaHQ6MTJweH0udG9hc3QtYm90dG9tLXJpZ2h0e3JpZ2h0OjEycHg7Ym90dG9tOjEycHh9LnRvYXN0LWJvdHRvbS1sZWZ0e2JvdHRvbToxMnB4O2xlZnQ6MTJweH0jdG9hc3QtY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5OTk5O3BvaW50ZXItZXZlbnRzOm5vbmV9I3RvYXN0LWNvbnRhaW5lciAqey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdG9hc3QtY29udGFpbmVyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtwb2ludGVyLWV2ZW50czphdXRvO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjojRkZGO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtkaXJlY3Rpb246cnRsO3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDE1cHggY2VudGVyfSN0b2FzdC1jb250YWluZXI+ZGl2OmhvdmVyey1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjMDAwOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjMDAwO2JveC1zaGFkb3c6MCAwIDEycHggIzAwMDtvcGFjaXR5OjE7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7Y3Vyc29yOnBvaW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtZXJyb3J7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtd2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyPmRpdnt3aWR0aDozMDBweDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2e3dpZHRoOjk2JTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFBMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNCRDM2MkZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMkY5NkI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I0Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxMWVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6MjQxcHgpIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjhweCA4cHggOHB4IDUwcHg7d2lkdGg6MThlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzo4cHggNTBweCA4cHggOHB4fSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotLjJlbTt0b3A6LS4yZW19I3RvYXN0LWNvbnRhaW5lciAucnRsIC50b2FzdC1jbG9zZS1idXR0b257bGVmdDotLjJlbTtyaWdodDouMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweH19CgovKiBUb2FzdHIgQ3VzdG9tIE92ZXJyaWRlcyovCgoudG9hc3Qtc3VjY2VzcyB7Cglmb250LXNpemU6IDE2cHg7Cn0KCi50b2FzdC13YXJuaW5nIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIHsKCWJvdHRvbTowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiB7c2V0dGluZz0ic2RuX3RvYXN0cl9zaXpldyJ9JTsKfQoKLnRvYXN0LXRvcC1mdWxsLXdpZHRoIHsKCXRvcDowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiA5MCU7Cn0KCiN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2IHsKICAgd2lkdGg6IDk2JTsKICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQ==OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7CgoJJChmdW5jdGlvbiAoKSB7CgkJdG9hc3RyLm9wdGlvbnMgPSB7CgkJCQkiY2xvc2VCdXR0b24iOiBmYWxzZSwKCQkJCSJkZWJ1ZyI6IGZhbHNlLAoJCQkJIm5ld2VzdE9uVG9wIjogZmFsc2UsCgkJCQkicHJvZ3Jlc3NCYXIiOiB0cnVlLAoJCQkJInBvc2l0aW9uQ2xhc3MiOiAidG9hc3QtYm90dG9tLWZ1bGwtd2lkdGgiLAoJCQkJInByZXZlbnREdXBsaWNhdGVzIjogZmFsc2UsCgkJCQkib25jbGljayI6IG51bGwsCgkJCQkic2hvd0R1cmF0aW9uIjogIjMwMCIsCgkJCQkiaGlkZUR1cmF0aW9uIjogIjEwMDAiLAoJCQkJInRpbWVPdXQiOiAiNjAwMCIsCgkJCQkiZXh0ZW5kZWRUaW1lT3V0IjogIjEwMDAiLAoJCQkJInNob3dFYXNpbmciOiAic3dpbmciLAoJCQkJImhpZGVFYXNpbmciOiAibGluZWFyIiwKCQkJCSJzaG93TWV0aG9kIjogImZhZGVJbiIsCgkJCQkiaGlkZU1ldGhvZCI6ICJmYWRlT3V0IgoJCX07CgoJCWxldCB2aXNpYmxlTWVzc2FnZSA9ICQoIi50b2FzdC1zdWNjZXNzIikuaHRtbCgpOwoJCQkJaWYgKHZpc2libGVNZXNzYWdlICYmIHZpc2libGVNZXNzYWdlLmxlbmd0aCA+IDApIHsKICAJCQkJdG9hc3RyLnN1Y2Nlc3ModmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICAJCQkJY29udGFpbmVySWQ6ICJ0b2FzdC1jb250YWluZXIiLAogCQkgfSk7CiAgfQoKCQlsZXQgaW52aXNpYmxlTWVzc2FnZSA9ICQoIi50b2FzdC13YXJuaW5nIikuaHRtbCgpOwoJCQkJaWYgKGludmlzaWJsZU1lc3NhZ2UgJiYgaW52aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgCQkJCXRvYXN0ci53YXJuaW5nKGludmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICAJCQkJY29udGFpbmVySWQ6ICJ0b2FzdC1jb250YWluZXIiCgkJCX0pOwogIH0KfSk7KGpRdWVyeSwgXyk7SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypeAdmin NotificationsPage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsOnly groups with staff status and ACP access should be able to see these notifications. Preferably Admins onlyCurrent page addressSideNote will display on this pageSideNote will not display on this pageToastr ConfigurationToastr WidthToastr Width in Percentage, default is100% SideNote ContentMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentStart DateEnd DateSideNote InfoBoxEnable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Descriptive text, keep it short for best displayingShow the Start and End TimesSideNote CustomizeSideNote BarSideNote TabAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Solid ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabSide Bar StyleStripedSolidImageImageTab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
sdn_enabled0sdn_titlesdn_lgdescsdn_stdescsdn_fonticonf071sdn_background_color#FFFsdn_stripe_color#f4b738sdn_sidebar_width10sdn_fonticon_size25sdn_fonticon_color#FFFFFFsdn_fonticon_hovercolor#bbb6b6sdn_groupssdn_hide0sdn_date_startsdn_date_endsdn_modal_sizemediumsdn_infobox_enabled0sdn_infobox_contentsdn_infobox_fonticonf05asdn_infobox_fonticon_size15sdn_infobox_color#326196sdn_infobox_showtime0sdn_sidebar_hide0sdn_tab_color#f4b738sdn_tab_sizew60sdn_tab_sizeh50sdn_tab_radius30sdn_tab_positionbottomsdn_tab_window10sdn_configure_pages_type0sdn_configure_pages_listsdn_hide_guests0sdn_notfication_groups4sdn_notfication_enabled0sdn_icon_animation0sdn_bar_style0sdn_solid_colorsdn_image_backsdn_enabled0sdn_titlesdn_lgdescsdn_stdescsdn_fonticonf071sdn_background_color#FFFsdn_stripe_color#f4b738sdn_sidebar_width10sdn_fonticon_size25sdn_fonticon_color#FFFFFFsdn_fonticon_hovercolor#bbb6b6sdn_groupssdn_hide0sdn_date_startsdn_date_endsdn_modal_sizemediumsdn_infobox_enabled0sdn_infobox_contentsdn_infobox_fonticonf05asdn_infobox_fonticon_size15sdn_infobox_color#326196sdn_infobox_showtime0sdn_sidebar_hide0sdn_tab_color#f4b738sdn_tab_sizew60sdn_tab_sizeh50sdn_tab_radius30sdn_tab_positionbottomsdn_tab_window10sdn_configure_pages_type0sdn_configure_pages_listsdn_hide_guests0sdn_notfication_groups4sdn_notfication_enabled0sdn_icon_animation0sdn_bar_style0sdn_solid_colorsdn_image_backsdn_toastr_sizew100addTab('sdn_configure'); $form->addHeader('sdn_configure'); @@ -162,9 +162,14 @@ $form->add( new \IPS\Helpers\Form\Select( 'sdn_configure_pages_type', \IPS\Setti 'multiple' => FALSE) ) ); $form->add( new \IPS\Helpers\Form\TextArea( 'sdn_configure_pages_list', \IPS\Settings::i()->sdn_configure_pages_list, FALSE, array(), NULL, NULL, NULL, 'sdn_configure_pages_list') ); +$form->addTab('sdn_notifications'); $form->addHeader('sdn_header_notfication'); +$form->addSeparator(); $form->add( new \IPS\Helpers\Form\YesNo( 'sdn_notfication_enabled', \IPS\Settings::i()->sdn_notfication_enabled, FALSE, array(), NULL, NULL, NULL, 'sdn_notfication_enabled') ); $form->add( new \IPS\Helpers\Form\Select( 'sdn_notfication_groups', explode( ',' , \IPS\Settings::i()->sdn_notfication_groups ), FALSE, array( 'options' => \IPS\Member\Group::groups(TRUE, FALSE), 'parse' => 'normal', 'multiple' => TRUE ), NULL, NULL, NULL, 'sdn_notfication_groups' ) ); +$form->addHeader('sdn_header_toastr'); +$form->addSeparator(); +$form->add( new \IPS\Helpers\Form\Number( 'sdn_toastr_sizew', \IPS\Settings::i()->sdn_toastr_sizew, FALSE, array(), NULL, NULL, NULL, 'sdn_toastr_sizew' ) ); $form->addTab('sdn_content'); $form->addHeader( 'sdn_content' ); @@ -246,7 +251,7 @@ if ( $values = $form->values() ) return TRUE; } -return $form;]]>PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSd7e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMH19U2lkZU5vdGVCYXJTdHJpcGV7e2VuZGlmfX17e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMX19U2lkZU5vdGVCYXJTb2xpZHt7ZW5kaWZ9fSc+PC9kaXY+CiAgICB7e2VuZGlmfX0KCQkJICAgIDxkaXYgaWQ9J2VsU05NRGlhbG9nJyBjbGFzcz0naXBzSGlkZSBpcHNQYWQnPgogICAge3tpZiBzZXR0aW5ncy5zZG5faW5mb2JveF9lbmFibGVkfX0KCSAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdpcHNNZXNzYWdlIFNpZGVOb3RlSW5mb0JveCc+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlNpZGVOb3RlSW5mb0JveEljb24iPntleHByZXNzaW9uPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9pbmZvYm94X2NvbnRlbnQifSA8L3NwYW4+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X3Nob3d0aW1lID09IDF9fQogICAgICAgICAgICAgICAgICAgIDxicj48c3Ryb25nPlN0YXJ0IFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9zdGFydCIgbm9yZWxhdGl2ZT0iZmFsc2UifSA8PiA8c3Ryb25nPkVuZCBUaW1lOjwvc3Ryb25nPiB7ZGF0ZXRpbWU9IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2RhdGVfZW5kIiBub3JlbGF0aXZlPSJmYWxzZSJ9CiAgICB7e2VuZGlmfX0KICAgICAgICAgICAgICAgPC9kaXY+CiAge3tlbmRpZn19CgkJCQkgICAgIDxwIGNsYXNzPSdpcHNUeXBlX3Jlc2V0IGlwc1NwYWNlcl9ib3R0b20gaXBzVHlwZV9ub3JtYWwnPgogICAgICAgICAgICAgICB7bGFuZz0ic2RuX2xnZGVzY192YWx1ZSJ9CgkJCQkgICAgPC9wPgoKCXt7aWYgc2V0dGluZ3Muc2RuX2hpZGV9fQoJe3tpZiAhc2V0dGluZ3Muc2RuX2hpZGVfZ3Vlc3RzfX0KCQkJCSAgIDxkaXYgaWQ9IlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIj4KCQkJCQkgIDxhIGNsYXNzPSJpcHNCdXR0b24gaXBzQnV0dG9uX3ZlcnlTbWFsbCBpcHNCdXR0b25faW1wb3J0YW50IGlwc0J1dHRvbl9mdWxsV2lkdGgiIGhyZWY9Int1cmw9ImFwcD1jb3JlJm1vZHVsZT1zeXN0ZW0mc2VjdGlvbj1wbHVnaW5zJmRvPVNpZGVOb3RlRGlzbWlzcyIgY3NyZj0iMSJ9IiBkYXRhLWlwc3Rvb2x0aXAgdGl0bGU9IntsYW5nPSdzZG5faGlkZV90b29sdGlwJ30iIGRhdGEtYWN0aW9uPSJkaXNtaXNzIj57bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9PC9hPgoJCQkJICAgPC9kaXY+Cgl7e2Vsc2VpZiBzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHMgYW5kICFcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+bWVtYmVyX2lkIH19CiAgICAgICAgICAgICAgICAgIDxwPiA8L3A+Cgl7e2Vsc2V9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZW5kaWZ9fQoJe3tlbmRpZn19CiAgICAgICAgICAgIDwvZGl2Pgp7e2VuZGlmfX0KCgp7e2lmICgkZW5hYmxlZCA9PSAxKSAmJiAoJFVSTGVuYWJsZWQgPT0gMSkgJiYgKCRwYWdldmlzaWJsZSA9PSAxKX19Cgk8ZGl2IGlkPSJzZG5TaWRlTm90ZSIgY2xhc3M9InRvYXN0LXN1Y2Nlc3MiIGhpZGRlbj4KCQl7bGFuZz0ic2RuX3BhZ2VfYWRkcmVzcyJ9IDxzdHJvbmc+eyRjdXJyZW50X3VybH08L3N0cm9uZz48L2JyPjxlbT57bGFuZz0ic2RuX3BhZ2VfZGlzcGxheV95ZXMifTwvZW0+Cgk8L2Rpdj4Ke3tlbHNlaWYgKCRlbmFibGVkID09IDEpICYmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDApfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtd2FybmluZyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X25vIn08L2VtPgoJPC9kaXY+Cnt7ZW5kaWZ9fQ==LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhclN0cmlwZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyU3RyaXBlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhclN0cmlwZSB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJTb2xpZCB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fc29saWRfY29sb3IifTsKCWJhY2tncm91bmQtc2l6ZTogODBweCA4MHB4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wOwoJei1pbmRleDogOTk5OTsKfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYmlnCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDcwcHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkBrZXlmcmFtZXMgcHVsc2UKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMzVweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpAa2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLlNpZGVOb3RlVGFiOmhvdmVyOmFmdGVyIHsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2hvdmVyY29sb3IifTsKfQoKCS5TaWRlTm90ZVRhYjpob3ZlciB7CgkJY3Vyc29yOiBoZWxwOwoJfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVUYWIgewoJCWxlZnQ6IDA7Cgl9CglodG1sW2Rpcj0icnRsIl0gLlNpZGVOb3RlVGFiIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZUluZm9Cb3ggewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKCWJhY2tncm91bmQ6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9jb2xvciJ9Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbiB7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9mb250aWNvbl9zaXplIn1weDsKfQoKLlNpZGVOb3RlSW5mb0JveEljb246YmVmb3JlIHsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAwLjNyZW07Cn0KCi8qIFBIT05FUyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKLlNpZGVOb3RlQmFyU3RyaXBlIHsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMDsKCXRvcDogMDsKCXdpZHRoOiA1cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX2JhY2tncm91bmRfY29sb3IifTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA1MDA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCgkuU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCAyMHB4IDIwcHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMTBweDsKCXdpZHRoOiAzNXB4OwoJaGVpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiAzMHB4OwoJei1pbmRleDogMTA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cgl9CgouU2lkZU5vdGVUYWI6YWZ0ZXIgewoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9mb250aWNvbl9ibGlua319CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fZm9udGljb25fc3Bpbn19CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBpbmZpbml0ZSBsaW5lYXI7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyOwoJCXt7ZW5kaWZ9fQogICB9Cn0KCi8qIFRvYXN0ciAqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6NzAwfS50b2FzdC1tZXNzYWdley1tcy13b3JkLXdyYXA6YnJlYWstd29yZDt3b3JkLXdyYXA6YnJlYWstd29yZH0udG9hc3QtbWVzc2FnZSBhLC50b2FzdC1tZXNzYWdlIGxhYmVse2NvbG9yOiNGRkZ9LnRvYXN0LW1lc3NhZ2UgYTpob3Zlcntjb2xvcjojQ0NDO3RleHQtZGVjb3JhdGlvbjpub25lfS50b2FzdC1jbG9zZS1idXR0b257cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6LS4zZW07dG9wOi0uM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojRkZGOy13ZWJraXQtdGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtsaW5lLWhlaWdodDoxfS50b2FzdC1jbG9zZS1idXR0b246Zm9jdXMsLnRvYXN0LWNsb3NlLWJ1dHRvbjpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfS5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uM2VtO2Zsb2F0OmxlZnQ7cmlnaHQ6LjNlbX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9hc3QtdG9wLWNlbnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1jZW50ZXJ7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtZnVsbC13aWR0aHt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoe2JvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtdG9wLWxlZnR7dG9wOjEycHg7bGVmdDoxMnB4fS50b2FzdC10b3AtcmlnaHR7dG9wOjEycHg7cmlnaHQ6MTJweH0udG9hc3QtYm90dG9tLXJpZ2h0e3JpZ2h0OjEycHg7Ym90dG9tOjEycHh9LnRvYXN0LWJvdHRvbS1sZWZ0e2JvdHRvbToxMnB4O2xlZnQ6MTJweH0jdG9hc3QtY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5OTk5O3BvaW50ZXItZXZlbnRzOm5vbmV9I3RvYXN0LWNvbnRhaW5lciAqey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdG9hc3QtY29udGFpbmVyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtwb2ludGVyLWV2ZW50czphdXRvO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjojRkZGO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtkaXJlY3Rpb246cnRsO3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDE1cHggY2VudGVyfSN0b2FzdC1jb250YWluZXI+ZGl2OmhvdmVyey1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjMDAwOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjMDAwO2JveC1zaGFkb3c6MCAwIDEycHggIzAwMDtvcGFjaXR5OjE7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7Y3Vyc29yOnBvaW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtZXJyb3J7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtd2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyPmRpdnt3aWR0aDozMDBweDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2e3dpZHRoOjk2JTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFBMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNCRDM2MkZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMkY5NkI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I0Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxMWVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6MjQxcHgpIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjhweCA4cHggOHB4IDUwcHg7d2lkdGg6MThlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzo4cHggNTBweCA4cHggOHB4fSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotLjJlbTt0b3A6LS4yZW19I3RvYXN0LWNvbnRhaW5lciAucnRsIC50b2FzdC1jbG9zZS1idXR0b257bGVmdDotLjJlbTtyaWdodDouMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweH19CgoudG9hc3Qtc3VjY2VzcyB7Cglmb250LXNpemU6IDE2cHg7Cn0KCi50b2FzdC13YXJuaW5nIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLyogVG9hc3RyIE92ZXJpZGVzICovCgoudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGggewoJYm90dG9tOjA7CiAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICB3aWR0aDogOTAlOwp9CgoudG9hc3QtdG9wLWZ1bGwtd2lkdGggewoJdG9wOjA7CiAgICBtYXJnaW46IGF1dG87CiAgICB3aWR0aDogOTAlOwp9CgojdG9hc3QtY29udGFpbmVyLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoPmRpdiwjdG9hc3QtY29udGFpbmVyLnRvYXN0LXRvcC1mdWxsLXdpZHRoPmRpdiB7CiAgIHdpZHRoOiA5NiU7CiAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0=OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7CgoJJChmdW5jdGlvbiAoKSB7CgkJdG9hc3RyLm9wdGlvbnMgPSB7CgkJCQkiY2xvc2VCdXR0b24iOiBmYWxzZSwKCQkJCSJkZWJ1ZyI6IGZhbHNlLAoJCQkJIm5ld2VzdE9uVG9wIjogZmFsc2UsCgkJCQkicHJvZ3Jlc3NCYXIiOiB0cnVlLAoJCQkJInBvc2l0aW9uQ2xhc3MiOiAidG9hc3QtYm90dG9tLWZ1bGwtd2lkdGgiLAoJCQkJInByZXZlbnREdXBsaWNhdGVzIjogZmFsc2UsCgkJCQkib25jbGljayI6IG51bGwsCgkJCQkic2hvd0R1cmF0aW9uIjogIjMwMCIsCgkJCQkiaGlkZUR1cmF0aW9uIjogIjEwMDAiLAoJCQkJInRpbWVPdXQiOiAiNjAwMCIsCgkJCQkiZXh0ZW5kZWRUaW1lT3V0IjogIjEwMDAiLAoJCQkJInNob3dFYXNpbmciOiAic3dpbmciLAoJCQkJImhpZGVFYXNpbmciOiAibGluZWFyIiwKCQkJCSJzaG93TWV0aG9kIjogImZhZGVJbiIsCgkJCQkiaGlkZU1ldGhvZCI6ICJmYWRlT3V0IgoJCX07CgoJCWxldCB2aXNpYmxlTWVzc2FnZSA9ICQoIi50b2FzdC1zdWNjZXNzIikuaHRtbCgpOwoJCQkJaWYgKHZpc2libGVNZXNzYWdlICYmIHZpc2libGVNZXNzYWdlLmxlbmd0aCA+IDApIHsKICAJCQkJdG9hc3RyLnN1Y2Nlc3ModmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICAJCQkJY29udGFpbmVySWQ6ICJ0b2FzdC1jb250YWluZXIiLAogCQkgfSk7CiAgfQoKCQlsZXQgaW52aXNpYmxlTWVzc2FnZSA9ICQoIi50b2FzdC13YXJuaW5nIikuaHRtbCgpOwoJCQkJaWYgKGludmlzaWJsZU1lc3NhZ2UgJiYgaW52aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgCQkJCXRvYXN0ci53YXJuaW5nKGludmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICAJCQkJY29udGFpbmVySWQ6ICJ0b2FzdC1jb250YWluZXIiCgkJCX0pOwogIH0KfSk7KGpRdWVyeSwgXyk7SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypePage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsCurrent page addressSideNote will display on this pageSideNote will not display on this pageSideNote ContentMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentStart DateEnd DateSideNote InfoBoxEnable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Descriptive text, keep it short for best displayingShow the Start and End TimesSideNote CustomizeSideNote BarSideNote TabAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Solid ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabSide Bar StyleStripedSolidImageImageTab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSd7e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMH19U2lkZU5vdGVCYXJTdHJpcGV7e2VuZGlmfX17e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMX19U2lkZU5vdGVCYXJTb2xpZHt7ZW5kaWZ9fSc+PC9kaXY+CiAgICB7e2VuZGlmfX0KCQkJICAgIDxkaXYgaWQ9J2VsU05NRGlhbG9nJyBjbGFzcz0naXBzSGlkZSBpcHNQYWQnPgogICAge3tpZiBzZXR0aW5ncy5zZG5faW5mb2JveF9lbmFibGVkfX0KCSAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdpcHNNZXNzYWdlIFNpZGVOb3RlSW5mb0JveCc+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlNpZGVOb3RlSW5mb0JveEljb24iPntleHByZXNzaW9uPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9pbmZvYm94X2NvbnRlbnQifSA8L3NwYW4+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X3Nob3d0aW1lID09IDF9fQogICAgICAgICAgICAgICAgICAgIDxicj48c3Ryb25nPlN0YXJ0IFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9zdGFydCIgbm9yZWxhdGl2ZT0iZmFsc2UifSA8PiA8c3Ryb25nPkVuZCBUaW1lOjwvc3Ryb25nPiB7ZGF0ZXRpbWU9IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2RhdGVfZW5kIiBub3JlbGF0aXZlPSJmYWxzZSJ9CiAgICB7e2VuZGlmfX0KICAgICAgICAgICAgICAgPC9kaXY+CiAge3tlbmRpZn19CgkJCQkgICAgIDxwIGNsYXNzPSdpcHNUeXBlX3Jlc2V0IGlwc1NwYWNlcl9ib3R0b20gaXBzVHlwZV9ub3JtYWwnPgogICAgICAgICAgICAgICB7bGFuZz0ic2RuX2xnZGVzY192YWx1ZSJ9CgkJCQkgICAgPC9wPgoKCXt7aWYgc2V0dGluZ3Muc2RuX2hpZGV9fQoJe3tpZiAhc2V0dGluZ3Muc2RuX2hpZGVfZ3Vlc3RzfX0KCQkJCSAgIDxkaXYgaWQ9IlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIj4KCQkJCQkgIDxhIGNsYXNzPSJpcHNCdXR0b24gaXBzQnV0dG9uX3ZlcnlTbWFsbCBpcHNCdXR0b25faW1wb3J0YW50IGlwc0J1dHRvbl9mdWxsV2lkdGgiIGhyZWY9Int1cmw9ImFwcD1jb3JlJm1vZHVsZT1zeXN0ZW0mc2VjdGlvbj1wbHVnaW5zJmRvPVNpZGVOb3RlRGlzbWlzcyIgY3NyZj0iMSJ9IiBkYXRhLWlwc3Rvb2x0aXAgdGl0bGU9IntsYW5nPSdzZG5faGlkZV90b29sdGlwJ30iIGRhdGEtYWN0aW9uPSJkaXNtaXNzIj57bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9PC9hPgoJCQkJICAgPC9kaXY+Cgl7e2Vsc2VpZiBzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHMgYW5kICFcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+bWVtYmVyX2lkIH19CiAgICAgICAgICAgICAgICAgIDxwPiA8L3A+Cgl7e2Vsc2V9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZW5kaWZ9fQoJe3tlbmRpZn19CiAgICAgICAgICAgIDwvZGl2Pgp7e2VuZGlmfX0KCgp7e2lmICgkZW5hYmxlZCA9PSAxKSAmJiAoJFVSTGVuYWJsZWQgPT0gMSkgJiYgKCRwYWdldmlzaWJsZSA9PSAxKX19Cgk8ZGl2IGlkPSJzZG5TaWRlTm90ZSIgY2xhc3M9InRvYXN0LXN1Y2Nlc3MiIGhpZGRlbj4KCQl7bGFuZz0ic2RuX3BhZ2VfYWRkcmVzcyJ9IDxzdHJvbmc+eyRjdXJyZW50X3VybH08L3N0cm9uZz48L2JyPjxlbT57bGFuZz0ic2RuX3BhZ2VfZGlzcGxheV95ZXMifTwvZW0+Cgk8L2Rpdj4Ke3tlbHNlaWYgKCRlbmFibGVkID09IDEpICYmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDApfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtd2FybmluZyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X25vIn08L2VtPgoJPC9kaXY+Cnt7ZW5kaWZ9fQ==LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhclN0cmlwZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyU3RyaXBlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhclN0cmlwZSB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJTb2xpZCB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fc29saWRfY29sb3IifTsKCWJhY2tncm91bmQtc2l6ZTogODBweCA4MHB4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wOwoJei1pbmRleDogOTk5OTsKfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYmlnCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDcwcHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkBrZXlmcmFtZXMgcHVsc2UKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMzVweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpAa2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLlNpZGVOb3RlVGFiOmhvdmVyOmFmdGVyIHsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2hvdmVyY29sb3IifTsKfQoKCS5TaWRlTm90ZVRhYjpob3ZlciB7CgkJY3Vyc29yOiBoZWxwOwoJfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVUYWIgewoJCWxlZnQ6IDA7Cgl9CglodG1sW2Rpcj0icnRsIl0gLlNpZGVOb3RlVGFiIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZUluZm9Cb3ggewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKCWJhY2tncm91bmQ6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9jb2xvciJ9Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbiB7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9mb250aWNvbl9zaXplIn1weDsKfQoKLlNpZGVOb3RlSW5mb0JveEljb246YmVmb3JlIHsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAwLjNyZW07Cn0KCi8qIFBIT05FUyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKLlNpZGVOb3RlQmFyU3RyaXBlIHsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMDsKCXRvcDogMDsKCXdpZHRoOiA1cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX2JhY2tncm91bmRfY29sb3IifTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA1MDA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCgkuU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCAyMHB4IDIwcHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMTBweDsKCXdpZHRoOiAzNXB4OwoJaGVpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiAzMHB4OwoJei1pbmRleDogMTA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cgl9CgoKLlNpZGVOb3RlVGFiIHsKICAgIGJvcmRlci1yYWRpdXM6IDAge3NldHRpbmc9InNkbl90YWJfcmFkaXVzIn1weCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IDA7Cglwb3NpdGlvbjogZml4ZWQ7CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAndG9wJ319Cgl0b3A6IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAnYm90dG9tJ319Cglib3R0b206IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19Cgl3aWR0aDoge3NldHRpbmc9InNkbl90YWJfc2l6ZXcifXB4OwoJaGVpZ2h0OiB7c2V0dGluZz0ic2RuX3RhYl9zaXplaCJ9cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX3RhYl9jb2xvciJ9OwoJdGV4dC1zaGFkb3c6IDBweCAxcHggNHB4IHJnYmEoMTUxLCAxMTIsIDMwLCAwLjUpOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJbGluZS1oZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCXotaW5kZXg6IDk5OTg7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCi5TaWRlTm90ZVRhYjpiZWZvcmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwoJY29udGVudDogJ1x7c2V0dGluZz0ic2RuX2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwoJZm9udC1zaXplOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX3NpemUifXB4OwoJY29sb3I6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fY29sb3IifTsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMn19CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gM319CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CiAgICBhbmltYXRpb246IHB1bHNlIDFzIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMX19Cgktd2Via2l0LWFuaW1hdGlvbjogYmxpbmtlciAxcyBzdGVwLXN0YXJ0IGluZmluaXRlOwoJYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQogICB9Cn0KCi8qIFRvYXN0ciAqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6NzAwfS50b2FzdC1tZXNzYWdley1tcy13b3JkLXdyYXA6YnJlYWstd29yZDt3b3JkLXdyYXA6YnJlYWstd29yZH0udG9hc3QtbWVzc2FnZSBhLC50b2FzdC1tZXNzYWdlIGxhYmVse2NvbG9yOiNGRkZ9LnRvYXN0LW1lc3NhZ2UgYTpob3Zlcntjb2xvcjojQ0NDO3RleHQtZGVjb3JhdGlvbjpub25lfS50b2FzdC1jbG9zZS1idXR0b257cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6LS4zZW07dG9wOi0uM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojRkZGOy13ZWJraXQtdGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtsaW5lLWhlaWdodDoxfS50b2FzdC1jbG9zZS1idXR0b246Zm9jdXMsLnRvYXN0LWNsb3NlLWJ1dHRvbjpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfS5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uM2VtO2Zsb2F0OmxlZnQ7cmlnaHQ6LjNlbX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9hc3QtdG9wLWNlbnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1jZW50ZXJ7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtZnVsbC13aWR0aHt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoe2JvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtdG9wLWxlZnR7dG9wOjEycHg7bGVmdDoxMnB4fS50b2FzdC10b3AtcmlnaHR7dG9wOjEycHg7cmlnaHQ6MTJweH0udG9hc3QtYm90dG9tLXJpZ2h0e3JpZ2h0OjEycHg7Ym90dG9tOjEycHh9LnRvYXN0LWJvdHRvbS1sZWZ0e2JvdHRvbToxMnB4O2xlZnQ6MTJweH0jdG9hc3QtY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5OTk5O3BvaW50ZXItZXZlbnRzOm5vbmV9I3RvYXN0LWNvbnRhaW5lciAqey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdG9hc3QtY29udGFpbmVyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtwb2ludGVyLWV2ZW50czphdXRvO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjojRkZGO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtkaXJlY3Rpb246cnRsO3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDE1cHggY2VudGVyfSN0b2FzdC1jb250YWluZXI+ZGl2OmhvdmVyey1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjMDAwOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjMDAwO2JveC1zaGFkb3c6MCAwIDEycHggIzAwMDtvcGFjaXR5OjE7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7Y3Vyc29yOnBvaW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtZXJyb3J7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtd2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyPmRpdnt3aWR0aDozMDBweDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2e3dpZHRoOjk2JTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFBMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNCRDM2MkZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMkY5NkI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I0Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxMWVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6MjQxcHgpIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjhweCA4cHggOHB4IDUwcHg7d2lkdGg6MThlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzo4cHggNTBweCA4cHggOHB4fSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotLjJlbTt0b3A6LS4yZW19I3RvYXN0LWNvbnRhaW5lciAucnRsIC50b2FzdC1jbG9zZS1idXR0b257bGVmdDotLjJlbTtyaWdodDouMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweH19CgovKiBUb2FzdHIgQ3VzdG9tIE92ZXJyaWRlcyovCgoudG9hc3Qtc3VjY2VzcyB7Cglmb250LXNpemU6IDE2cHg7Cn0KCi50b2FzdC13YXJuaW5nIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIHsKCWJvdHRvbTowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiB7c2V0dGluZz0ic2RuX3RvYXN0cl9zaXpldyJ9JTsKfQoKLnRvYXN0LXRvcC1mdWxsLXdpZHRoIHsKCXRvcDowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiA5MCU7Cn0KCiN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2IHsKICAgd2lkdGg6IDk2JTsKICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQ==OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7CgoJJChmdW5jdGlvbiAoKSB7CgkJdG9hc3RyLm9wdGlvbnMgPSB7CgkJCQkiY2xvc2VCdXR0b24iOiBmYWxzZSwKCQkJCSJkZWJ1ZyI6IGZhbHNlLAoJCQkJIm5ld2VzdE9uVG9wIjogZmFsc2UsCgkJCQkicHJvZ3Jlc3NCYXIiOiB0cnVlLAoJCQkJInBvc2l0aW9uQ2xhc3MiOiAidG9hc3QtYm90dG9tLWZ1bGwtd2lkdGgiLAoJCQkJInByZXZlbnREdXBsaWNhdGVzIjogZmFsc2UsCgkJCQkib25jbGljayI6IG51bGwsCgkJCQkic2hvd0R1cmF0aW9uIjogIjMwMCIsCgkJCQkiaGlkZUR1cmF0aW9uIjogIjEwMDAiLAoJCQkJInRpbWVPdXQiOiAiNjAwMCIsCgkJCQkiZXh0ZW5kZWRUaW1lT3V0IjogIjEwMDAiLAoJCQkJInNob3dFYXNpbmciOiAic3dpbmciLAoJCQkJImhpZGVFYXNpbmciOiAibGluZWFyIiwKCQkJCSJzaG93TWV0aG9kIjogImZhZGVJbiIsCgkJCQkiaGlkZU1ldGhvZCI6ICJmYWRlT3V0IgoJCX07CgoJCWxldCB2aXNpYmxlTWVzc2FnZSA9ICQoIi50b2FzdC1zdWNjZXNzIikuaHRtbCgpOwoJCQkJaWYgKHZpc2libGVNZXNzYWdlICYmIHZpc2libGVNZXNzYWdlLmxlbmd0aCA+IDApIHsKICAJCQkJdG9hc3RyLnN1Y2Nlc3ModmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICAJCQkJY29udGFpbmVySWQ6ICJ0b2FzdC1jb250YWluZXIiLAogCQkgfSk7CiAgfQoKCQlsZXQgaW52aXNpYmxlTWVzc2FnZSA9ICQoIi50b2FzdC13YXJuaW5nIikuaHRtbCgpOwoJCQkJaWYgKGludmlzaWJsZU1lc3NhZ2UgJiYgaW52aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgCQkJCXRvYXN0ci53YXJuaW5nKGludmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICAJCQkJY29udGFpbmVySWQ6ICJ0b2FzdC1jb250YWluZXIiCgkJCX0pOwogIH0KfSk7KGpRdWVyeSwgXyk7SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypeAdmin NotificationsPage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsOnly groups with staff status and ACP access should be able to see these notifications. Preferably Admins onlyCurrent page addressSideNote will display on this pageSideNote will not display on this pageToastr ConfigurationToastr WidthToastr Width in Percentage, default is100% SideNote ContentMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentStart DateEnd DateSideNote InfoBoxEnable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Descriptive text, keep it short for best displayingShow the Start and End TimesSideNote CustomizeSideNote BarSideNote TabAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Solid ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabSide Bar StyleStripedSolidImageImageTab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
Date: Sat, 20 Apr 2019 03:22:51 -0400 Subject: [PATCH 16/23] dev 1.0.2 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bf3c2a2..07a9d90 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ ![devCUHead](https://www.devcu.net/mediasrc/githubhead_2.gif?V=1.4) [![License](https://img.shields.io/badge/License-GNUv3-blue.svg)](https://github.com/devCU/IPS-SideNote/blob/master/LICENSE) -[![Version](https://img.shields.io/badge/Version-1.0.1-ff69b4.svg)](https://www.devcu.com/forums/devcu-tracker/) +[![Version](https://img.shields.io/badge/Version-1.0.2-ff69b4.svg)](https://www.devcu.com/forums/devcu-tracker/) [![Build](https://img.shields.io/badge/Build-Stable-blueviolet.svg)](https://www.devcu.com/forums/devcu-tracker/) [![Status](https://img.shields.io/badge/Status-Release-critical.svg)](https://www.devcu.com/forums/devcu-tracker/) [![Development](https://img.shields.io/badge/Development-Active-success.svg)](https://www.devcu.com/forums/devcu-tracker/) @@ -24,7 +24,7 @@ \ | \ . \ ; | Open Source Projects || ; / . / | / '\_\ \\ \ \ \ | ||/ / / // /_/' \\ \ \ \| IPS SideNote |/ / / // - `'-\_\_\ v 1.0.1 /_/_/-'` + `'-\_\_\ v 1.0.2 /_/_/-'` '--------------------------' From 145195779e7c08f8a05db81efab944cbead20d9a Mon Sep 17 00:00:00 2001 From: GaalexxC Date: Sat, 20 Apr 2019 05:54:22 -0400 Subject: [PATCH 17/23] dev 1.0.2 --- src/IPS4.3/SideNote.xml | 51 ++++++++++++++++++++++++++++++----------- src/IPS4.4/SideNote.xml | 51 ++++++++++++++++++++++++++++++----------- 2 files changed, 74 insertions(+), 28 deletions(-) diff --git a/src/IPS4.3/SideNote.xml b/src/IPS4.3/SideNote.xml index fd582c0..dde0303 100644 --- a/src/IPS4.3/SideNote.xml +++ b/src/IPS4.3/SideNote.xml @@ -132,7 +132,7 @@ public function SideNoteDismiss() } } -}]]>sdn_enabled0sdn_titlesdn_lgdescsdn_stdescsdn_fonticonf071sdn_background_color#FFFsdn_stripe_color#f4b738sdn_sidebar_width10sdn_fonticon_size25sdn_fonticon_color#FFFFFFsdn_fonticon_hovercolor#bbb6b6sdn_groupssdn_hide0sdn_date_startsdn_date_endsdn_modal_sizemediumsdn_infobox_enabled0sdn_infobox_contentsdn_infobox_fonticonf05asdn_infobox_fonticon_size15sdn_infobox_color#326196sdn_infobox_showtime0sdn_sidebar_hide0sdn_tab_color#f4b738sdn_tab_sizew60sdn_tab_sizeh50sdn_tab_radius30sdn_tab_positionbottomsdn_tab_window10sdn_configure_pages_type0sdn_configure_pages_listsdn_hide_guests0sdn_notfication_groups4sdn_notfication_enabled0sdn_icon_animation0sdn_bar_style0sdn_solid_colorsdn_image_backsdn_toastr_sizew100sdn_enabled0sdn_titlesdn_lgdescsdn_stdescsdn_fonticonf071sdn_background_color#FFFsdn_stripe_color#f4b738sdn_sidebar_width10sdn_fonticon_size25sdn_fonticon_color#FFFFFFsdn_fonticon_hovercolor#bbb6b6sdn_groupssdn_hide0sdn_date_startsdn_date_endsdn_modal_sizemediumsdn_infobox_enabled0sdn_infobox_contentsdn_infobox_fonticonf05asdn_infobox_fonticon_size15sdn_infobox_color#326196sdn_infobox_showtime0sdn_sidebar_hide0sdn_tab_color#f4b738sdn_tab_sizew60sdn_tab_sizeh50sdn_tab_radius30sdn_tab_positionbottomsdn_tab_window10sdn_configure_pages_type0sdn_configure_pages_listsdn_hide_guests0sdn_notfication_groups4sdn_notfication_enabled0sdn_icon_animation0sdn_bar_style0sdn_solid_colorsdn_image_backsdn_toastr_sizew100sdn_toastr_positiontoast-top-rightaddTab('sdn_configure'); $form->addHeader('sdn_configure'); @@ -155,9 +155,9 @@ $form->add( new \IPS\Helpers\Form\Select( 'sdn_modal_size', \IPS\Settings::i()-> $form->addSeparator(); $form->addHeader( 'sdn_configure_pages' ); $form->add( new \IPS\Helpers\Form\Select( 'sdn_configure_pages_type', \IPS\Settings::i()->sdn_configure_pages_type, FALSE, array( - 'options' => array( - 0 => 'sdn_configure_pages_type0', - 1 => 'sdn_configure_pages_type1' + 'options' => array( + 0 => 'sdn_configure_pages_type0', + 1 => 'sdn_configure_pages_type1' ), 'multiple' => FALSE) ) ); $form->add( new \IPS\Helpers\Form\TextArea( 'sdn_configure_pages_list', \IPS\Settings::i()->sdn_configure_pages_list, FALSE, array(), NULL, NULL, NULL, 'sdn_configure_pages_list') ); @@ -169,6 +169,29 @@ $form->add( new \IPS\Helpers\Form\YesNo( 'sdn_notfication_enabled', \IPS\Setting $form->add( new \IPS\Helpers\Form\Select( 'sdn_notfication_groups', explode( ',' , \IPS\Settings::i()->sdn_notfication_groups ), FALSE, array( 'options' => \IPS\Member\Group::groups(TRUE, FALSE), 'parse' => 'normal', 'multiple' => TRUE ), NULL, NULL, NULL, 'sdn_notfication_groups' ) ); $form->addHeader('sdn_header_toastr'); $form->addSeparator(); + +$form->add( new \IPS\Helpers\Form\Select( 'sdn_toastr_position', \IPS\Settings::i()->sdn_toastr_position, FALSE, array( + 'options' => array( + 'toast-top-right' => 'sdn_toastr_topright', + 'toast-bottom-right' => 'sdn_toastr_bottomright', + 'toast-bottom-left' => 'sdn_toastr_bottomleft', + 'toast-top-left' => 'sdn_toastr_topleft', + 'toast-top-full-width' => 'sdn_toastr_topfull', + 'toast-bottom-full-width' => 'sdn_toastr_bottomfull', + 'toast-top-center' => 'sdn_toastr_bottomcenter', + 'toast-bottom-center' => 'sdn_toastr_topcenter' ), + 'toggles' => array( + 'toast-top-right' => array( ), + 'toast-bottom-right' => array( ), + 'toast-bottom-left' => array( ), + 'toast-top-left' => array( ), + 'toast-top-full-width' => array( 'sdn_toastr_sizew' ), + 'toast-bottom-full-width' => array( 'sdn_toastr_sizew' ), + 'toast-top-center' => array( ), + 'toast-bottom-center' => array( ), + ) + ), NULL, NULL, NULL, 'sdn_toastr_position' ) ); + $form->add( new \IPS\Helpers\Form\Number( 'sdn_toastr_sizew', \IPS\Settings::i()->sdn_toastr_sizew, FALSE, array(), NULL, NULL, NULL, 'sdn_toastr_sizew' ) ); $form->addTab('sdn_content'); @@ -197,9 +220,9 @@ $form->add( new \IPS\Helpers\Form\Color( 'sdn_tab_color', \IPS\Settings::i()->sd $form->add( new \IPS\Helpers\Form\Number( 'sdn_tab_sizew', \IPS\Settings::i()->sdn_tab_sizew, FALSE, array(), NULL, NULL, NULL, 'sdn_tab_sizew') ); $form->add( new \IPS\Helpers\Form\Number( 'sdn_tab_sizeh', \IPS\Settings::i()->sdn_tab_sizeh, FALSE, array(), NULL, NULL, NULL, 'sdn_tab_sizeh') ); $form->add( new \IPS\Helpers\Form\Select( 'sdn_tab_position', \IPS\Settings::i()->sdn_tab_position, FALSE, array( - 'options' => array( - 'bottom' => 'sdn_tab_position_bottom', - 'top' => 'sdn_tab_position_top' + 'options' => array( + 'bottom' => 'sdn_tab_position_bottom', + 'top' => 'sdn_tab_position_top' ), 'multiple' => FALSE) ) ); $form->add( new \IPS\Helpers\Form\Number( 'sdn_tab_window', \IPS\Settings::i()->sdn_tab_window, FALSE, array(), NULL, NULL, NULL, 'sdn_tab_window') ); @@ -212,11 +235,11 @@ $form->add( new \IPS\Helpers\Form\Number( 'sdn_fonticon_size', \IPS\Settings::i( $form->add( new \IPS\Helpers\Form\Color( 'sdn_fonticon_color', \IPS\Settings::i()->sdn_fonticon_color, FALSE, array(), NULL, NULL, NULL, 'sdn_fonticon_color') ); $form->add( new \IPS\Helpers\Form\Color( 'sdn_fonticon_hovercolor', \IPS\Settings::i()->sdn_fonticon_hovercolor, FALSE, array(), NULL, NULL, NULL, 'sdn_fonticon_hovercolor') ); $form->add( new \IPS\Helpers\Form\Select( 'sdn_icon_animation', \IPS\Settings::i()->sdn_icon_animation, FALSE, array( - 'options' => array( - '0' => 'sdn_fonticon_noanim', - '1' => 'sdn_fonticon_blink', - '2' => 'sdn_fonticon_spin', - '3' => 'sdn_fonticon_pulse' + 'options' => array( + '0' => 'sdn_fonticon_noanim', + '1' => 'sdn_fonticon_blink', + '2' => 'sdn_fonticon_spin', + '3' => 'sdn_fonticon_pulse' ), 'multiple' => FALSE) ) ); @@ -225,7 +248,7 @@ $form->addHeader( 'sdn_custom' ); $form->addSeparator(); $form->add( new \IPS\Helpers\Form\YesNo( 'sdn_sidebar_hide', \IPS\Settings::i()->sdn_sidebar_hide, FALSE, array( 'togglesOff' => array( 'sdn_bar_style', 'sdn_sidebar_width' ) ), NULL, NULL, NULL, 'sdn_sidebar_hide') ); - $form->add( new \IPS\Helpers\Form\Radio( 'sdn_bar_style', \IPS\Settings::i()->sdn_bar_style, FALSE, array( +$form->add( new \IPS\Helpers\Form\Radio( 'sdn_bar_style', \IPS\Settings::i()->sdn_bar_style, FALSE, array( 'options' => array( '0' => 'sdn_barstriped', '1' => 'sdn_barsolid', @@ -251,7 +274,7 @@ if ( $values = $form->values() ) return TRUE; } -return $form;]]>PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSd7e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMH19U2lkZU5vdGVCYXJTdHJpcGV7e2VuZGlmfX17e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMX19U2lkZU5vdGVCYXJTb2xpZHt7ZW5kaWZ9fSc+PC9kaXY+CiAgICB7e2VuZGlmfX0KCQkJICAgIDxkaXYgaWQ9J2VsU05NRGlhbG9nJyBjbGFzcz0naXBzSGlkZSBpcHNQYWQnPgogICAge3tpZiBzZXR0aW5ncy5zZG5faW5mb2JveF9lbmFibGVkfX0KCSAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdpcHNNZXNzYWdlIFNpZGVOb3RlSW5mb0JveCc+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlNpZGVOb3RlSW5mb0JveEljb24iPntleHByZXNzaW9uPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9pbmZvYm94X2NvbnRlbnQifSA8L3NwYW4+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X3Nob3d0aW1lID09IDF9fQogICAgICAgICAgICAgICAgICAgIDxicj48c3Ryb25nPlN0YXJ0IFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9zdGFydCIgbm9yZWxhdGl2ZT0iZmFsc2UifSA8PiA8c3Ryb25nPkVuZCBUaW1lOjwvc3Ryb25nPiB7ZGF0ZXRpbWU9IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2RhdGVfZW5kIiBub3JlbGF0aXZlPSJmYWxzZSJ9CiAgICB7e2VuZGlmfX0KICAgICAgICAgICAgICAgPC9kaXY+CiAge3tlbmRpZn19CgkJCQkgICAgIDxwIGNsYXNzPSdpcHNUeXBlX3Jlc2V0IGlwc1NwYWNlcl9ib3R0b20gaXBzVHlwZV9ub3JtYWwnPgogICAgICAgICAgICAgICB7bGFuZz0ic2RuX2xnZGVzY192YWx1ZSJ9CgkJCQkgICAgPC9wPgoKCXt7aWYgc2V0dGluZ3Muc2RuX2hpZGV9fQoJe3tpZiAhc2V0dGluZ3Muc2RuX2hpZGVfZ3Vlc3RzfX0KCQkJCSAgIDxkaXYgaWQ9IlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIj4KCQkJCQkgIDxhIGNsYXNzPSJpcHNCdXR0b24gaXBzQnV0dG9uX3ZlcnlTbWFsbCBpcHNCdXR0b25faW1wb3J0YW50IGlwc0J1dHRvbl9mdWxsV2lkdGgiIGhyZWY9Int1cmw9ImFwcD1jb3JlJm1vZHVsZT1zeXN0ZW0mc2VjdGlvbj1wbHVnaW5zJmRvPVNpZGVOb3RlRGlzbWlzcyIgY3NyZj0iMSJ9IiBkYXRhLWlwc3Rvb2x0aXAgdGl0bGU9IntsYW5nPSdzZG5faGlkZV90b29sdGlwJ30iIGRhdGEtYWN0aW9uPSJkaXNtaXNzIj57bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9PC9hPgoJCQkJICAgPC9kaXY+Cgl7e2Vsc2VpZiBzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHMgYW5kICFcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+bWVtYmVyX2lkIH19CiAgICAgICAgICAgICAgICAgIDxwPiA8L3A+Cgl7e2Vsc2V9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZW5kaWZ9fQoJe3tlbmRpZn19CiAgICAgICAgICAgIDwvZGl2Pgp7e2VuZGlmfX0KCgp7e2lmICgkZW5hYmxlZCA9PSAxKSAmJiAoJFVSTGVuYWJsZWQgPT0gMSkgJiYgKCRwYWdldmlzaWJsZSA9PSAxKX19Cgk8ZGl2IGlkPSJzZG5TaWRlTm90ZSIgY2xhc3M9InRvYXN0LXN1Y2Nlc3MiIGhpZGRlbj4KCQl7bGFuZz0ic2RuX3BhZ2VfYWRkcmVzcyJ9IDxzdHJvbmc+eyRjdXJyZW50X3VybH08L3N0cm9uZz48L2JyPjxlbT57bGFuZz0ic2RuX3BhZ2VfZGlzcGxheV95ZXMifTwvZW0+Cgk8L2Rpdj4Ke3tlbHNlaWYgKCRlbmFibGVkID09IDEpICYmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDApfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtd2FybmluZyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X25vIn08L2VtPgoJPC9kaXY+Cnt7ZW5kaWZ9fQ==LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhclN0cmlwZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyU3RyaXBlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhclN0cmlwZSB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJTb2xpZCB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fc29saWRfY29sb3IifTsKCWJhY2tncm91bmQtc2l6ZTogODBweCA4MHB4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wOwoJei1pbmRleDogOTk5OTsKfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYmlnCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDcwcHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkBrZXlmcmFtZXMgcHVsc2UKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMzVweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpAa2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLlNpZGVOb3RlVGFiOmhvdmVyOmFmdGVyIHsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2hvdmVyY29sb3IifTsKfQoKCS5TaWRlTm90ZVRhYjpob3ZlciB7CgkJY3Vyc29yOiBoZWxwOwoJfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVUYWIgewoJCWxlZnQ6IDA7Cgl9CglodG1sW2Rpcj0icnRsIl0gLlNpZGVOb3RlVGFiIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZUluZm9Cb3ggewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKCWJhY2tncm91bmQ6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9jb2xvciJ9Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbiB7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9mb250aWNvbl9zaXplIn1weDsKfQoKLlNpZGVOb3RlSW5mb0JveEljb246YmVmb3JlIHsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAwLjNyZW07Cn0KCi8qIFBIT05FUyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKLlNpZGVOb3RlQmFyU3RyaXBlIHsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMDsKCXRvcDogMDsKCXdpZHRoOiA1cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX2JhY2tncm91bmRfY29sb3IifTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA1MDA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCgkuU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCAyMHB4IDIwcHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMTBweDsKCXdpZHRoOiAzNXB4OwoJaGVpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiAzMHB4OwoJei1pbmRleDogMTA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cgl9CgoKLlNpZGVOb3RlVGFiIHsKICAgIGJvcmRlci1yYWRpdXM6IDAge3NldHRpbmc9InNkbl90YWJfcmFkaXVzIn1weCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IDA7Cglwb3NpdGlvbjogZml4ZWQ7CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAndG9wJ319Cgl0b3A6IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAnYm90dG9tJ319Cglib3R0b206IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19Cgl3aWR0aDoge3NldHRpbmc9InNkbl90YWJfc2l6ZXcifXB4OwoJaGVpZ2h0OiB7c2V0dGluZz0ic2RuX3RhYl9zaXplaCJ9cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX3RhYl9jb2xvciJ9OwoJdGV4dC1zaGFkb3c6IDBweCAxcHggNHB4IHJnYmEoMTUxLCAxMTIsIDMwLCAwLjUpOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJbGluZS1oZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCXotaW5kZXg6IDk5OTg7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCi5TaWRlTm90ZVRhYjpiZWZvcmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwoJY29udGVudDogJ1x7c2V0dGluZz0ic2RuX2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwoJZm9udC1zaXplOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX3NpemUifXB4OwoJY29sb3I6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fY29sb3IifTsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMn19CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gM319CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CiAgICBhbmltYXRpb246IHB1bHNlIDFzIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMX19Cgktd2Via2l0LWFuaW1hdGlvbjogYmxpbmtlciAxcyBzdGVwLXN0YXJ0IGluZmluaXRlOwoJYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQogICB9Cn0KCi8qIFRvYXN0ciAqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6NzAwfS50b2FzdC1tZXNzYWdley1tcy13b3JkLXdyYXA6YnJlYWstd29yZDt3b3JkLXdyYXA6YnJlYWstd29yZH0udG9hc3QtbWVzc2FnZSBhLC50b2FzdC1tZXNzYWdlIGxhYmVse2NvbG9yOiNGRkZ9LnRvYXN0LW1lc3NhZ2UgYTpob3Zlcntjb2xvcjojQ0NDO3RleHQtZGVjb3JhdGlvbjpub25lfS50b2FzdC1jbG9zZS1idXR0b257cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6LS4zZW07dG9wOi0uM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojRkZGOy13ZWJraXQtdGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtsaW5lLWhlaWdodDoxfS50b2FzdC1jbG9zZS1idXR0b246Zm9jdXMsLnRvYXN0LWNsb3NlLWJ1dHRvbjpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfS5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uM2VtO2Zsb2F0OmxlZnQ7cmlnaHQ6LjNlbX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9hc3QtdG9wLWNlbnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1jZW50ZXJ7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtZnVsbC13aWR0aHt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoe2JvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtdG9wLWxlZnR7dG9wOjEycHg7bGVmdDoxMnB4fS50b2FzdC10b3AtcmlnaHR7dG9wOjEycHg7cmlnaHQ6MTJweH0udG9hc3QtYm90dG9tLXJpZ2h0e3JpZ2h0OjEycHg7Ym90dG9tOjEycHh9LnRvYXN0LWJvdHRvbS1sZWZ0e2JvdHRvbToxMnB4O2xlZnQ6MTJweH0jdG9hc3QtY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5OTk5O3BvaW50ZXItZXZlbnRzOm5vbmV9I3RvYXN0LWNvbnRhaW5lciAqey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdG9hc3QtY29udGFpbmVyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtwb2ludGVyLWV2ZW50czphdXRvO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjojRkZGO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtkaXJlY3Rpb246cnRsO3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDE1cHggY2VudGVyfSN0b2FzdC1jb250YWluZXI+ZGl2OmhvdmVyey1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjMDAwOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjMDAwO2JveC1zaGFkb3c6MCAwIDEycHggIzAwMDtvcGFjaXR5OjE7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7Y3Vyc29yOnBvaW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtZXJyb3J7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtd2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyPmRpdnt3aWR0aDozMDBweDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2e3dpZHRoOjk2JTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFBMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNCRDM2MkZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMkY5NkI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I0Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxMWVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6MjQxcHgpIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjhweCA4cHggOHB4IDUwcHg7d2lkdGg6MThlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzo4cHggNTBweCA4cHggOHB4fSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotLjJlbTt0b3A6LS4yZW19I3RvYXN0LWNvbnRhaW5lciAucnRsIC50b2FzdC1jbG9zZS1idXR0b257bGVmdDotLjJlbTtyaWdodDouMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweH19CgovKiBUb2FzdHIgQ3VzdG9tIE92ZXJyaWRlcyovCgoudG9hc3Qtc3VjY2VzcyB7Cglmb250LXNpemU6IDE2cHg7Cn0KCi50b2FzdC13YXJuaW5nIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIHsKCWJvdHRvbTowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiB7c2V0dGluZz0ic2RuX3RvYXN0cl9zaXpldyJ9JTsKfQoKLnRvYXN0LXRvcC1mdWxsLXdpZHRoIHsKCXRvcDowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiA5MCU7Cn0KCiN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2IHsKICAgd2lkdGg6IDk2JTsKICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQ==OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7CgoJJChmdW5jdGlvbiAoKSB7CgkJdG9hc3RyLm9wdGlvbnMgPSB7CgkJCQkiY2xvc2VCdXR0b24iOiBmYWxzZSwKCQkJCSJkZWJ1ZyI6IGZhbHNlLAoJCQkJIm5ld2VzdE9uVG9wIjogZmFsc2UsCgkJCQkicHJvZ3Jlc3NCYXIiOiB0cnVlLAoJCQkJInBvc2l0aW9uQ2xhc3MiOiAidG9hc3QtYm90dG9tLWZ1bGwtd2lkdGgiLAoJCQkJInByZXZlbnREdXBsaWNhdGVzIjogZmFsc2UsCgkJCQkib25jbGljayI6IG51bGwsCgkJCQkic2hvd0R1cmF0aW9uIjogIjMwMCIsCgkJCQkiaGlkZUR1cmF0aW9uIjogIjEwMDAiLAoJCQkJInRpbWVPdXQiOiAiNjAwMCIsCgkJCQkiZXh0ZW5kZWRUaW1lT3V0IjogIjEwMDAiLAoJCQkJInNob3dFYXNpbmciOiAic3dpbmciLAoJCQkJImhpZGVFYXNpbmciOiAibGluZWFyIiwKCQkJCSJzaG93TWV0aG9kIjogImZhZGVJbiIsCgkJCQkiaGlkZU1ldGhvZCI6ICJmYWRlT3V0IgoJCX07CgoJCWxldCB2aXNpYmxlTWVzc2FnZSA9ICQoIi50b2FzdC1zdWNjZXNzIikuaHRtbCgpOwoJCQkJaWYgKHZpc2libGVNZXNzYWdlICYmIHZpc2libGVNZXNzYWdlLmxlbmd0aCA+IDApIHsKICAJCQkJdG9hc3RyLnN1Y2Nlc3ModmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICAJCQkJY29udGFpbmVySWQ6ICJ0b2FzdC1jb250YWluZXIiLAogCQkgfSk7CiAgfQoKCQlsZXQgaW52aXNpYmxlTWVzc2FnZSA9ICQoIi50b2FzdC13YXJuaW5nIikuaHRtbCgpOwoJCQkJaWYgKGludmlzaWJsZU1lc3NhZ2UgJiYgaW52aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgCQkJCXRvYXN0ci53YXJuaW5nKGludmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICAJCQkJY29udGFpbmVySWQ6ICJ0b2FzdC1jb250YWluZXIiCgkJCX0pOwogIH0KfSk7KGpRdWVyeSwgXyk7SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypeAdmin NotificationsPage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsOnly groups with staff status and ACP access should be able to see these notifications. Preferably Admins onlyCurrent page addressSideNote will display on this pageSideNote will not display on this pageToastr ConfigurationToastr WidthToastr Width in Percentage, default is100% SideNote ContentMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentStart DateEnd DateSideNote InfoBoxEnable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Descriptive text, keep it short for best displayingShow the Start and End TimesSideNote CustomizeSideNote BarSideNote TabAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Solid ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabSide Bar StyleStripedSolidImageImageTab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSd7e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMH19U2lkZU5vdGVCYXJTdHJpcGV7e2VuZGlmfX17e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMX19U2lkZU5vdGVCYXJTb2xpZHt7ZW5kaWZ9fSc+PC9kaXY+CiAgICB7e2VuZGlmfX0KCQkJICAgIDxkaXYgaWQ9J2VsU05NRGlhbG9nJyBjbGFzcz0naXBzSGlkZSBpcHNQYWQnPgogICAge3tpZiBzZXR0aW5ncy5zZG5faW5mb2JveF9lbmFibGVkfX0KCSAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdpcHNNZXNzYWdlIFNpZGVOb3RlSW5mb0JveCc+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlNpZGVOb3RlSW5mb0JveEljb24iPntleHByZXNzaW9uPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9pbmZvYm94X2NvbnRlbnQifSA8L3NwYW4+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X3Nob3d0aW1lID09IDF9fQogICAgICAgICAgICAgICAgICAgIDxicj48c3Ryb25nPlN0YXJ0IFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9zdGFydCIgbm9yZWxhdGl2ZT0iZmFsc2UifSA8PiA8c3Ryb25nPkVuZCBUaW1lOjwvc3Ryb25nPiB7ZGF0ZXRpbWU9IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2RhdGVfZW5kIiBub3JlbGF0aXZlPSJmYWxzZSJ9CiAgICB7e2VuZGlmfX0KICAgICAgICAgICAgICAgPC9kaXY+CiAge3tlbmRpZn19CgkJCQkgICAgIDxwIGNsYXNzPSdpcHNUeXBlX3Jlc2V0IGlwc1NwYWNlcl9ib3R0b20gaXBzVHlwZV9ub3JtYWwnPgogICAgICAgICAgICAgICB7bGFuZz0ic2RuX2xnZGVzY192YWx1ZSJ9CgkJCQkgICAgPC9wPgoKCXt7aWYgc2V0dGluZ3Muc2RuX2hpZGV9fQoJe3tpZiAhc2V0dGluZ3Muc2RuX2hpZGVfZ3Vlc3RzfX0KCQkJCSAgIDxkaXYgaWQ9IlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIj4KCQkJCQkgIDxhIGNsYXNzPSJpcHNCdXR0b24gaXBzQnV0dG9uX3ZlcnlTbWFsbCBpcHNCdXR0b25faW1wb3J0YW50IGlwc0J1dHRvbl9mdWxsV2lkdGgiIGhyZWY9Int1cmw9ImFwcD1jb3JlJm1vZHVsZT1zeXN0ZW0mc2VjdGlvbj1wbHVnaW5zJmRvPVNpZGVOb3RlRGlzbWlzcyIgY3NyZj0iMSJ9IiBkYXRhLWlwc3Rvb2x0aXAgdGl0bGU9IntsYW5nPSdzZG5faGlkZV90b29sdGlwJ30iIGRhdGEtYWN0aW9uPSJkaXNtaXNzIj57bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9PC9hPgoJCQkJICAgPC9kaXY+Cgl7e2Vsc2VpZiBzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHMgYW5kICFcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+bWVtYmVyX2lkIH19CiAgICAgICAgICAgICAgICAgIDxwPiA8L3A+Cgl7e2Vsc2V9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZW5kaWZ9fQoJe3tlbmRpZn19CiAgICAgICAgICAgIDwvZGl2Pgp7e2VuZGlmfX0KCgp7e2lmICgkZW5hYmxlZCA9PSAxKSAmJiAoJFVSTGVuYWJsZWQgPT0gMSkgJiYgKCRwYWdldmlzaWJsZSA9PSAxKX19Cgk8ZGl2IGlkPSJzZG5TaWRlTm90ZSIgY2xhc3M9InRvYXN0LXN1Y2Nlc3MiIGhpZGRlbj4KCQl7bGFuZz0ic2RuX3BhZ2VfYWRkcmVzcyJ9IDxzdHJvbmc+eyRjdXJyZW50X3VybH08L3N0cm9uZz48L2JyPjxlbT57bGFuZz0ic2RuX3BhZ2VfZGlzcGxheV95ZXMifTwvZW0+Cgk8L2Rpdj4Ke3tlbHNlaWYgKCRlbmFibGVkID09IDEpICYmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDApfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtd2FybmluZyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X25vIn08L2VtPgoJPC9kaXY+Cnt7ZW5kaWZ9fQ==LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhclN0cmlwZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyU3RyaXBlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhclN0cmlwZSB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJTb2xpZCB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fc29saWRfY29sb3IifTsKCWJhY2tncm91bmQtc2l6ZTogODBweCA4MHB4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wOwoJei1pbmRleDogOTk5OTsKfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYmlnCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDcwcHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkBrZXlmcmFtZXMgcHVsc2UKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMzVweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpAa2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLlNpZGVOb3RlVGFiOmhvdmVyOmFmdGVyIHsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2hvdmVyY29sb3IifTsKfQoKCS5TaWRlTm90ZVRhYjpob3ZlciB7CgkJY3Vyc29yOiBoZWxwOwoJfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVUYWIgewoJCWxlZnQ6IDA7Cgl9CglodG1sW2Rpcj0icnRsIl0gLlNpZGVOb3RlVGFiIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZUluZm9Cb3ggewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKCWJhY2tncm91bmQ6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9jb2xvciJ9Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbiB7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9mb250aWNvbl9zaXplIn1weDsKfQoKLlNpZGVOb3RlSW5mb0JveEljb246YmVmb3JlIHsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAwLjNyZW07Cn0KCi8qIFBIT05FUyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKLlNpZGVOb3RlQmFyU3RyaXBlIHsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMDsKCXRvcDogMDsKCXdpZHRoOiA1cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX2JhY2tncm91bmRfY29sb3IifTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA1MDA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCgkuU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCAyMHB4IDIwcHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMTBweDsKCXdpZHRoOiAzNXB4OwoJaGVpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiAzMHB4OwoJei1pbmRleDogMTA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cgl9CgoKLlNpZGVOb3RlVGFiIHsKICAgIGJvcmRlci1yYWRpdXM6IDAge3NldHRpbmc9InNkbl90YWJfcmFkaXVzIn1weCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IDA7Cglwb3NpdGlvbjogZml4ZWQ7CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAndG9wJ319Cgl0b3A6IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAnYm90dG9tJ319Cglib3R0b206IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19Cgl3aWR0aDoge3NldHRpbmc9InNkbl90YWJfc2l6ZXcifXB4OwoJaGVpZ2h0OiB7c2V0dGluZz0ic2RuX3RhYl9zaXplaCJ9cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX3RhYl9jb2xvciJ9OwoJdGV4dC1zaGFkb3c6IDBweCAxcHggNHB4IHJnYmEoMTUxLCAxMTIsIDMwLCAwLjUpOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJbGluZS1oZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCXotaW5kZXg6IDk5OTg7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCi5TaWRlTm90ZVRhYjpiZWZvcmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwoJY29udGVudDogJ1x7c2V0dGluZz0ic2RuX2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwoJZm9udC1zaXplOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX3NpemUifXB4OwoJY29sb3I6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fY29sb3IifTsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMn19CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gM319CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CiAgICBhbmltYXRpb246IHB1bHNlIDFzIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMX19Cgktd2Via2l0LWFuaW1hdGlvbjogYmxpbmtlciAxcyBzdGVwLXN0YXJ0IGluZmluaXRlOwoJYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQogICB9Cn0KCi8qIFRvYXN0ciAqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6NzAwfS50b2FzdC1tZXNzYWdley1tcy13b3JkLXdyYXA6YnJlYWstd29yZDt3b3JkLXdyYXA6YnJlYWstd29yZH0udG9hc3QtbWVzc2FnZSBhLC50b2FzdC1tZXNzYWdlIGxhYmVse2NvbG9yOiNGRkZ9LnRvYXN0LW1lc3NhZ2UgYTpob3Zlcntjb2xvcjojQ0NDO3RleHQtZGVjb3JhdGlvbjpub25lfS50b2FzdC1jbG9zZS1idXR0b257cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6LS4zZW07dG9wOi0uM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojRkZGOy13ZWJraXQtdGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtsaW5lLWhlaWdodDoxfS50b2FzdC1jbG9zZS1idXR0b246Zm9jdXMsLnRvYXN0LWNsb3NlLWJ1dHRvbjpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfS5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uM2VtO2Zsb2F0OmxlZnQ7cmlnaHQ6LjNlbX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9hc3QtdG9wLWNlbnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1jZW50ZXJ7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtZnVsbC13aWR0aHt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoe2JvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtdG9wLWxlZnR7dG9wOjEycHg7bGVmdDoxMnB4fS50b2FzdC10b3AtcmlnaHR7dG9wOjEycHg7cmlnaHQ6MTJweH0udG9hc3QtYm90dG9tLXJpZ2h0e3JpZ2h0OjEycHg7Ym90dG9tOjEycHh9LnRvYXN0LWJvdHRvbS1sZWZ0e2JvdHRvbToxMnB4O2xlZnQ6MTJweH0jdG9hc3QtY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5OTk5O3BvaW50ZXItZXZlbnRzOm5vbmV9I3RvYXN0LWNvbnRhaW5lciAqey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdG9hc3QtY29udGFpbmVyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtwb2ludGVyLWV2ZW50czphdXRvO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjojRkZGO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtkaXJlY3Rpb246cnRsO3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDE1cHggY2VudGVyfSN0b2FzdC1jb250YWluZXI+ZGl2OmhvdmVyey1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjMDAwOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjMDAwO2JveC1zaGFkb3c6MCAwIDEycHggIzAwMDtvcGFjaXR5OjE7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7Y3Vyc29yOnBvaW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtZXJyb3J7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtd2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyPmRpdnt3aWR0aDozMDBweDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2e3dpZHRoOjk2JTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFBMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNCRDM2MkZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMkY5NkI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I0Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxMWVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6MjQxcHgpIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjhweCA4cHggOHB4IDUwcHg7d2lkdGg6MThlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzo4cHggNTBweCA4cHggOHB4fSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotLjJlbTt0b3A6LS4yZW19I3RvYXN0LWNvbnRhaW5lciAucnRsIC50b2FzdC1jbG9zZS1idXR0b257bGVmdDotLjJlbTtyaWdodDouMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweH19CgovKiBUb2FzdHIgQ3VzdG9tIE92ZXJyaWRlcyovCgoudG9hc3Qtc3VjY2VzcyB7Cglmb250LXNpemU6IDE2cHg7Cn0KCi50b2FzdC13YXJuaW5nIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIHsKCWJvdHRvbTowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiB7c2V0dGluZz0ic2RuX3RvYXN0cl9zaXpldyJ9JTsKfQoKLnRvYXN0LXRvcC1mdWxsLXdpZHRoIHsKCXRvcDowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiA5MCU7Cn0KCiN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2IHsKICAgd2lkdGg6IDk2JTsKICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQ==OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7Cgo7KCBmdW5jdGlvbigkLCBfLCB1bmRlZmluZWQpewoidXNlIHN0cmljdCI7CgoJCXRvYXN0ci5vcHRpb25zID0gewoJCQkJImNsb3NlQnV0dG9uIjogZmFsc2UsCgkJCQkiZGVidWciOiBmYWxzZSwKCQkJCSJuZXdlc3RPblRvcCI6IGZhbHNlLAoJCQkJInByb2dyZXNzQmFyIjogdHJ1ZSwKCQkJCSJwb3NpdGlvbkNsYXNzIjogInRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIiwKCQkJCSJwcmV2ZW50RHVwbGljYXRlcyI6IGZhbHNlLAoJCQkJIm9uY2xpY2siOiBudWxsLAoJCQkJInNob3dEdXJhdGlvbiI6ICIzMDAiLAoJCQkJImhpZGVEdXJhdGlvbiI6ICIxMDAwIiwKCQkJCSJ0aW1lT3V0IjogIjYwMDAiLAoJCQkJImV4dGVuZGVkVGltZU91dCI6ICIxMDAwIiwKCQkJCSJzaG93RWFzaW5nIjogInN3aW5nIiwKCQkJCSJoaWRlRWFzaW5nIjogImxpbmVhciIsCgkJCQkic2hvd01ldGhvZCI6ICJmYWRlSW4iLAoJCQkJImhpZGVNZXRob2QiOiAiZmFkZU91dCIKCQl9OwoKCQlsZXQgdmlzaWJsZU1lc3NhZ2UgPSAkKCIudG9hc3Qtc3VjY2VzcyIpLmh0bWwoKTsKCQkJCWlmICh2aXNpYmxlTWVzc2FnZSAmJiB2aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgCQkJCXRvYXN0ci5zdWNjZXNzKHZpc2libGVNZXNzYWdlLCAiIiwgewogICAgCQkJCWNvbnRhaW5lcklkOiAidG9hc3QtY29udGFpbmVyIiwKIAkJIH0pOwogIH0KCgkJbGV0IGludmlzaWJsZU1lc3NhZ2UgPSAkKCIudG9hc3Qtd2FybmluZyIpLmh0bWwoKTsKCQkJCWlmIChpbnZpc2libGVNZXNzYWdlICYmIGludmlzaWJsZU1lc3NhZ2UubGVuZ3RoID4gMCkgewogIAkJCQl0b2FzdHIud2FybmluZyhpbnZpc2libGVNZXNzYWdlLCAiIiwgewogICAgCQkJCWNvbnRhaW5lcklkOiAidG9hc3QtY29udGFpbmVyIgoJCQl9KTsKICB9Cgp9KTsoalF1ZXJ5LCBfKTs=SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypeAdmin NotificationsPage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsOnly groups with staff status and ACP access should be able to see these notifications. Preferably Admins onlyCurrent page addressSideNote will display on this pageSideNote will not display on this pageToastr ConfigurationToastr WidthToastr Width in Percentage, default is100% Toatr PositionTop RightBottom RightBottom LeftTop LeftTop Full WidthBottom Full WidthBottom CenterTop CenterSideNote ContentMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentStart DateEnd DateSideNote InfoBoxEnable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Descriptive text, keep it short for best displayingShow the Start and End TimesSideNote CustomizeSideNote BarSideNote TabAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Solid ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabSide Bar StyleStripedSolidImageImageTab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
sdn_enabled0sdn_titlesdn_lgdescsdn_stdescsdn_fonticonf071sdn_background_color#FFFsdn_stripe_color#f4b738sdn_sidebar_width10sdn_fonticon_size25sdn_fonticon_color#FFFFFFsdn_fonticon_hovercolor#bbb6b6sdn_groupssdn_hide0sdn_date_startsdn_date_endsdn_modal_sizemediumsdn_infobox_enabled0sdn_infobox_contentsdn_infobox_fonticonf05asdn_infobox_fonticon_size15sdn_infobox_color#326196sdn_infobox_showtime0sdn_sidebar_hide0sdn_tab_color#f4b738sdn_tab_sizew60sdn_tab_sizeh50sdn_tab_radius30sdn_tab_positionbottomsdn_tab_window10sdn_configure_pages_type0sdn_configure_pages_listsdn_hide_guests0sdn_notfication_groups4sdn_notfication_enabled0sdn_icon_animation0sdn_bar_style0sdn_solid_colorsdn_image_backsdn_toastr_sizew100sdn_enabled0sdn_titlesdn_lgdescsdn_stdescsdn_fonticonf071sdn_background_color#FFFsdn_stripe_color#f4b738sdn_sidebar_width10sdn_fonticon_size25sdn_fonticon_color#FFFFFFsdn_fonticon_hovercolor#bbb6b6sdn_groupssdn_hide0sdn_date_startsdn_date_endsdn_modal_sizemediumsdn_infobox_enabled0sdn_infobox_contentsdn_infobox_fonticonf05asdn_infobox_fonticon_size15sdn_infobox_color#326196sdn_infobox_showtime0sdn_sidebar_hide0sdn_tab_color#f4b738sdn_tab_sizew60sdn_tab_sizeh50sdn_tab_radius30sdn_tab_positionbottomsdn_tab_window10sdn_configure_pages_type0sdn_configure_pages_listsdn_hide_guests0sdn_notfication_groups4sdn_notfication_enabled0sdn_icon_animation0sdn_bar_style0sdn_solid_colorsdn_image_backsdn_toastr_sizew100sdn_toastr_positiontoast-top-rightaddTab('sdn_configure'); $form->addHeader('sdn_configure'); @@ -155,9 +155,9 @@ $form->add( new \IPS\Helpers\Form\Select( 'sdn_modal_size', \IPS\Settings::i()-> $form->addSeparator(); $form->addHeader( 'sdn_configure_pages' ); $form->add( new \IPS\Helpers\Form\Select( 'sdn_configure_pages_type', \IPS\Settings::i()->sdn_configure_pages_type, FALSE, array( - 'options' => array( - 0 => 'sdn_configure_pages_type0', - 1 => 'sdn_configure_pages_type1' + 'options' => array( + 0 => 'sdn_configure_pages_type0', + 1 => 'sdn_configure_pages_type1' ), 'multiple' => FALSE) ) ); $form->add( new \IPS\Helpers\Form\TextArea( 'sdn_configure_pages_list', \IPS\Settings::i()->sdn_configure_pages_list, FALSE, array(), NULL, NULL, NULL, 'sdn_configure_pages_list') ); @@ -169,6 +169,29 @@ $form->add( new \IPS\Helpers\Form\YesNo( 'sdn_notfication_enabled', \IPS\Setting $form->add( new \IPS\Helpers\Form\Select( 'sdn_notfication_groups', explode( ',' , \IPS\Settings::i()->sdn_notfication_groups ), FALSE, array( 'options' => \IPS\Member\Group::groups(TRUE, FALSE), 'parse' => 'normal', 'multiple' => TRUE ), NULL, NULL, NULL, 'sdn_notfication_groups' ) ); $form->addHeader('sdn_header_toastr'); $form->addSeparator(); + +$form->add( new \IPS\Helpers\Form\Select( 'sdn_toastr_position', \IPS\Settings::i()->sdn_toastr_position, FALSE, array( + 'options' => array( + 'toast-top-right' => 'sdn_toastr_topright', + 'toast-bottom-right' => 'sdn_toastr_bottomright', + 'toast-bottom-left' => 'sdn_toastr_bottomleft', + 'toast-top-left' => 'sdn_toastr_topleft', + 'toast-top-full-width' => 'sdn_toastr_topfull', + 'toast-bottom-full-width' => 'sdn_toastr_bottomfull', + 'toast-top-center' => 'sdn_toastr_bottomcenter', + 'toast-bottom-center' => 'sdn_toastr_topcenter' ), + 'toggles' => array( + 'toast-top-right' => array( ), + 'toast-bottom-right' => array( ), + 'toast-bottom-left' => array( ), + 'toast-top-left' => array( ), + 'toast-top-full-width' => array( 'sdn_toastr_sizew' ), + 'toast-bottom-full-width' => array( 'sdn_toastr_sizew' ), + 'toast-top-center' => array( ), + 'toast-bottom-center' => array( ), + ) + ), NULL, NULL, NULL, 'sdn_toastr_position' ) ); + $form->add( new \IPS\Helpers\Form\Number( 'sdn_toastr_sizew', \IPS\Settings::i()->sdn_toastr_sizew, FALSE, array(), NULL, NULL, NULL, 'sdn_toastr_sizew' ) ); $form->addTab('sdn_content'); @@ -197,9 +220,9 @@ $form->add( new \IPS\Helpers\Form\Color( 'sdn_tab_color', \IPS\Settings::i()->sd $form->add( new \IPS\Helpers\Form\Number( 'sdn_tab_sizew', \IPS\Settings::i()->sdn_tab_sizew, FALSE, array(), NULL, NULL, NULL, 'sdn_tab_sizew') ); $form->add( new \IPS\Helpers\Form\Number( 'sdn_tab_sizeh', \IPS\Settings::i()->sdn_tab_sizeh, FALSE, array(), NULL, NULL, NULL, 'sdn_tab_sizeh') ); $form->add( new \IPS\Helpers\Form\Select( 'sdn_tab_position', \IPS\Settings::i()->sdn_tab_position, FALSE, array( - 'options' => array( - 'bottom' => 'sdn_tab_position_bottom', - 'top' => 'sdn_tab_position_top' + 'options' => array( + 'bottom' => 'sdn_tab_position_bottom', + 'top' => 'sdn_tab_position_top' ), 'multiple' => FALSE) ) ); $form->add( new \IPS\Helpers\Form\Number( 'sdn_tab_window', \IPS\Settings::i()->sdn_tab_window, FALSE, array(), NULL, NULL, NULL, 'sdn_tab_window') ); @@ -212,11 +235,11 @@ $form->add( new \IPS\Helpers\Form\Number( 'sdn_fonticon_size', \IPS\Settings::i( $form->add( new \IPS\Helpers\Form\Color( 'sdn_fonticon_color', \IPS\Settings::i()->sdn_fonticon_color, FALSE, array(), NULL, NULL, NULL, 'sdn_fonticon_color') ); $form->add( new \IPS\Helpers\Form\Color( 'sdn_fonticon_hovercolor', \IPS\Settings::i()->sdn_fonticon_hovercolor, FALSE, array(), NULL, NULL, NULL, 'sdn_fonticon_hovercolor') ); $form->add( new \IPS\Helpers\Form\Select( 'sdn_icon_animation', \IPS\Settings::i()->sdn_icon_animation, FALSE, array( - 'options' => array( - '0' => 'sdn_fonticon_noanim', - '1' => 'sdn_fonticon_blink', - '2' => 'sdn_fonticon_spin', - '3' => 'sdn_fonticon_pulse' + 'options' => array( + '0' => 'sdn_fonticon_noanim', + '1' => 'sdn_fonticon_blink', + '2' => 'sdn_fonticon_spin', + '3' => 'sdn_fonticon_pulse' ), 'multiple' => FALSE) ) ); @@ -225,7 +248,7 @@ $form->addHeader( 'sdn_custom' ); $form->addSeparator(); $form->add( new \IPS\Helpers\Form\YesNo( 'sdn_sidebar_hide', \IPS\Settings::i()->sdn_sidebar_hide, FALSE, array( 'togglesOff' => array( 'sdn_bar_style', 'sdn_sidebar_width' ) ), NULL, NULL, NULL, 'sdn_sidebar_hide') ); - $form->add( new \IPS\Helpers\Form\Radio( 'sdn_bar_style', \IPS\Settings::i()->sdn_bar_style, FALSE, array( +$form->add( new \IPS\Helpers\Form\Radio( 'sdn_bar_style', \IPS\Settings::i()->sdn_bar_style, FALSE, array( 'options' => array( '0' => 'sdn_barstriped', '1' => 'sdn_barsolid', @@ -251,7 +274,7 @@ if ( $values = $form->values() ) return TRUE; } -return $form;]]>PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSd7e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMH19U2lkZU5vdGVCYXJTdHJpcGV7e2VuZGlmfX17e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMX19U2lkZU5vdGVCYXJTb2xpZHt7ZW5kaWZ9fSc+PC9kaXY+CiAgICB7e2VuZGlmfX0KCQkJICAgIDxkaXYgaWQ9J2VsU05NRGlhbG9nJyBjbGFzcz0naXBzSGlkZSBpcHNQYWQnPgogICAge3tpZiBzZXR0aW5ncy5zZG5faW5mb2JveF9lbmFibGVkfX0KCSAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdpcHNNZXNzYWdlIFNpZGVOb3RlSW5mb0JveCc+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlNpZGVOb3RlSW5mb0JveEljb24iPntleHByZXNzaW9uPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9pbmZvYm94X2NvbnRlbnQifSA8L3NwYW4+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X3Nob3d0aW1lID09IDF9fQogICAgICAgICAgICAgICAgICAgIDxicj48c3Ryb25nPlN0YXJ0IFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9zdGFydCIgbm9yZWxhdGl2ZT0iZmFsc2UifSA8PiA8c3Ryb25nPkVuZCBUaW1lOjwvc3Ryb25nPiB7ZGF0ZXRpbWU9IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2RhdGVfZW5kIiBub3JlbGF0aXZlPSJmYWxzZSJ9CiAgICB7e2VuZGlmfX0KICAgICAgICAgICAgICAgPC9kaXY+CiAge3tlbmRpZn19CgkJCQkgICAgIDxwIGNsYXNzPSdpcHNUeXBlX3Jlc2V0IGlwc1NwYWNlcl9ib3R0b20gaXBzVHlwZV9ub3JtYWwnPgogICAgICAgICAgICAgICB7bGFuZz0ic2RuX2xnZGVzY192YWx1ZSJ9CgkJCQkgICAgPC9wPgoKCXt7aWYgc2V0dGluZ3Muc2RuX2hpZGV9fQoJe3tpZiAhc2V0dGluZ3Muc2RuX2hpZGVfZ3Vlc3RzfX0KCQkJCSAgIDxkaXYgaWQ9IlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIj4KCQkJCQkgIDxhIGNsYXNzPSJpcHNCdXR0b24gaXBzQnV0dG9uX3ZlcnlTbWFsbCBpcHNCdXR0b25faW1wb3J0YW50IGlwc0J1dHRvbl9mdWxsV2lkdGgiIGhyZWY9Int1cmw9ImFwcD1jb3JlJm1vZHVsZT1zeXN0ZW0mc2VjdGlvbj1wbHVnaW5zJmRvPVNpZGVOb3RlRGlzbWlzcyIgY3NyZj0iMSJ9IiBkYXRhLWlwc3Rvb2x0aXAgdGl0bGU9IntsYW5nPSdzZG5faGlkZV90b29sdGlwJ30iIGRhdGEtYWN0aW9uPSJkaXNtaXNzIj57bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9PC9hPgoJCQkJICAgPC9kaXY+Cgl7e2Vsc2VpZiBzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHMgYW5kICFcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+bWVtYmVyX2lkIH19CiAgICAgICAgICAgICAgICAgIDxwPiA8L3A+Cgl7e2Vsc2V9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZW5kaWZ9fQoJe3tlbmRpZn19CiAgICAgICAgICAgIDwvZGl2Pgp7e2VuZGlmfX0KCgp7e2lmICgkZW5hYmxlZCA9PSAxKSAmJiAoJFVSTGVuYWJsZWQgPT0gMSkgJiYgKCRwYWdldmlzaWJsZSA9PSAxKX19Cgk8ZGl2IGlkPSJzZG5TaWRlTm90ZSIgY2xhc3M9InRvYXN0LXN1Y2Nlc3MiIGhpZGRlbj4KCQl7bGFuZz0ic2RuX3BhZ2VfYWRkcmVzcyJ9IDxzdHJvbmc+eyRjdXJyZW50X3VybH08L3N0cm9uZz48L2JyPjxlbT57bGFuZz0ic2RuX3BhZ2VfZGlzcGxheV95ZXMifTwvZW0+Cgk8L2Rpdj4Ke3tlbHNlaWYgKCRlbmFibGVkID09IDEpICYmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDApfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtd2FybmluZyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X25vIn08L2VtPgoJPC9kaXY+Cnt7ZW5kaWZ9fQ==LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhclN0cmlwZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyU3RyaXBlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhclN0cmlwZSB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJTb2xpZCB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fc29saWRfY29sb3IifTsKCWJhY2tncm91bmQtc2l6ZTogODBweCA4MHB4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wOwoJei1pbmRleDogOTk5OTsKfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYmlnCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDcwcHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkBrZXlmcmFtZXMgcHVsc2UKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMzVweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpAa2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLlNpZGVOb3RlVGFiOmhvdmVyOmFmdGVyIHsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2hvdmVyY29sb3IifTsKfQoKCS5TaWRlTm90ZVRhYjpob3ZlciB7CgkJY3Vyc29yOiBoZWxwOwoJfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVUYWIgewoJCWxlZnQ6IDA7Cgl9CglodG1sW2Rpcj0icnRsIl0gLlNpZGVOb3RlVGFiIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZUluZm9Cb3ggewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKCWJhY2tncm91bmQ6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9jb2xvciJ9Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbiB7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9mb250aWNvbl9zaXplIn1weDsKfQoKLlNpZGVOb3RlSW5mb0JveEljb246YmVmb3JlIHsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAwLjNyZW07Cn0KCi8qIFBIT05FUyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKLlNpZGVOb3RlQmFyU3RyaXBlIHsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMDsKCXRvcDogMDsKCXdpZHRoOiA1cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX2JhY2tncm91bmRfY29sb3IifTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA1MDA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCgkuU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCAyMHB4IDIwcHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMTBweDsKCXdpZHRoOiAzNXB4OwoJaGVpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiAzMHB4OwoJei1pbmRleDogMTA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cgl9CgoKLlNpZGVOb3RlVGFiIHsKICAgIGJvcmRlci1yYWRpdXM6IDAge3NldHRpbmc9InNkbl90YWJfcmFkaXVzIn1weCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IDA7Cglwb3NpdGlvbjogZml4ZWQ7CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAndG9wJ319Cgl0b3A6IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAnYm90dG9tJ319Cglib3R0b206IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19Cgl3aWR0aDoge3NldHRpbmc9InNkbl90YWJfc2l6ZXcifXB4OwoJaGVpZ2h0OiB7c2V0dGluZz0ic2RuX3RhYl9zaXplaCJ9cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX3RhYl9jb2xvciJ9OwoJdGV4dC1zaGFkb3c6IDBweCAxcHggNHB4IHJnYmEoMTUxLCAxMTIsIDMwLCAwLjUpOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJbGluZS1oZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCXotaW5kZXg6IDk5OTg7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCi5TaWRlTm90ZVRhYjpiZWZvcmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwoJY29udGVudDogJ1x7c2V0dGluZz0ic2RuX2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwoJZm9udC1zaXplOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX3NpemUifXB4OwoJY29sb3I6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fY29sb3IifTsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMn19CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gM319CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CiAgICBhbmltYXRpb246IHB1bHNlIDFzIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMX19Cgktd2Via2l0LWFuaW1hdGlvbjogYmxpbmtlciAxcyBzdGVwLXN0YXJ0IGluZmluaXRlOwoJYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQogICB9Cn0KCi8qIFRvYXN0ciAqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6NzAwfS50b2FzdC1tZXNzYWdley1tcy13b3JkLXdyYXA6YnJlYWstd29yZDt3b3JkLXdyYXA6YnJlYWstd29yZH0udG9hc3QtbWVzc2FnZSBhLC50b2FzdC1tZXNzYWdlIGxhYmVse2NvbG9yOiNGRkZ9LnRvYXN0LW1lc3NhZ2UgYTpob3Zlcntjb2xvcjojQ0NDO3RleHQtZGVjb3JhdGlvbjpub25lfS50b2FzdC1jbG9zZS1idXR0b257cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6LS4zZW07dG9wOi0uM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojRkZGOy13ZWJraXQtdGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtsaW5lLWhlaWdodDoxfS50b2FzdC1jbG9zZS1idXR0b246Zm9jdXMsLnRvYXN0LWNsb3NlLWJ1dHRvbjpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfS5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uM2VtO2Zsb2F0OmxlZnQ7cmlnaHQ6LjNlbX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9hc3QtdG9wLWNlbnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1jZW50ZXJ7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtZnVsbC13aWR0aHt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoe2JvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtdG9wLWxlZnR7dG9wOjEycHg7bGVmdDoxMnB4fS50b2FzdC10b3AtcmlnaHR7dG9wOjEycHg7cmlnaHQ6MTJweH0udG9hc3QtYm90dG9tLXJpZ2h0e3JpZ2h0OjEycHg7Ym90dG9tOjEycHh9LnRvYXN0LWJvdHRvbS1sZWZ0e2JvdHRvbToxMnB4O2xlZnQ6MTJweH0jdG9hc3QtY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5OTk5O3BvaW50ZXItZXZlbnRzOm5vbmV9I3RvYXN0LWNvbnRhaW5lciAqey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdG9hc3QtY29udGFpbmVyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtwb2ludGVyLWV2ZW50czphdXRvO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjojRkZGO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtkaXJlY3Rpb246cnRsO3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDE1cHggY2VudGVyfSN0b2FzdC1jb250YWluZXI+ZGl2OmhvdmVyey1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjMDAwOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjMDAwO2JveC1zaGFkb3c6MCAwIDEycHggIzAwMDtvcGFjaXR5OjE7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7Y3Vyc29yOnBvaW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtZXJyb3J7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtd2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyPmRpdnt3aWR0aDozMDBweDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2e3dpZHRoOjk2JTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFBMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNCRDM2MkZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMkY5NkI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I0Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxMWVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6MjQxcHgpIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjhweCA4cHggOHB4IDUwcHg7d2lkdGg6MThlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzo4cHggNTBweCA4cHggOHB4fSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotLjJlbTt0b3A6LS4yZW19I3RvYXN0LWNvbnRhaW5lciAucnRsIC50b2FzdC1jbG9zZS1idXR0b257bGVmdDotLjJlbTtyaWdodDouMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweH19CgovKiBUb2FzdHIgQ3VzdG9tIE92ZXJyaWRlcyovCgoudG9hc3Qtc3VjY2VzcyB7Cglmb250LXNpemU6IDE2cHg7Cn0KCi50b2FzdC13YXJuaW5nIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIHsKCWJvdHRvbTowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiB7c2V0dGluZz0ic2RuX3RvYXN0cl9zaXpldyJ9JTsKfQoKLnRvYXN0LXRvcC1mdWxsLXdpZHRoIHsKCXRvcDowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiA5MCU7Cn0KCiN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2IHsKICAgd2lkdGg6IDk2JTsKICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQ==OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7CgoJJChmdW5jdGlvbiAoKSB7CgkJdG9hc3RyLm9wdGlvbnMgPSB7CgkJCQkiY2xvc2VCdXR0b24iOiBmYWxzZSwKCQkJCSJkZWJ1ZyI6IGZhbHNlLAoJCQkJIm5ld2VzdE9uVG9wIjogZmFsc2UsCgkJCQkicHJvZ3Jlc3NCYXIiOiB0cnVlLAoJCQkJInBvc2l0aW9uQ2xhc3MiOiAidG9hc3QtYm90dG9tLWZ1bGwtd2lkdGgiLAoJCQkJInByZXZlbnREdXBsaWNhdGVzIjogZmFsc2UsCgkJCQkib25jbGljayI6IG51bGwsCgkJCQkic2hvd0R1cmF0aW9uIjogIjMwMCIsCgkJCQkiaGlkZUR1cmF0aW9uIjogIjEwMDAiLAoJCQkJInRpbWVPdXQiOiAiNjAwMCIsCgkJCQkiZXh0ZW5kZWRUaW1lT3V0IjogIjEwMDAiLAoJCQkJInNob3dFYXNpbmciOiAic3dpbmciLAoJCQkJImhpZGVFYXNpbmciOiAibGluZWFyIiwKCQkJCSJzaG93TWV0aG9kIjogImZhZGVJbiIsCgkJCQkiaGlkZU1ldGhvZCI6ICJmYWRlT3V0IgoJCX07CgoJCWxldCB2aXNpYmxlTWVzc2FnZSA9ICQoIi50b2FzdC1zdWNjZXNzIikuaHRtbCgpOwoJCQkJaWYgKHZpc2libGVNZXNzYWdlICYmIHZpc2libGVNZXNzYWdlLmxlbmd0aCA+IDApIHsKICAJCQkJdG9hc3RyLnN1Y2Nlc3ModmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICAJCQkJY29udGFpbmVySWQ6ICJ0b2FzdC1jb250YWluZXIiLAogCQkgfSk7CiAgfQoKCQlsZXQgaW52aXNpYmxlTWVzc2FnZSA9ICQoIi50b2FzdC13YXJuaW5nIikuaHRtbCgpOwoJCQkJaWYgKGludmlzaWJsZU1lc3NhZ2UgJiYgaW52aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgCQkJCXRvYXN0ci53YXJuaW5nKGludmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICAJCQkJY29udGFpbmVySWQ6ICJ0b2FzdC1jb250YWluZXIiCgkJCX0pOwogIH0KfSk7KGpRdWVyeSwgXyk7SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypeAdmin NotificationsPage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsOnly groups with staff status and ACP access should be able to see these notifications. Preferably Admins onlyCurrent page addressSideNote will display on this pageSideNote will not display on this pageToastr ConfigurationToastr WidthToastr Width in Percentage, default is100% SideNote ContentMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentStart DateEnd DateSideNote InfoBoxEnable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Descriptive text, keep it short for best displayingShow the Start and End TimesSideNote CustomizeSideNote BarSideNote TabAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Solid ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabSide Bar StyleStripedSolidImageImageTab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSd7e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMH19U2lkZU5vdGVCYXJTdHJpcGV7e2VuZGlmfX17e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMX19U2lkZU5vdGVCYXJTb2xpZHt7ZW5kaWZ9fSc+PC9kaXY+CiAgICB7e2VuZGlmfX0KCQkJICAgIDxkaXYgaWQ9J2VsU05NRGlhbG9nJyBjbGFzcz0naXBzSGlkZSBpcHNQYWQnPgogICAge3tpZiBzZXR0aW5ncy5zZG5faW5mb2JveF9lbmFibGVkfX0KCSAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdpcHNNZXNzYWdlIFNpZGVOb3RlSW5mb0JveCc+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlNpZGVOb3RlSW5mb0JveEljb24iPntleHByZXNzaW9uPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9pbmZvYm94X2NvbnRlbnQifSA8L3NwYW4+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X3Nob3d0aW1lID09IDF9fQogICAgICAgICAgICAgICAgICAgIDxicj48c3Ryb25nPlN0YXJ0IFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9zdGFydCIgbm9yZWxhdGl2ZT0iZmFsc2UifSA8PiA8c3Ryb25nPkVuZCBUaW1lOjwvc3Ryb25nPiB7ZGF0ZXRpbWU9IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2RhdGVfZW5kIiBub3JlbGF0aXZlPSJmYWxzZSJ9CiAgICB7e2VuZGlmfX0KICAgICAgICAgICAgICAgPC9kaXY+CiAge3tlbmRpZn19CgkJCQkgICAgIDxwIGNsYXNzPSdpcHNUeXBlX3Jlc2V0IGlwc1NwYWNlcl9ib3R0b20gaXBzVHlwZV9ub3JtYWwnPgogICAgICAgICAgICAgICB7bGFuZz0ic2RuX2xnZGVzY192YWx1ZSJ9CgkJCQkgICAgPC9wPgoKCXt7aWYgc2V0dGluZ3Muc2RuX2hpZGV9fQoJe3tpZiAhc2V0dGluZ3Muc2RuX2hpZGVfZ3Vlc3RzfX0KCQkJCSAgIDxkaXYgaWQ9IlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIj4KCQkJCQkgIDxhIGNsYXNzPSJpcHNCdXR0b24gaXBzQnV0dG9uX3ZlcnlTbWFsbCBpcHNCdXR0b25faW1wb3J0YW50IGlwc0J1dHRvbl9mdWxsV2lkdGgiIGhyZWY9Int1cmw9ImFwcD1jb3JlJm1vZHVsZT1zeXN0ZW0mc2VjdGlvbj1wbHVnaW5zJmRvPVNpZGVOb3RlRGlzbWlzcyIgY3NyZj0iMSJ9IiBkYXRhLWlwc3Rvb2x0aXAgdGl0bGU9IntsYW5nPSdzZG5faGlkZV90b29sdGlwJ30iIGRhdGEtYWN0aW9uPSJkaXNtaXNzIj57bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9PC9hPgoJCQkJICAgPC9kaXY+Cgl7e2Vsc2VpZiBzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHMgYW5kICFcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+bWVtYmVyX2lkIH19CiAgICAgICAgICAgICAgICAgIDxwPiA8L3A+Cgl7e2Vsc2V9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZW5kaWZ9fQoJe3tlbmRpZn19CiAgICAgICAgICAgIDwvZGl2Pgp7e2VuZGlmfX0KCgp7e2lmICgkZW5hYmxlZCA9PSAxKSAmJiAoJFVSTGVuYWJsZWQgPT0gMSkgJiYgKCRwYWdldmlzaWJsZSA9PSAxKX19Cgk8ZGl2IGlkPSJzZG5TaWRlTm90ZSIgY2xhc3M9InRvYXN0LXN1Y2Nlc3MiIGhpZGRlbj4KCQl7bGFuZz0ic2RuX3BhZ2VfYWRkcmVzcyJ9IDxzdHJvbmc+eyRjdXJyZW50X3VybH08L3N0cm9uZz48L2JyPjxlbT57bGFuZz0ic2RuX3BhZ2VfZGlzcGxheV95ZXMifTwvZW0+Cgk8L2Rpdj4Ke3tlbHNlaWYgKCRlbmFibGVkID09IDEpICYmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDApfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtd2FybmluZyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X25vIn08L2VtPgoJPC9kaXY+Cnt7ZW5kaWZ9fQ==LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhclN0cmlwZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyU3RyaXBlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhclN0cmlwZSB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJTb2xpZCB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fc29saWRfY29sb3IifTsKCWJhY2tncm91bmQtc2l6ZTogODBweCA4MHB4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wOwoJei1pbmRleDogOTk5OTsKfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYmlnCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDcwcHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkBrZXlmcmFtZXMgcHVsc2UKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMzVweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpAa2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLlNpZGVOb3RlVGFiOmhvdmVyOmFmdGVyIHsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2hvdmVyY29sb3IifTsKfQoKCS5TaWRlTm90ZVRhYjpob3ZlciB7CgkJY3Vyc29yOiBoZWxwOwoJfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVUYWIgewoJCWxlZnQ6IDA7Cgl9CglodG1sW2Rpcj0icnRsIl0gLlNpZGVOb3RlVGFiIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZUluZm9Cb3ggewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKCWJhY2tncm91bmQ6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9jb2xvciJ9Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbiB7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9mb250aWNvbl9zaXplIn1weDsKfQoKLlNpZGVOb3RlSW5mb0JveEljb246YmVmb3JlIHsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAwLjNyZW07Cn0KCi8qIFBIT05FUyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKLlNpZGVOb3RlQmFyU3RyaXBlIHsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMDsKCXRvcDogMDsKCXdpZHRoOiA1cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX2JhY2tncm91bmRfY29sb3IifTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA1MDA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCgkuU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCAyMHB4IDIwcHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMTBweDsKCXdpZHRoOiAzNXB4OwoJaGVpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiAzMHB4OwoJei1pbmRleDogMTA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cgl9CgoKLlNpZGVOb3RlVGFiIHsKICAgIGJvcmRlci1yYWRpdXM6IDAge3NldHRpbmc9InNkbl90YWJfcmFkaXVzIn1weCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IDA7Cglwb3NpdGlvbjogZml4ZWQ7CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAndG9wJ319Cgl0b3A6IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAnYm90dG9tJ319Cglib3R0b206IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19Cgl3aWR0aDoge3NldHRpbmc9InNkbl90YWJfc2l6ZXcifXB4OwoJaGVpZ2h0OiB7c2V0dGluZz0ic2RuX3RhYl9zaXplaCJ9cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX3RhYl9jb2xvciJ9OwoJdGV4dC1zaGFkb3c6IDBweCAxcHggNHB4IHJnYmEoMTUxLCAxMTIsIDMwLCAwLjUpOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJbGluZS1oZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCXotaW5kZXg6IDk5OTg7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCi5TaWRlTm90ZVRhYjpiZWZvcmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwoJY29udGVudDogJ1x7c2V0dGluZz0ic2RuX2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwoJZm9udC1zaXplOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX3NpemUifXB4OwoJY29sb3I6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fY29sb3IifTsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMn19CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gM319CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CiAgICBhbmltYXRpb246IHB1bHNlIDFzIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMX19Cgktd2Via2l0LWFuaW1hdGlvbjogYmxpbmtlciAxcyBzdGVwLXN0YXJ0IGluZmluaXRlOwoJYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQogICB9Cn0KCi8qIFRvYXN0ciAqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6NzAwfS50b2FzdC1tZXNzYWdley1tcy13b3JkLXdyYXA6YnJlYWstd29yZDt3b3JkLXdyYXA6YnJlYWstd29yZH0udG9hc3QtbWVzc2FnZSBhLC50b2FzdC1tZXNzYWdlIGxhYmVse2NvbG9yOiNGRkZ9LnRvYXN0LW1lc3NhZ2UgYTpob3Zlcntjb2xvcjojQ0NDO3RleHQtZGVjb3JhdGlvbjpub25lfS50b2FzdC1jbG9zZS1idXR0b257cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6LS4zZW07dG9wOi0uM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojRkZGOy13ZWJraXQtdGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtsaW5lLWhlaWdodDoxfS50b2FzdC1jbG9zZS1idXR0b246Zm9jdXMsLnRvYXN0LWNsb3NlLWJ1dHRvbjpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfS5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uM2VtO2Zsb2F0OmxlZnQ7cmlnaHQ6LjNlbX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9hc3QtdG9wLWNlbnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1jZW50ZXJ7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtZnVsbC13aWR0aHt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoe2JvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtdG9wLWxlZnR7dG9wOjEycHg7bGVmdDoxMnB4fS50b2FzdC10b3AtcmlnaHR7dG9wOjEycHg7cmlnaHQ6MTJweH0udG9hc3QtYm90dG9tLXJpZ2h0e3JpZ2h0OjEycHg7Ym90dG9tOjEycHh9LnRvYXN0LWJvdHRvbS1sZWZ0e2JvdHRvbToxMnB4O2xlZnQ6MTJweH0jdG9hc3QtY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5OTk5O3BvaW50ZXItZXZlbnRzOm5vbmV9I3RvYXN0LWNvbnRhaW5lciAqey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdG9hc3QtY29udGFpbmVyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtwb2ludGVyLWV2ZW50czphdXRvO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjojRkZGO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtkaXJlY3Rpb246cnRsO3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDE1cHggY2VudGVyfSN0b2FzdC1jb250YWluZXI+ZGl2OmhvdmVyey1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjMDAwOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjMDAwO2JveC1zaGFkb3c6MCAwIDEycHggIzAwMDtvcGFjaXR5OjE7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7Y3Vyc29yOnBvaW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtZXJyb3J7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtd2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyPmRpdnt3aWR0aDozMDBweDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2e3dpZHRoOjk2JTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFBMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNCRDM2MkZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMkY5NkI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I0Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxMWVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6MjQxcHgpIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjhweCA4cHggOHB4IDUwcHg7d2lkdGg6MThlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzo4cHggNTBweCA4cHggOHB4fSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotLjJlbTt0b3A6LS4yZW19I3RvYXN0LWNvbnRhaW5lciAucnRsIC50b2FzdC1jbG9zZS1idXR0b257bGVmdDotLjJlbTtyaWdodDouMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweH19CgovKiBUb2FzdHIgQ3VzdG9tIE92ZXJyaWRlcyovCgoudG9hc3Qtc3VjY2VzcyB7Cglmb250LXNpemU6IDE2cHg7Cn0KCi50b2FzdC13YXJuaW5nIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIHsKCWJvdHRvbTowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiB7c2V0dGluZz0ic2RuX3RvYXN0cl9zaXpldyJ9JTsKfQoKLnRvYXN0LXRvcC1mdWxsLXdpZHRoIHsKCXRvcDowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiA5MCU7Cn0KCiN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2IHsKICAgd2lkdGg6IDk2JTsKICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQ==OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7Cgo7KCBmdW5jdGlvbigkLCBfLCB1bmRlZmluZWQpewoidXNlIHN0cmljdCI7CgoJCXRvYXN0ci5vcHRpb25zID0gewoJCQkJImNsb3NlQnV0dG9uIjogZmFsc2UsCgkJCQkiZGVidWciOiBmYWxzZSwKCQkJCSJuZXdlc3RPblRvcCI6IGZhbHNlLAoJCQkJInByb2dyZXNzQmFyIjogdHJ1ZSwKCQkJCSJwb3NpdGlvbkNsYXNzIjogInRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIiwKCQkJCSJwcmV2ZW50RHVwbGljYXRlcyI6IGZhbHNlLAoJCQkJIm9uY2xpY2siOiBudWxsLAoJCQkJInNob3dEdXJhdGlvbiI6ICIzMDAiLAoJCQkJImhpZGVEdXJhdGlvbiI6ICIxMDAwIiwKCQkJCSJ0aW1lT3V0IjogIjYwMDAiLAoJCQkJImV4dGVuZGVkVGltZU91dCI6ICIxMDAwIiwKCQkJCSJzaG93RWFzaW5nIjogInN3aW5nIiwKCQkJCSJoaWRlRWFzaW5nIjogImxpbmVhciIsCgkJCQkic2hvd01ldGhvZCI6ICJmYWRlSW4iLAoJCQkJImhpZGVNZXRob2QiOiAiZmFkZU91dCIKCQl9OwoKCQlsZXQgdmlzaWJsZU1lc3NhZ2UgPSAkKCIudG9hc3Qtc3VjY2VzcyIpLmh0bWwoKTsKCQkJCWlmICh2aXNpYmxlTWVzc2FnZSAmJiB2aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgCQkJCXRvYXN0ci5zdWNjZXNzKHZpc2libGVNZXNzYWdlLCAiIiwgewogICAgCQkJCWNvbnRhaW5lcklkOiAidG9hc3QtY29udGFpbmVyIiwKIAkJIH0pOwogIH0KCgkJbGV0IGludmlzaWJsZU1lc3NhZ2UgPSAkKCIudG9hc3Qtd2FybmluZyIpLmh0bWwoKTsKCQkJCWlmIChpbnZpc2libGVNZXNzYWdlICYmIGludmlzaWJsZU1lc3NhZ2UubGVuZ3RoID4gMCkgewogIAkJCQl0b2FzdHIud2FybmluZyhpbnZpc2libGVNZXNzYWdlLCAiIiwgewogICAgCQkJCWNvbnRhaW5lcklkOiAidG9hc3QtY29udGFpbmVyIgoJCQl9KTsKICB9Cgp9KTsoalF1ZXJ5LCBfKTs=SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypeAdmin NotificationsPage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsOnly groups with staff status and ACP access should be able to see these notifications. Preferably Admins onlyCurrent page addressSideNote will display on this pageSideNote will not display on this pageToastr ConfigurationToastr WidthToastr Width in Percentage, default is100% Toatr PositionTop RightBottom RightBottom LeftTop LeftTop Full WidthBottom Full WidthBottom CenterTop CenterSideNote ContentMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentStart DateEnd DateSideNote InfoBoxEnable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Descriptive text, keep it short for best displayingShow the Start and End TimesSideNote CustomizeSideNote BarSideNote TabAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Solid ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabSide Bar StyleStripedSolidImageImageTab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
Date: Mon, 22 Apr 2019 16:19:14 -0400 Subject: [PATCH 18/23] Release 1.0.2 --- README.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 07a9d90..83d9c88 100644 --- a/README.md +++ b/README.md @@ -51,9 +51,9 @@ ## ** Updated Notes ** -04/19/19 +04/22/19 -- New release 1.0.2 due on Easter (4/21) +- New release 1.0.2 - Working stable release for 4.3x and 4.4x available in /src folder and compressed on releases page - IPS 4.4 version updated for PHP root-namespace - Please report any issues, feature requests, or suggestions in [Issues](https://github.com/devCU/IPS-SideNote/issues) @@ -73,8 +73,12 @@ __Bug Fixes__ - Toastr Notifications [issue #2](https://github.com/devCU/IPS-SideNote/issues/2) __New Features/Options__ -- 2 New sidebar options in addition to striped, solid and image background added. -- Toastr Notifications configurations, size, style and positioning options available +- 2 New sidebar options in addition to striped, solid and image background added + +__BETA Features Initialized__ +_These following are non functional features/options initialized for the next release_ +- Toastr Notifications configurations, size, style and positioning options _BETA 1.0.3_ + ## ** Install/Upgrade ** Import SideNote.xml via Install New Plugin in IPS ACP From 943d48887f7c16d46aad8d0e24f936ca1f719c81 Mon Sep 17 00:00:00 2001 From: GaalexxC Date: Mon, 22 Apr 2019 16:19:48 -0400 Subject: [PATCH 19/23] Release 1.0.2 --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 83d9c88..7422323 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,8 @@ __New Features/Options__ - 2 New sidebar options in addition to striped, solid and image background added __BETA Features Initialized__ -_These following are non functional features/options initialized for the next release_ + +_The following are non functional features/options initialized for the next release_ - Toastr Notifications configurations, size, style and positioning options _BETA 1.0.3_ From ae2065ed3878d6e1ec6e94426adc58ed56caec18 Mon Sep 17 00:00:00 2001 From: GaalexxC Date: Mon, 22 Apr 2019 16:22:53 -0400 Subject: [PATCH 20/23] Release 1.0.2 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7422323..65c1e4f 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ __New Features/Options__ __BETA Features Initialized__ _The following are non functional features/options initialized for the next release_ -- Toastr Notifications configurations, size, style and positioning options _BETA 1.0.3_ +- Toastr Notifications configurations, size, style and positioning options _BETA 1.0.3_ will coincide with [IPS-Toasted](https://github.com/devCU/IPS-Toasted) Release in May ## ** Install/Upgrade ** From 75a5465ffc9c7cc02d8e18940e2aa463d96f01be Mon Sep 17 00:00:00 2001 From: GaalexxC Date: Mon, 22 Apr 2019 17:58:02 -0400 Subject: [PATCH 21/23] dev 1.0.2 Final --- src/IPS4.3/SideNote.xml | 2 +- src/IPS4.4/SideNote.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/IPS4.3/SideNote.xml b/src/IPS4.3/SideNote.xml index dde0303..1cf1dbb 100644 --- a/src/IPS4.3/SideNote.xml +++ b/src/IPS4.3/SideNote.xml @@ -274,7 +274,7 @@ if ( $values = $form->values() ) return TRUE; } -return $form;]]>PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSd7e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMH19U2lkZU5vdGVCYXJTdHJpcGV7e2VuZGlmfX17e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMX19U2lkZU5vdGVCYXJTb2xpZHt7ZW5kaWZ9fSc+PC9kaXY+CiAgICB7e2VuZGlmfX0KCQkJICAgIDxkaXYgaWQ9J2VsU05NRGlhbG9nJyBjbGFzcz0naXBzSGlkZSBpcHNQYWQnPgogICAge3tpZiBzZXR0aW5ncy5zZG5faW5mb2JveF9lbmFibGVkfX0KCSAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdpcHNNZXNzYWdlIFNpZGVOb3RlSW5mb0JveCc+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlNpZGVOb3RlSW5mb0JveEljb24iPntleHByZXNzaW9uPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9pbmZvYm94X2NvbnRlbnQifSA8L3NwYW4+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X3Nob3d0aW1lID09IDF9fQogICAgICAgICAgICAgICAgICAgIDxicj48c3Ryb25nPlN0YXJ0IFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9zdGFydCIgbm9yZWxhdGl2ZT0iZmFsc2UifSA8PiA8c3Ryb25nPkVuZCBUaW1lOjwvc3Ryb25nPiB7ZGF0ZXRpbWU9IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2RhdGVfZW5kIiBub3JlbGF0aXZlPSJmYWxzZSJ9CiAgICB7e2VuZGlmfX0KICAgICAgICAgICAgICAgPC9kaXY+CiAge3tlbmRpZn19CgkJCQkgICAgIDxwIGNsYXNzPSdpcHNUeXBlX3Jlc2V0IGlwc1NwYWNlcl9ib3R0b20gaXBzVHlwZV9ub3JtYWwnPgogICAgICAgICAgICAgICB7bGFuZz0ic2RuX2xnZGVzY192YWx1ZSJ9CgkJCQkgICAgPC9wPgoKCXt7aWYgc2V0dGluZ3Muc2RuX2hpZGV9fQoJe3tpZiAhc2V0dGluZ3Muc2RuX2hpZGVfZ3Vlc3RzfX0KCQkJCSAgIDxkaXYgaWQ9IlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIj4KCQkJCQkgIDxhIGNsYXNzPSJpcHNCdXR0b24gaXBzQnV0dG9uX3ZlcnlTbWFsbCBpcHNCdXR0b25faW1wb3J0YW50IGlwc0J1dHRvbl9mdWxsV2lkdGgiIGhyZWY9Int1cmw9ImFwcD1jb3JlJm1vZHVsZT1zeXN0ZW0mc2VjdGlvbj1wbHVnaW5zJmRvPVNpZGVOb3RlRGlzbWlzcyIgY3NyZj0iMSJ9IiBkYXRhLWlwc3Rvb2x0aXAgdGl0bGU9IntsYW5nPSdzZG5faGlkZV90b29sdGlwJ30iIGRhdGEtYWN0aW9uPSJkaXNtaXNzIj57bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9PC9hPgoJCQkJICAgPC9kaXY+Cgl7e2Vsc2VpZiBzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHMgYW5kICFcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+bWVtYmVyX2lkIH19CiAgICAgICAgICAgICAgICAgIDxwPiA8L3A+Cgl7e2Vsc2V9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZW5kaWZ9fQoJe3tlbmRpZn19CiAgICAgICAgICAgIDwvZGl2Pgp7e2VuZGlmfX0KCgp7e2lmICgkZW5hYmxlZCA9PSAxKSAmJiAoJFVSTGVuYWJsZWQgPT0gMSkgJiYgKCRwYWdldmlzaWJsZSA9PSAxKX19Cgk8ZGl2IGlkPSJzZG5TaWRlTm90ZSIgY2xhc3M9InRvYXN0LXN1Y2Nlc3MiIGhpZGRlbj4KCQl7bGFuZz0ic2RuX3BhZ2VfYWRkcmVzcyJ9IDxzdHJvbmc+eyRjdXJyZW50X3VybH08L3N0cm9uZz48L2JyPjxlbT57bGFuZz0ic2RuX3BhZ2VfZGlzcGxheV95ZXMifTwvZW0+Cgk8L2Rpdj4Ke3tlbHNlaWYgKCRlbmFibGVkID09IDEpICYmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDApfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtd2FybmluZyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X25vIn08L2VtPgoJPC9kaXY+Cnt7ZW5kaWZ9fQ==LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhclN0cmlwZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyU3RyaXBlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhclN0cmlwZSB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJTb2xpZCB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fc29saWRfY29sb3IifTsKCWJhY2tncm91bmQtc2l6ZTogODBweCA4MHB4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wOwoJei1pbmRleDogOTk5OTsKfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYmlnCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDcwcHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkBrZXlmcmFtZXMgcHVsc2UKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMzVweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpAa2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLlNpZGVOb3RlVGFiOmhvdmVyOmFmdGVyIHsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2hvdmVyY29sb3IifTsKfQoKCS5TaWRlTm90ZVRhYjpob3ZlciB7CgkJY3Vyc29yOiBoZWxwOwoJfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVUYWIgewoJCWxlZnQ6IDA7Cgl9CglodG1sW2Rpcj0icnRsIl0gLlNpZGVOb3RlVGFiIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZUluZm9Cb3ggewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKCWJhY2tncm91bmQ6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9jb2xvciJ9Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbiB7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9mb250aWNvbl9zaXplIn1weDsKfQoKLlNpZGVOb3RlSW5mb0JveEljb246YmVmb3JlIHsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAwLjNyZW07Cn0KCi8qIFBIT05FUyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKLlNpZGVOb3RlQmFyU3RyaXBlIHsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMDsKCXRvcDogMDsKCXdpZHRoOiA1cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX2JhY2tncm91bmRfY29sb3IifTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA1MDA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCgkuU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCAyMHB4IDIwcHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMTBweDsKCXdpZHRoOiAzNXB4OwoJaGVpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiAzMHB4OwoJei1pbmRleDogMTA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cgl9CgoKLlNpZGVOb3RlVGFiIHsKICAgIGJvcmRlci1yYWRpdXM6IDAge3NldHRpbmc9InNkbl90YWJfcmFkaXVzIn1weCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IDA7Cglwb3NpdGlvbjogZml4ZWQ7CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAndG9wJ319Cgl0b3A6IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAnYm90dG9tJ319Cglib3R0b206IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19Cgl3aWR0aDoge3NldHRpbmc9InNkbl90YWJfc2l6ZXcifXB4OwoJaGVpZ2h0OiB7c2V0dGluZz0ic2RuX3RhYl9zaXplaCJ9cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX3RhYl9jb2xvciJ9OwoJdGV4dC1zaGFkb3c6IDBweCAxcHggNHB4IHJnYmEoMTUxLCAxMTIsIDMwLCAwLjUpOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJbGluZS1oZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCXotaW5kZXg6IDk5OTg7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCi5TaWRlTm90ZVRhYjpiZWZvcmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwoJY29udGVudDogJ1x7c2V0dGluZz0ic2RuX2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwoJZm9udC1zaXplOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX3NpemUifXB4OwoJY29sb3I6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fY29sb3IifTsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMn19CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gM319CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CiAgICBhbmltYXRpb246IHB1bHNlIDFzIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMX19Cgktd2Via2l0LWFuaW1hdGlvbjogYmxpbmtlciAxcyBzdGVwLXN0YXJ0IGluZmluaXRlOwoJYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQogICB9Cn0KCi8qIFRvYXN0ciAqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6NzAwfS50b2FzdC1tZXNzYWdley1tcy13b3JkLXdyYXA6YnJlYWstd29yZDt3b3JkLXdyYXA6YnJlYWstd29yZH0udG9hc3QtbWVzc2FnZSBhLC50b2FzdC1tZXNzYWdlIGxhYmVse2NvbG9yOiNGRkZ9LnRvYXN0LW1lc3NhZ2UgYTpob3Zlcntjb2xvcjojQ0NDO3RleHQtZGVjb3JhdGlvbjpub25lfS50b2FzdC1jbG9zZS1idXR0b257cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6LS4zZW07dG9wOi0uM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojRkZGOy13ZWJraXQtdGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtsaW5lLWhlaWdodDoxfS50b2FzdC1jbG9zZS1idXR0b246Zm9jdXMsLnRvYXN0LWNsb3NlLWJ1dHRvbjpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfS5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uM2VtO2Zsb2F0OmxlZnQ7cmlnaHQ6LjNlbX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9hc3QtdG9wLWNlbnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1jZW50ZXJ7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtZnVsbC13aWR0aHt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoe2JvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtdG9wLWxlZnR7dG9wOjEycHg7bGVmdDoxMnB4fS50b2FzdC10b3AtcmlnaHR7dG9wOjEycHg7cmlnaHQ6MTJweH0udG9hc3QtYm90dG9tLXJpZ2h0e3JpZ2h0OjEycHg7Ym90dG9tOjEycHh9LnRvYXN0LWJvdHRvbS1sZWZ0e2JvdHRvbToxMnB4O2xlZnQ6MTJweH0jdG9hc3QtY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5OTk5O3BvaW50ZXItZXZlbnRzOm5vbmV9I3RvYXN0LWNvbnRhaW5lciAqey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdG9hc3QtY29udGFpbmVyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtwb2ludGVyLWV2ZW50czphdXRvO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjojRkZGO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtkaXJlY3Rpb246cnRsO3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDE1cHggY2VudGVyfSN0b2FzdC1jb250YWluZXI+ZGl2OmhvdmVyey1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjMDAwOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjMDAwO2JveC1zaGFkb3c6MCAwIDEycHggIzAwMDtvcGFjaXR5OjE7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7Y3Vyc29yOnBvaW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtZXJyb3J7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtd2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyPmRpdnt3aWR0aDozMDBweDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2e3dpZHRoOjk2JTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFBMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNCRDM2MkZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMkY5NkI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I0Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxMWVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6MjQxcHgpIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjhweCA4cHggOHB4IDUwcHg7d2lkdGg6MThlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzo4cHggNTBweCA4cHggOHB4fSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotLjJlbTt0b3A6LS4yZW19I3RvYXN0LWNvbnRhaW5lciAucnRsIC50b2FzdC1jbG9zZS1idXR0b257bGVmdDotLjJlbTtyaWdodDouMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweH19CgovKiBUb2FzdHIgQ3VzdG9tIE92ZXJyaWRlcyovCgoudG9hc3Qtc3VjY2VzcyB7Cglmb250LXNpemU6IDE2cHg7Cn0KCi50b2FzdC13YXJuaW5nIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIHsKCWJvdHRvbTowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiB7c2V0dGluZz0ic2RuX3RvYXN0cl9zaXpldyJ9JTsKfQoKLnRvYXN0LXRvcC1mdWxsLXdpZHRoIHsKCXRvcDowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiA5MCU7Cn0KCiN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2IHsKICAgd2lkdGg6IDk2JTsKICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQ==OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7Cgo7KCBmdW5jdGlvbigkLCBfLCB1bmRlZmluZWQpewoidXNlIHN0cmljdCI7CgoJCXRvYXN0ci5vcHRpb25zID0gewoJCQkJImNsb3NlQnV0dG9uIjogZmFsc2UsCgkJCQkiZGVidWciOiBmYWxzZSwKCQkJCSJuZXdlc3RPblRvcCI6IGZhbHNlLAoJCQkJInByb2dyZXNzQmFyIjogdHJ1ZSwKCQkJCSJwb3NpdGlvbkNsYXNzIjogInRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIiwKCQkJCSJwcmV2ZW50RHVwbGljYXRlcyI6IGZhbHNlLAoJCQkJIm9uY2xpY2siOiBudWxsLAoJCQkJInNob3dEdXJhdGlvbiI6ICIzMDAiLAoJCQkJImhpZGVEdXJhdGlvbiI6ICIxMDAwIiwKCQkJCSJ0aW1lT3V0IjogIjYwMDAiLAoJCQkJImV4dGVuZGVkVGltZU91dCI6ICIxMDAwIiwKCQkJCSJzaG93RWFzaW5nIjogInN3aW5nIiwKCQkJCSJoaWRlRWFzaW5nIjogImxpbmVhciIsCgkJCQkic2hvd01ldGhvZCI6ICJmYWRlSW4iLAoJCQkJImhpZGVNZXRob2QiOiAiZmFkZU91dCIKCQl9OwoKCQlsZXQgdmlzaWJsZU1lc3NhZ2UgPSAkKCIudG9hc3Qtc3VjY2VzcyIpLmh0bWwoKTsKCQkJCWlmICh2aXNpYmxlTWVzc2FnZSAmJiB2aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgCQkJCXRvYXN0ci5zdWNjZXNzKHZpc2libGVNZXNzYWdlLCAiIiwgewogICAgCQkJCWNvbnRhaW5lcklkOiAidG9hc3QtY29udGFpbmVyIiwKIAkJIH0pOwogIH0KCgkJbGV0IGludmlzaWJsZU1lc3NhZ2UgPSAkKCIudG9hc3Qtd2FybmluZyIpLmh0bWwoKTsKCQkJCWlmIChpbnZpc2libGVNZXNzYWdlICYmIGludmlzaWJsZU1lc3NhZ2UubGVuZ3RoID4gMCkgewogIAkJCQl0b2FzdHIud2FybmluZyhpbnZpc2libGVNZXNzYWdlLCAiIiwgewogICAgCQkJCWNvbnRhaW5lcklkOiAidG9hc3QtY29udGFpbmVyIgoJCQl9KTsKICB9Cgp9KTsoalF1ZXJ5LCBfKTs=SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypeAdmin NotificationsPage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsOnly groups with staff status and ACP access should be able to see these notifications. Preferably Admins onlyCurrent page addressSideNote will display on this pageSideNote will not display on this pageToastr ConfigurationToastr WidthToastr Width in Percentage, default is100% Toatr PositionTop RightBottom RightBottom LeftTop LeftTop Full WidthBottom Full WidthBottom CenterTop CenterSideNote ContentMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentStart DateEnd DateSideNote InfoBoxEnable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Descriptive text, keep it short for best displayingShow the Start and End TimesSideNote CustomizeSideNote BarSideNote TabAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Solid ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabSide Bar StyleStripedSolidImageImageTab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSd7e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMH19U2lkZU5vdGVCYXJTdHJpcGV7e2VuZGlmfX17e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMX19U2lkZU5vdGVCYXJTb2xpZHt7ZW5kaWZ9fSc+PC9kaXY+CiAgICB7e2VuZGlmfX0KCQkJICAgIDxkaXYgaWQ9J2VsU05NRGlhbG9nJyBjbGFzcz0naXBzSGlkZSBpcHNQYWQnPgogICAge3tpZiBzZXR0aW5ncy5zZG5faW5mb2JveF9lbmFibGVkfX0KCSAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdpcHNNZXNzYWdlIFNpZGVOb3RlSW5mb0JveCc+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlNpZGVOb3RlSW5mb0JveEljb24iPntleHByZXNzaW9uPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9pbmZvYm94X2NvbnRlbnQifSA8L3NwYW4+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X3Nob3d0aW1lID09IDF9fQogICAgICAgICAgICAgICAgICAgIDxicj48c3Ryb25nPlN0YXJ0IFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9zdGFydCIgbm9yZWxhdGl2ZT0iZmFsc2UifSA8PiA8c3Ryb25nPkVuZCBUaW1lOjwvc3Ryb25nPiB7ZGF0ZXRpbWU9IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2RhdGVfZW5kIiBub3JlbGF0aXZlPSJmYWxzZSJ9CiAgICB7e2VuZGlmfX0KICAgICAgICAgICAgICAgPC9kaXY+CiAge3tlbmRpZn19CgkJCQkgICAgIDxwIGNsYXNzPSdpcHNUeXBlX3Jlc2V0IGlwc1NwYWNlcl9ib3R0b20gaXBzVHlwZV9ub3JtYWwnPgogICAgICAgICAgICAgICB7bGFuZz0ic2RuX2xnZGVzY192YWx1ZSJ9CgkJCQkgICAgPC9wPgoKCXt7aWYgc2V0dGluZ3Muc2RuX2hpZGV9fQoJe3tpZiAhc2V0dGluZ3Muc2RuX2hpZGVfZ3Vlc3RzfX0KCQkJCSAgIDxkaXYgaWQ9IlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIj4KCQkJCQkgIDxhIGNsYXNzPSJpcHNCdXR0b24gaXBzQnV0dG9uX3ZlcnlTbWFsbCBpcHNCdXR0b25faW1wb3J0YW50IGlwc0J1dHRvbl9mdWxsV2lkdGgiIGhyZWY9Int1cmw9ImFwcD1jb3JlJm1vZHVsZT1zeXN0ZW0mc2VjdGlvbj1wbHVnaW5zJmRvPVNpZGVOb3RlRGlzbWlzcyIgY3NyZj0iMSJ9IiBkYXRhLWlwc3Rvb2x0aXAgdGl0bGU9IntsYW5nPSdzZG5faGlkZV90b29sdGlwJ30iIGRhdGEtYWN0aW9uPSJkaXNtaXNzIj57bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9PC9hPgoJCQkJICAgPC9kaXY+Cgl7e2Vsc2VpZiBzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHMgYW5kICFcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+bWVtYmVyX2lkIH19CiAgICAgICAgICAgICAgICAgIDxwPiA8L3A+Cgl7e2Vsc2V9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZW5kaWZ9fQoJe3tlbmRpZn19CiAgICAgICAgICAgIDwvZGl2Pgp7e2VuZGlmfX0KCgp7e2lmICgkZW5hYmxlZCA9PSAxKSAmJiAoJFVSTGVuYWJsZWQgPT0gMSkgJiYgKCRwYWdldmlzaWJsZSA9PSAxKX19Cgk8ZGl2IGlkPSJzZG5TaWRlTm90ZSIgY2xhc3M9InRvYXN0LXN1Y2Nlc3MiIGhpZGRlbj4KCQl7bGFuZz0ic2RuX3BhZ2VfYWRkcmVzcyJ9IDxzdHJvbmc+eyRjdXJyZW50X3VybH08L3N0cm9uZz48L2JyPjxlbT57bGFuZz0ic2RuX3BhZ2VfZGlzcGxheV95ZXMifTwvZW0+Cgk8L2Rpdj4Ke3tlbHNlaWYgKCRlbmFibGVkID09IDEpICYmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDApfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtd2FybmluZyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X25vIn08L2VtPgoJPC9kaXY+Cnt7ZW5kaWZ9fQ==LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhclN0cmlwZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyU3RyaXBlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhclN0cmlwZSB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJTb2xpZCB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fc29saWRfY29sb3IifTsKCWJhY2tncm91bmQtc2l6ZTogODBweCA4MHB4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wOwoJei1pbmRleDogOTk5OTsKfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYmlnCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDcwcHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkBrZXlmcmFtZXMgcHVsc2UKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMzVweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpAa2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLlNpZGVOb3RlVGFiOmhvdmVyOmFmdGVyIHsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2hvdmVyY29sb3IifTsKfQoKCS5TaWRlTm90ZVRhYjpob3ZlciB7CgkJY3Vyc29yOiBoZWxwOwoJfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVUYWIgewoJCWxlZnQ6IDA7Cgl9CglodG1sW2Rpcj0icnRsIl0gLlNpZGVOb3RlVGFiIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZUluZm9Cb3ggewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKCWJhY2tncm91bmQ6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9jb2xvciJ9Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbiB7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9mb250aWNvbl9zaXplIn1weDsKfQoKLlNpZGVOb3RlSW5mb0JveEljb246YmVmb3JlIHsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAwLjNyZW07Cn0KCi8qIFBIT05FUyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKLlNpZGVOb3RlQmFyU3RyaXBlIHsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMDsKCXRvcDogMDsKCXdpZHRoOiA1cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX2JhY2tncm91bmRfY29sb3IifTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA1MDA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCgkuU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCAyMHB4IDIwcHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMTBweDsKCXdpZHRoOiAzNXB4OwoJaGVpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiAzMHB4OwoJei1pbmRleDogMTA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cgl9CgoKLlNpZGVOb3RlVGFiIHsKICAgIGJvcmRlci1yYWRpdXM6IDAge3NldHRpbmc9InNkbl90YWJfcmFkaXVzIn1weCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IDA7Cglwb3NpdGlvbjogZml4ZWQ7CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAndG9wJ319Cgl0b3A6IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAnYm90dG9tJ319Cglib3R0b206IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19Cgl3aWR0aDoge3NldHRpbmc9InNkbl90YWJfc2l6ZXcifXB4OwoJaGVpZ2h0OiB7c2V0dGluZz0ic2RuX3RhYl9zaXplaCJ9cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX3RhYl9jb2xvciJ9OwoJdGV4dC1zaGFkb3c6IDBweCAxcHggNHB4IHJnYmEoMTUxLCAxMTIsIDMwLCAwLjUpOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJbGluZS1oZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCXotaW5kZXg6IDk5OTg7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCi5TaWRlTm90ZVRhYjpiZWZvcmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwoJY29udGVudDogJ1x7c2V0dGluZz0ic2RuX2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwoJZm9udC1zaXplOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX3NpemUifXB4OwoJY29sb3I6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fY29sb3IifTsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMn19CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gM319CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CiAgICBhbmltYXRpb246IHB1bHNlIDFzIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMX19Cgktd2Via2l0LWFuaW1hdGlvbjogYmxpbmtlciAxcyBzdGVwLXN0YXJ0IGluZmluaXRlOwoJYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQogICB9Cn0KCi8qIFRvYXN0ciAqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6NzAwfS50b2FzdC1tZXNzYWdley1tcy13b3JkLXdyYXA6YnJlYWstd29yZDt3b3JkLXdyYXA6YnJlYWstd29yZH0udG9hc3QtbWVzc2FnZSBhLC50b2FzdC1tZXNzYWdlIGxhYmVse2NvbG9yOiNGRkZ9LnRvYXN0LW1lc3NhZ2UgYTpob3Zlcntjb2xvcjojQ0NDO3RleHQtZGVjb3JhdGlvbjpub25lfS50b2FzdC1jbG9zZS1idXR0b257cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6LS4zZW07dG9wOi0uM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojRkZGOy13ZWJraXQtdGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtsaW5lLWhlaWdodDoxfS50b2FzdC1jbG9zZS1idXR0b246Zm9jdXMsLnRvYXN0LWNsb3NlLWJ1dHRvbjpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfS5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uM2VtO2Zsb2F0OmxlZnQ7cmlnaHQ6LjNlbX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9hc3QtdG9wLWNlbnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1jZW50ZXJ7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtZnVsbC13aWR0aHt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoe2JvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtdG9wLWxlZnR7dG9wOjEycHg7bGVmdDoxMnB4fS50b2FzdC10b3AtcmlnaHR7dG9wOjEycHg7cmlnaHQ6MTJweH0udG9hc3QtYm90dG9tLXJpZ2h0e3JpZ2h0OjEycHg7Ym90dG9tOjEycHh9LnRvYXN0LWJvdHRvbS1sZWZ0e2JvdHRvbToxMnB4O2xlZnQ6MTJweH0jdG9hc3QtY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5OTk5O3BvaW50ZXItZXZlbnRzOm5vbmV9I3RvYXN0LWNvbnRhaW5lciAqey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdG9hc3QtY29udGFpbmVyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtwb2ludGVyLWV2ZW50czphdXRvO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjojRkZGO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtkaXJlY3Rpb246cnRsO3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDE1cHggY2VudGVyfSN0b2FzdC1jb250YWluZXI+ZGl2OmhvdmVyey1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjMDAwOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjMDAwO2JveC1zaGFkb3c6MCAwIDEycHggIzAwMDtvcGFjaXR5OjE7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7Y3Vyc29yOnBvaW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtZXJyb3J7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtd2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyPmRpdnt3aWR0aDozMDBweDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2e3dpZHRoOjk2JTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFBMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNCRDM2MkZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMkY5NkI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I0Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxMWVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6MjQxcHgpIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjhweCA4cHggOHB4IDUwcHg7d2lkdGg6MThlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzo4cHggNTBweCA4cHggOHB4fSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotLjJlbTt0b3A6LS4yZW19I3RvYXN0LWNvbnRhaW5lciAucnRsIC50b2FzdC1jbG9zZS1idXR0b257bGVmdDotLjJlbTtyaWdodDouMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweH19CgovKiBUb2FzdHIgQ3VzdG9tIE92ZXJyaWRlcyovCgoudG9hc3Qtc3VjY2VzcyB7Cglmb250LXNpemU6IDE2cHg7Cn0KCi50b2FzdC13YXJuaW5nIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIHsKCWJvdHRvbTowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiB7c2V0dGluZz0ic2RuX3RvYXN0cl9zaXpldyJ9JTsKfQoKLnRvYXN0LXRvcC1mdWxsLXdpZHRoIHsKCXRvcDowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiA5MCU7Cn0KCiN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2IHsKICAgd2lkdGg6IDk2JTsKICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQ==OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7Cgo7KCBmdW5jdGlvbigkLCBfLCB1bmRlZmluZWQpewoidXNlIHN0cmljdCI7CgoJCXRvYXN0ci5vcHRpb25zID0gewoJCQkJImNsb3NlQnV0dG9uIjogZmFsc2UsCgkJCQkiZGVidWciOiBmYWxzZSwKCQkJCSJuZXdlc3RPblRvcCI6IGZhbHNlLAoJCQkJInByb2dyZXNzQmFyIjogdHJ1ZSwKCQkJCSJwb3NpdGlvbkNsYXNzIjogInRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIiwKCQkJCSJwcmV2ZW50RHVwbGljYXRlcyI6IGZhbHNlLAoJCQkJIm9uY2xpY2siOiBudWxsLAoJCQkJInNob3dEdXJhdGlvbiI6ICIzMDAiLAoJCQkJImhpZGVEdXJhdGlvbiI6ICIxMDAwIiwKCQkJCSJ0aW1lT3V0IjogIjYwMDAiLAoJCQkJImV4dGVuZGVkVGltZU91dCI6ICIxMDAwIiwKCQkJCSJzaG93RWFzaW5nIjogInN3aW5nIiwKCQkJCSJoaWRlRWFzaW5nIjogImxpbmVhciIsCgkJCQkic2hvd01ldGhvZCI6ICJmYWRlSW4iLAoJCQkJImhpZGVNZXRob2QiOiAiZmFkZU91dCIKCQl9OwoKCQlsZXQgdmlzaWJsZU1lc3NhZ2UgPSAkKCIudG9hc3Qtc3VjY2VzcyIpLmh0bWwoKTsKCQkJCWlmICh2aXNpYmxlTWVzc2FnZSAmJiB2aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgCQkJCXRvYXN0ci5zdWNjZXNzKHZpc2libGVNZXNzYWdlLCAiIiwgewogICAgCQkJCWNvbnRhaW5lcklkOiAidG9hc3QtY29udGFpbmVyIiwKIAkJIH0pOwogIH0KCgkJbGV0IGludmlzaWJsZU1lc3NhZ2UgPSAkKCIudG9hc3Qtd2FybmluZyIpLmh0bWwoKTsKCQkJCWlmIChpbnZpc2libGVNZXNzYWdlICYmIGludmlzaWJsZU1lc3NhZ2UubGVuZ3RoID4gMCkgewogIAkJCQl0b2FzdHIud2FybmluZyhpbnZpc2libGVNZXNzYWdlLCAiIiwgewogICAgCQkJCWNvbnRhaW5lcklkOiAidG9hc3QtY29udGFpbmVyIgoJCQl9KTsKICB9Cgp9KTsoalF1ZXJ5LCBfKTs=SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypeAdmin NotificationsPage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsOnly groups with staff status and ACP access should be able to see these notifications. Preferably Admins onlyCurrent page addressSideNote will display on this pageSideNote will not display on this pageBeta 1.0.3]]>Toastr WidthToastr Width in Percentage, default is100% Toatr PositionTop RightBottom RightBottom LeftTop LeftTop Full WidthBottom Full WidthBottom CenterTop CenterSideNote ContentMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentStart DateEnd DateSideNote InfoBoxEnable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Descriptive text, keep it short for best displayingShow the Start and End TimesSideNote CustomizeSideNote BarSideNote TabAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Solid ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabSide Bar StyleStripedSolidImageImageTab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
values() ) return TRUE; } -return $form;]]>PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSd7e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMH19U2lkZU5vdGVCYXJTdHJpcGV7e2VuZGlmfX17e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMX19U2lkZU5vdGVCYXJTb2xpZHt7ZW5kaWZ9fSc+PC9kaXY+CiAgICB7e2VuZGlmfX0KCQkJICAgIDxkaXYgaWQ9J2VsU05NRGlhbG9nJyBjbGFzcz0naXBzSGlkZSBpcHNQYWQnPgogICAge3tpZiBzZXR0aW5ncy5zZG5faW5mb2JveF9lbmFibGVkfX0KCSAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdpcHNNZXNzYWdlIFNpZGVOb3RlSW5mb0JveCc+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlNpZGVOb3RlSW5mb0JveEljb24iPntleHByZXNzaW9uPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9pbmZvYm94X2NvbnRlbnQifSA8L3NwYW4+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X3Nob3d0aW1lID09IDF9fQogICAgICAgICAgICAgICAgICAgIDxicj48c3Ryb25nPlN0YXJ0IFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9zdGFydCIgbm9yZWxhdGl2ZT0iZmFsc2UifSA8PiA8c3Ryb25nPkVuZCBUaW1lOjwvc3Ryb25nPiB7ZGF0ZXRpbWU9IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2RhdGVfZW5kIiBub3JlbGF0aXZlPSJmYWxzZSJ9CiAgICB7e2VuZGlmfX0KICAgICAgICAgICAgICAgPC9kaXY+CiAge3tlbmRpZn19CgkJCQkgICAgIDxwIGNsYXNzPSdpcHNUeXBlX3Jlc2V0IGlwc1NwYWNlcl9ib3R0b20gaXBzVHlwZV9ub3JtYWwnPgogICAgICAgICAgICAgICB7bGFuZz0ic2RuX2xnZGVzY192YWx1ZSJ9CgkJCQkgICAgPC9wPgoKCXt7aWYgc2V0dGluZ3Muc2RuX2hpZGV9fQoJe3tpZiAhc2V0dGluZ3Muc2RuX2hpZGVfZ3Vlc3RzfX0KCQkJCSAgIDxkaXYgaWQ9IlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIj4KCQkJCQkgIDxhIGNsYXNzPSJpcHNCdXR0b24gaXBzQnV0dG9uX3ZlcnlTbWFsbCBpcHNCdXR0b25faW1wb3J0YW50IGlwc0J1dHRvbl9mdWxsV2lkdGgiIGhyZWY9Int1cmw9ImFwcD1jb3JlJm1vZHVsZT1zeXN0ZW0mc2VjdGlvbj1wbHVnaW5zJmRvPVNpZGVOb3RlRGlzbWlzcyIgY3NyZj0iMSJ9IiBkYXRhLWlwc3Rvb2x0aXAgdGl0bGU9IntsYW5nPSdzZG5faGlkZV90b29sdGlwJ30iIGRhdGEtYWN0aW9uPSJkaXNtaXNzIj57bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9PC9hPgoJCQkJICAgPC9kaXY+Cgl7e2Vsc2VpZiBzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHMgYW5kICFcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+bWVtYmVyX2lkIH19CiAgICAgICAgICAgICAgICAgIDxwPiA8L3A+Cgl7e2Vsc2V9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZW5kaWZ9fQoJe3tlbmRpZn19CiAgICAgICAgICAgIDwvZGl2Pgp7e2VuZGlmfX0KCgp7e2lmICgkZW5hYmxlZCA9PSAxKSAmJiAoJFVSTGVuYWJsZWQgPT0gMSkgJiYgKCRwYWdldmlzaWJsZSA9PSAxKX19Cgk8ZGl2IGlkPSJzZG5TaWRlTm90ZSIgY2xhc3M9InRvYXN0LXN1Y2Nlc3MiIGhpZGRlbj4KCQl7bGFuZz0ic2RuX3BhZ2VfYWRkcmVzcyJ9IDxzdHJvbmc+eyRjdXJyZW50X3VybH08L3N0cm9uZz48L2JyPjxlbT57bGFuZz0ic2RuX3BhZ2VfZGlzcGxheV95ZXMifTwvZW0+Cgk8L2Rpdj4Ke3tlbHNlaWYgKCRlbmFibGVkID09IDEpICYmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDApfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtd2FybmluZyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X25vIn08L2VtPgoJPC9kaXY+Cnt7ZW5kaWZ9fQ==LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhclN0cmlwZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyU3RyaXBlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhclN0cmlwZSB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJTb2xpZCB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fc29saWRfY29sb3IifTsKCWJhY2tncm91bmQtc2l6ZTogODBweCA4MHB4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wOwoJei1pbmRleDogOTk5OTsKfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYmlnCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDcwcHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkBrZXlmcmFtZXMgcHVsc2UKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMzVweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpAa2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLlNpZGVOb3RlVGFiOmhvdmVyOmFmdGVyIHsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2hvdmVyY29sb3IifTsKfQoKCS5TaWRlTm90ZVRhYjpob3ZlciB7CgkJY3Vyc29yOiBoZWxwOwoJfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVUYWIgewoJCWxlZnQ6IDA7Cgl9CglodG1sW2Rpcj0icnRsIl0gLlNpZGVOb3RlVGFiIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZUluZm9Cb3ggewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKCWJhY2tncm91bmQ6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9jb2xvciJ9Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbiB7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9mb250aWNvbl9zaXplIn1weDsKfQoKLlNpZGVOb3RlSW5mb0JveEljb246YmVmb3JlIHsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAwLjNyZW07Cn0KCi8qIFBIT05FUyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKLlNpZGVOb3RlQmFyU3RyaXBlIHsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMDsKCXRvcDogMDsKCXdpZHRoOiA1cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX2JhY2tncm91bmRfY29sb3IifTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA1MDA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCgkuU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCAyMHB4IDIwcHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMTBweDsKCXdpZHRoOiAzNXB4OwoJaGVpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiAzMHB4OwoJei1pbmRleDogMTA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cgl9CgoKLlNpZGVOb3RlVGFiIHsKICAgIGJvcmRlci1yYWRpdXM6IDAge3NldHRpbmc9InNkbl90YWJfcmFkaXVzIn1weCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IDA7Cglwb3NpdGlvbjogZml4ZWQ7CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAndG9wJ319Cgl0b3A6IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAnYm90dG9tJ319Cglib3R0b206IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19Cgl3aWR0aDoge3NldHRpbmc9InNkbl90YWJfc2l6ZXcifXB4OwoJaGVpZ2h0OiB7c2V0dGluZz0ic2RuX3RhYl9zaXplaCJ9cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX3RhYl9jb2xvciJ9OwoJdGV4dC1zaGFkb3c6IDBweCAxcHggNHB4IHJnYmEoMTUxLCAxMTIsIDMwLCAwLjUpOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJbGluZS1oZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCXotaW5kZXg6IDk5OTg7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCi5TaWRlTm90ZVRhYjpiZWZvcmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwoJY29udGVudDogJ1x7c2V0dGluZz0ic2RuX2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwoJZm9udC1zaXplOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX3NpemUifXB4OwoJY29sb3I6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fY29sb3IifTsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMn19CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gM319CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CiAgICBhbmltYXRpb246IHB1bHNlIDFzIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMX19Cgktd2Via2l0LWFuaW1hdGlvbjogYmxpbmtlciAxcyBzdGVwLXN0YXJ0IGluZmluaXRlOwoJYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQogICB9Cn0KCi8qIFRvYXN0ciAqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6NzAwfS50b2FzdC1tZXNzYWdley1tcy13b3JkLXdyYXA6YnJlYWstd29yZDt3b3JkLXdyYXA6YnJlYWstd29yZH0udG9hc3QtbWVzc2FnZSBhLC50b2FzdC1tZXNzYWdlIGxhYmVse2NvbG9yOiNGRkZ9LnRvYXN0LW1lc3NhZ2UgYTpob3Zlcntjb2xvcjojQ0NDO3RleHQtZGVjb3JhdGlvbjpub25lfS50b2FzdC1jbG9zZS1idXR0b257cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6LS4zZW07dG9wOi0uM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojRkZGOy13ZWJraXQtdGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtsaW5lLWhlaWdodDoxfS50b2FzdC1jbG9zZS1idXR0b246Zm9jdXMsLnRvYXN0LWNsb3NlLWJ1dHRvbjpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfS5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uM2VtO2Zsb2F0OmxlZnQ7cmlnaHQ6LjNlbX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9hc3QtdG9wLWNlbnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1jZW50ZXJ7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtZnVsbC13aWR0aHt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoe2JvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtdG9wLWxlZnR7dG9wOjEycHg7bGVmdDoxMnB4fS50b2FzdC10b3AtcmlnaHR7dG9wOjEycHg7cmlnaHQ6MTJweH0udG9hc3QtYm90dG9tLXJpZ2h0e3JpZ2h0OjEycHg7Ym90dG9tOjEycHh9LnRvYXN0LWJvdHRvbS1sZWZ0e2JvdHRvbToxMnB4O2xlZnQ6MTJweH0jdG9hc3QtY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5OTk5O3BvaW50ZXItZXZlbnRzOm5vbmV9I3RvYXN0LWNvbnRhaW5lciAqey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdG9hc3QtY29udGFpbmVyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtwb2ludGVyLWV2ZW50czphdXRvO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjojRkZGO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtkaXJlY3Rpb246cnRsO3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDE1cHggY2VudGVyfSN0b2FzdC1jb250YWluZXI+ZGl2OmhvdmVyey1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjMDAwOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjMDAwO2JveC1zaGFkb3c6MCAwIDEycHggIzAwMDtvcGFjaXR5OjE7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7Y3Vyc29yOnBvaW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtZXJyb3J7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtd2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyPmRpdnt3aWR0aDozMDBweDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2e3dpZHRoOjk2JTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFBMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNCRDM2MkZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMkY5NkI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I0Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxMWVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6MjQxcHgpIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjhweCA4cHggOHB4IDUwcHg7d2lkdGg6MThlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzo4cHggNTBweCA4cHggOHB4fSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotLjJlbTt0b3A6LS4yZW19I3RvYXN0LWNvbnRhaW5lciAucnRsIC50b2FzdC1jbG9zZS1idXR0b257bGVmdDotLjJlbTtyaWdodDouMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweH19CgovKiBUb2FzdHIgQ3VzdG9tIE92ZXJyaWRlcyovCgoudG9hc3Qtc3VjY2VzcyB7Cglmb250LXNpemU6IDE2cHg7Cn0KCi50b2FzdC13YXJuaW5nIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIHsKCWJvdHRvbTowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiB7c2V0dGluZz0ic2RuX3RvYXN0cl9zaXpldyJ9JTsKfQoKLnRvYXN0LXRvcC1mdWxsLXdpZHRoIHsKCXRvcDowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiA5MCU7Cn0KCiN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2IHsKICAgd2lkdGg6IDk2JTsKICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQ==OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7Cgo7KCBmdW5jdGlvbigkLCBfLCB1bmRlZmluZWQpewoidXNlIHN0cmljdCI7CgoJCXRvYXN0ci5vcHRpb25zID0gewoJCQkJImNsb3NlQnV0dG9uIjogZmFsc2UsCgkJCQkiZGVidWciOiBmYWxzZSwKCQkJCSJuZXdlc3RPblRvcCI6IGZhbHNlLAoJCQkJInByb2dyZXNzQmFyIjogdHJ1ZSwKCQkJCSJwb3NpdGlvbkNsYXNzIjogInRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIiwKCQkJCSJwcmV2ZW50RHVwbGljYXRlcyI6IGZhbHNlLAoJCQkJIm9uY2xpY2siOiBudWxsLAoJCQkJInNob3dEdXJhdGlvbiI6ICIzMDAiLAoJCQkJImhpZGVEdXJhdGlvbiI6ICIxMDAwIiwKCQkJCSJ0aW1lT3V0IjogIjYwMDAiLAoJCQkJImV4dGVuZGVkVGltZU91dCI6ICIxMDAwIiwKCQkJCSJzaG93RWFzaW5nIjogInN3aW5nIiwKCQkJCSJoaWRlRWFzaW5nIjogImxpbmVhciIsCgkJCQkic2hvd01ldGhvZCI6ICJmYWRlSW4iLAoJCQkJImhpZGVNZXRob2QiOiAiZmFkZU91dCIKCQl9OwoKCQlsZXQgdmlzaWJsZU1lc3NhZ2UgPSAkKCIudG9hc3Qtc3VjY2VzcyIpLmh0bWwoKTsKCQkJCWlmICh2aXNpYmxlTWVzc2FnZSAmJiB2aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgCQkJCXRvYXN0ci5zdWNjZXNzKHZpc2libGVNZXNzYWdlLCAiIiwgewogICAgCQkJCWNvbnRhaW5lcklkOiAidG9hc3QtY29udGFpbmVyIiwKIAkJIH0pOwogIH0KCgkJbGV0IGludmlzaWJsZU1lc3NhZ2UgPSAkKCIudG9hc3Qtd2FybmluZyIpLmh0bWwoKTsKCQkJCWlmIChpbnZpc2libGVNZXNzYWdlICYmIGludmlzaWJsZU1lc3NhZ2UubGVuZ3RoID4gMCkgewogIAkJCQl0b2FzdHIud2FybmluZyhpbnZpc2libGVNZXNzYWdlLCAiIiwgewogICAgCQkJCWNvbnRhaW5lcklkOiAidG9hc3QtY29udGFpbmVyIgoJCQl9KTsKICB9Cgp9KTsoalF1ZXJ5LCBfKTs=SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypeAdmin NotificationsPage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsOnly groups with staff status and ACP access should be able to see these notifications. Preferably Admins onlyCurrent page addressSideNote will display on this pageSideNote will not display on this pageToastr ConfigurationToastr WidthToastr Width in Percentage, default is100% Toatr PositionTop RightBottom RightBottom LeftTop LeftTop Full WidthBottom Full WidthBottom CenterTop CenterSideNote ContentMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentStart DateEnd DateSideNote InfoBoxEnable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Descriptive text, keep it short for best displayingShow the Start and End TimesSideNote CustomizeSideNote BarSideNote TabAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Solid ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabSide Bar StyleStripedSolidImageImageTab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSd7e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMH19U2lkZU5vdGVCYXJTdHJpcGV7e2VuZGlmfX17e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMX19U2lkZU5vdGVCYXJTb2xpZHt7ZW5kaWZ9fSc+PC9kaXY+CiAgICB7e2VuZGlmfX0KCQkJICAgIDxkaXYgaWQ9J2VsU05NRGlhbG9nJyBjbGFzcz0naXBzSGlkZSBpcHNQYWQnPgogICAge3tpZiBzZXR0aW5ncy5zZG5faW5mb2JveF9lbmFibGVkfX0KCSAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdpcHNNZXNzYWdlIFNpZGVOb3RlSW5mb0JveCc+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlNpZGVOb3RlSW5mb0JveEljb24iPntleHByZXNzaW9uPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9pbmZvYm94X2NvbnRlbnQifSA8L3NwYW4+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X3Nob3d0aW1lID09IDF9fQogICAgICAgICAgICAgICAgICAgIDxicj48c3Ryb25nPlN0YXJ0IFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9zdGFydCIgbm9yZWxhdGl2ZT0iZmFsc2UifSA8PiA8c3Ryb25nPkVuZCBUaW1lOjwvc3Ryb25nPiB7ZGF0ZXRpbWU9IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2RhdGVfZW5kIiBub3JlbGF0aXZlPSJmYWxzZSJ9CiAgICB7e2VuZGlmfX0KICAgICAgICAgICAgICAgPC9kaXY+CiAge3tlbmRpZn19CgkJCQkgICAgIDxwIGNsYXNzPSdpcHNUeXBlX3Jlc2V0IGlwc1NwYWNlcl9ib3R0b20gaXBzVHlwZV9ub3JtYWwnPgogICAgICAgICAgICAgICB7bGFuZz0ic2RuX2xnZGVzY192YWx1ZSJ9CgkJCQkgICAgPC9wPgoKCXt7aWYgc2V0dGluZ3Muc2RuX2hpZGV9fQoJe3tpZiAhc2V0dGluZ3Muc2RuX2hpZGVfZ3Vlc3RzfX0KCQkJCSAgIDxkaXYgaWQ9IlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIj4KCQkJCQkgIDxhIGNsYXNzPSJpcHNCdXR0b24gaXBzQnV0dG9uX3ZlcnlTbWFsbCBpcHNCdXR0b25faW1wb3J0YW50IGlwc0J1dHRvbl9mdWxsV2lkdGgiIGhyZWY9Int1cmw9ImFwcD1jb3JlJm1vZHVsZT1zeXN0ZW0mc2VjdGlvbj1wbHVnaW5zJmRvPVNpZGVOb3RlRGlzbWlzcyIgY3NyZj0iMSJ9IiBkYXRhLWlwc3Rvb2x0aXAgdGl0bGU9IntsYW5nPSdzZG5faGlkZV90b29sdGlwJ30iIGRhdGEtYWN0aW9uPSJkaXNtaXNzIj57bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9PC9hPgoJCQkJICAgPC9kaXY+Cgl7e2Vsc2VpZiBzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHMgYW5kICFcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+bWVtYmVyX2lkIH19CiAgICAgICAgICAgICAgICAgIDxwPiA8L3A+Cgl7e2Vsc2V9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZW5kaWZ9fQoJe3tlbmRpZn19CiAgICAgICAgICAgIDwvZGl2Pgp7e2VuZGlmfX0KCgp7e2lmICgkZW5hYmxlZCA9PSAxKSAmJiAoJFVSTGVuYWJsZWQgPT0gMSkgJiYgKCRwYWdldmlzaWJsZSA9PSAxKX19Cgk8ZGl2IGlkPSJzZG5TaWRlTm90ZSIgY2xhc3M9InRvYXN0LXN1Y2Nlc3MiIGhpZGRlbj4KCQl7bGFuZz0ic2RuX3BhZ2VfYWRkcmVzcyJ9IDxzdHJvbmc+eyRjdXJyZW50X3VybH08L3N0cm9uZz48L2JyPjxlbT57bGFuZz0ic2RuX3BhZ2VfZGlzcGxheV95ZXMifTwvZW0+Cgk8L2Rpdj4Ke3tlbHNlaWYgKCRlbmFibGVkID09IDEpICYmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDApfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtd2FybmluZyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X25vIn08L2VtPgoJPC9kaXY+Cnt7ZW5kaWZ9fQ==LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhclN0cmlwZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyU3RyaXBlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhclN0cmlwZSB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJTb2xpZCB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fc29saWRfY29sb3IifTsKCWJhY2tncm91bmQtc2l6ZTogODBweCA4MHB4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wOwoJei1pbmRleDogOTk5OTsKfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYmlnCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDcwcHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkBrZXlmcmFtZXMgcHVsc2UKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMzVweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpAa2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLlNpZGVOb3RlVGFiOmhvdmVyOmFmdGVyIHsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2hvdmVyY29sb3IifTsKfQoKCS5TaWRlTm90ZVRhYjpob3ZlciB7CgkJY3Vyc29yOiBoZWxwOwoJfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVUYWIgewoJCWxlZnQ6IDA7Cgl9CglodG1sW2Rpcj0icnRsIl0gLlNpZGVOb3RlVGFiIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZUluZm9Cb3ggewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKCWJhY2tncm91bmQ6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9jb2xvciJ9Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbiB7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9mb250aWNvbl9zaXplIn1weDsKfQoKLlNpZGVOb3RlSW5mb0JveEljb246YmVmb3JlIHsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAwLjNyZW07Cn0KCi8qIFBIT05FUyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKLlNpZGVOb3RlQmFyU3RyaXBlIHsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMDsKCXRvcDogMDsKCXdpZHRoOiA1cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX2JhY2tncm91bmRfY29sb3IifTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA1MDA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCgkuU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCAyMHB4IDIwcHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMTBweDsKCXdpZHRoOiAzNXB4OwoJaGVpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiAzMHB4OwoJei1pbmRleDogMTA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cgl9CgoKLlNpZGVOb3RlVGFiIHsKICAgIGJvcmRlci1yYWRpdXM6IDAge3NldHRpbmc9InNkbl90YWJfcmFkaXVzIn1weCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IDA7Cglwb3NpdGlvbjogZml4ZWQ7CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAndG9wJ319Cgl0b3A6IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAnYm90dG9tJ319Cglib3R0b206IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19Cgl3aWR0aDoge3NldHRpbmc9InNkbl90YWJfc2l6ZXcifXB4OwoJaGVpZ2h0OiB7c2V0dGluZz0ic2RuX3RhYl9zaXplaCJ9cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX3RhYl9jb2xvciJ9OwoJdGV4dC1zaGFkb3c6IDBweCAxcHggNHB4IHJnYmEoMTUxLCAxMTIsIDMwLCAwLjUpOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJbGluZS1oZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCXotaW5kZXg6IDk5OTg7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCi5TaWRlTm90ZVRhYjpiZWZvcmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwoJY29udGVudDogJ1x7c2V0dGluZz0ic2RuX2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwoJZm9udC1zaXplOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX3NpemUifXB4OwoJY29sb3I6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fY29sb3IifTsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMn19CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gM319CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CiAgICBhbmltYXRpb246IHB1bHNlIDFzIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMX19Cgktd2Via2l0LWFuaW1hdGlvbjogYmxpbmtlciAxcyBzdGVwLXN0YXJ0IGluZmluaXRlOwoJYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQogICB9Cn0KCi8qIFRvYXN0ciAqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6NzAwfS50b2FzdC1tZXNzYWdley1tcy13b3JkLXdyYXA6YnJlYWstd29yZDt3b3JkLXdyYXA6YnJlYWstd29yZH0udG9hc3QtbWVzc2FnZSBhLC50b2FzdC1tZXNzYWdlIGxhYmVse2NvbG9yOiNGRkZ9LnRvYXN0LW1lc3NhZ2UgYTpob3Zlcntjb2xvcjojQ0NDO3RleHQtZGVjb3JhdGlvbjpub25lfS50b2FzdC1jbG9zZS1idXR0b257cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6LS4zZW07dG9wOi0uM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojRkZGOy13ZWJraXQtdGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtsaW5lLWhlaWdodDoxfS50b2FzdC1jbG9zZS1idXR0b246Zm9jdXMsLnRvYXN0LWNsb3NlLWJ1dHRvbjpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfS5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uM2VtO2Zsb2F0OmxlZnQ7cmlnaHQ6LjNlbX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9hc3QtdG9wLWNlbnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1jZW50ZXJ7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtZnVsbC13aWR0aHt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoe2JvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtdG9wLWxlZnR7dG9wOjEycHg7bGVmdDoxMnB4fS50b2FzdC10b3AtcmlnaHR7dG9wOjEycHg7cmlnaHQ6MTJweH0udG9hc3QtYm90dG9tLXJpZ2h0e3JpZ2h0OjEycHg7Ym90dG9tOjEycHh9LnRvYXN0LWJvdHRvbS1sZWZ0e2JvdHRvbToxMnB4O2xlZnQ6MTJweH0jdG9hc3QtY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5OTk5O3BvaW50ZXItZXZlbnRzOm5vbmV9I3RvYXN0LWNvbnRhaW5lciAqey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdG9hc3QtY29udGFpbmVyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtwb2ludGVyLWV2ZW50czphdXRvO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjojRkZGO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtkaXJlY3Rpb246cnRsO3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDE1cHggY2VudGVyfSN0b2FzdC1jb250YWluZXI+ZGl2OmhvdmVyey1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjMDAwOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjMDAwO2JveC1zaGFkb3c6MCAwIDEycHggIzAwMDtvcGFjaXR5OjE7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7Y3Vyc29yOnBvaW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtZXJyb3J7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtd2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyPmRpdnt3aWR0aDozMDBweDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2e3dpZHRoOjk2JTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFBMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNCRDM2MkZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMkY5NkI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I0Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxMWVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6MjQxcHgpIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjhweCA4cHggOHB4IDUwcHg7d2lkdGg6MThlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzo4cHggNTBweCA4cHggOHB4fSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotLjJlbTt0b3A6LS4yZW19I3RvYXN0LWNvbnRhaW5lciAucnRsIC50b2FzdC1jbG9zZS1idXR0b257bGVmdDotLjJlbTtyaWdodDouMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweH19CgovKiBUb2FzdHIgQ3VzdG9tIE92ZXJyaWRlcyovCgoudG9hc3Qtc3VjY2VzcyB7Cglmb250LXNpemU6IDE2cHg7Cn0KCi50b2FzdC13YXJuaW5nIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIHsKCWJvdHRvbTowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiB7c2V0dGluZz0ic2RuX3RvYXN0cl9zaXpldyJ9JTsKfQoKLnRvYXN0LXRvcC1mdWxsLXdpZHRoIHsKCXRvcDowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiA5MCU7Cn0KCiN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2IHsKICAgd2lkdGg6IDk2JTsKICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQ==OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7Cgo7KCBmdW5jdGlvbigkLCBfLCB1bmRlZmluZWQpewoidXNlIHN0cmljdCI7CgoJCXRvYXN0ci5vcHRpb25zID0gewoJCQkJImNsb3NlQnV0dG9uIjogZmFsc2UsCgkJCQkiZGVidWciOiBmYWxzZSwKCQkJCSJuZXdlc3RPblRvcCI6IGZhbHNlLAoJCQkJInByb2dyZXNzQmFyIjogdHJ1ZSwKCQkJCSJwb3NpdGlvbkNsYXNzIjogInRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIiwKCQkJCSJwcmV2ZW50RHVwbGljYXRlcyI6IGZhbHNlLAoJCQkJIm9uY2xpY2siOiBudWxsLAoJCQkJInNob3dEdXJhdGlvbiI6ICIzMDAiLAoJCQkJImhpZGVEdXJhdGlvbiI6ICIxMDAwIiwKCQkJCSJ0aW1lT3V0IjogIjYwMDAiLAoJCQkJImV4dGVuZGVkVGltZU91dCI6ICIxMDAwIiwKCQkJCSJzaG93RWFzaW5nIjogInN3aW5nIiwKCQkJCSJoaWRlRWFzaW5nIjogImxpbmVhciIsCgkJCQkic2hvd01ldGhvZCI6ICJmYWRlSW4iLAoJCQkJImhpZGVNZXRob2QiOiAiZmFkZU91dCIKCQl9OwoKCQlsZXQgdmlzaWJsZU1lc3NhZ2UgPSAkKCIudG9hc3Qtc3VjY2VzcyIpLmh0bWwoKTsKCQkJCWlmICh2aXNpYmxlTWVzc2FnZSAmJiB2aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgCQkJCXRvYXN0ci5zdWNjZXNzKHZpc2libGVNZXNzYWdlLCAiIiwgewogICAgCQkJCWNvbnRhaW5lcklkOiAidG9hc3QtY29udGFpbmVyIiwKIAkJIH0pOwogIH0KCgkJbGV0IGludmlzaWJsZU1lc3NhZ2UgPSAkKCIudG9hc3Qtd2FybmluZyIpLmh0bWwoKTsKCQkJCWlmIChpbnZpc2libGVNZXNzYWdlICYmIGludmlzaWJsZU1lc3NhZ2UubGVuZ3RoID4gMCkgewogIAkJCQl0b2FzdHIud2FybmluZyhpbnZpc2libGVNZXNzYWdlLCAiIiwgewogICAgCQkJCWNvbnRhaW5lcklkOiAidG9hc3QtY29udGFpbmVyIgoJCQl9KTsKICB9Cgp9KTsoalF1ZXJ5LCBfKTs=SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypeAdmin NotificationsPage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsOnly groups with staff status and ACP access should be able to see these notifications. Preferably Admins onlyCurrent page addressSideNote will display on this pageSideNote will not display on this pageBeta 1.0.3]]>Toastr WidthToastr Width in Percentage, default is100% Toatr PositionTop RightBottom RightBottom LeftTop LeftTop Full WidthBottom Full WidthBottom CenterTop CenterSideNote ContentMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentStart DateEnd DateSideNote InfoBoxEnable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Descriptive text, keep it short for best displayingShow the Start and End TimesSideNote CustomizeSideNote BarSideNote TabAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Solid ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabSide Bar StyleStripedSolidImageImageTab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
Date: Mon, 22 Apr 2019 23:11:01 -0400 Subject: [PATCH 22/23] minus image --- src/IPS4.3/SideNote.xml | 2 +- src/IPS4.4/SideNote.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/IPS4.3/SideNote.xml b/src/IPS4.3/SideNote.xml index 1cf1dbb..3d2d689 100644 --- a/src/IPS4.3/SideNote.xml +++ b/src/IPS4.3/SideNote.xml @@ -274,7 +274,7 @@ if ( $values = $form->values() ) return TRUE; } -return $form;]]>PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSd7e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMH19U2lkZU5vdGVCYXJTdHJpcGV7e2VuZGlmfX17e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMX19U2lkZU5vdGVCYXJTb2xpZHt7ZW5kaWZ9fSc+PC9kaXY+CiAgICB7e2VuZGlmfX0KCQkJICAgIDxkaXYgaWQ9J2VsU05NRGlhbG9nJyBjbGFzcz0naXBzSGlkZSBpcHNQYWQnPgogICAge3tpZiBzZXR0aW5ncy5zZG5faW5mb2JveF9lbmFibGVkfX0KCSAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdpcHNNZXNzYWdlIFNpZGVOb3RlSW5mb0JveCc+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlNpZGVOb3RlSW5mb0JveEljb24iPntleHByZXNzaW9uPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9pbmZvYm94X2NvbnRlbnQifSA8L3NwYW4+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X3Nob3d0aW1lID09IDF9fQogICAgICAgICAgICAgICAgICAgIDxicj48c3Ryb25nPlN0YXJ0IFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9zdGFydCIgbm9yZWxhdGl2ZT0iZmFsc2UifSA8PiA8c3Ryb25nPkVuZCBUaW1lOjwvc3Ryb25nPiB7ZGF0ZXRpbWU9IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2RhdGVfZW5kIiBub3JlbGF0aXZlPSJmYWxzZSJ9CiAgICB7e2VuZGlmfX0KICAgICAgICAgICAgICAgPC9kaXY+CiAge3tlbmRpZn19CgkJCQkgICAgIDxwIGNsYXNzPSdpcHNUeXBlX3Jlc2V0IGlwc1NwYWNlcl9ib3R0b20gaXBzVHlwZV9ub3JtYWwnPgogICAgICAgICAgICAgICB7bGFuZz0ic2RuX2xnZGVzY192YWx1ZSJ9CgkJCQkgICAgPC9wPgoKCXt7aWYgc2V0dGluZ3Muc2RuX2hpZGV9fQoJe3tpZiAhc2V0dGluZ3Muc2RuX2hpZGVfZ3Vlc3RzfX0KCQkJCSAgIDxkaXYgaWQ9IlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIj4KCQkJCQkgIDxhIGNsYXNzPSJpcHNCdXR0b24gaXBzQnV0dG9uX3ZlcnlTbWFsbCBpcHNCdXR0b25faW1wb3J0YW50IGlwc0J1dHRvbl9mdWxsV2lkdGgiIGhyZWY9Int1cmw9ImFwcD1jb3JlJm1vZHVsZT1zeXN0ZW0mc2VjdGlvbj1wbHVnaW5zJmRvPVNpZGVOb3RlRGlzbWlzcyIgY3NyZj0iMSJ9IiBkYXRhLWlwc3Rvb2x0aXAgdGl0bGU9IntsYW5nPSdzZG5faGlkZV90b29sdGlwJ30iIGRhdGEtYWN0aW9uPSJkaXNtaXNzIj57bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9PC9hPgoJCQkJICAgPC9kaXY+Cgl7e2Vsc2VpZiBzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHMgYW5kICFcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+bWVtYmVyX2lkIH19CiAgICAgICAgICAgICAgICAgIDxwPiA8L3A+Cgl7e2Vsc2V9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZW5kaWZ9fQoJe3tlbmRpZn19CiAgICAgICAgICAgIDwvZGl2Pgp7e2VuZGlmfX0KCgp7e2lmICgkZW5hYmxlZCA9PSAxKSAmJiAoJFVSTGVuYWJsZWQgPT0gMSkgJiYgKCRwYWdldmlzaWJsZSA9PSAxKX19Cgk8ZGl2IGlkPSJzZG5TaWRlTm90ZSIgY2xhc3M9InRvYXN0LXN1Y2Nlc3MiIGhpZGRlbj4KCQl7bGFuZz0ic2RuX3BhZ2VfYWRkcmVzcyJ9IDxzdHJvbmc+eyRjdXJyZW50X3VybH08L3N0cm9uZz48L2JyPjxlbT57bGFuZz0ic2RuX3BhZ2VfZGlzcGxheV95ZXMifTwvZW0+Cgk8L2Rpdj4Ke3tlbHNlaWYgKCRlbmFibGVkID09IDEpICYmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDApfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtd2FybmluZyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X25vIn08L2VtPgoJPC9kaXY+Cnt7ZW5kaWZ9fQ==LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhclN0cmlwZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyU3RyaXBlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhclN0cmlwZSB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJTb2xpZCB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fc29saWRfY29sb3IifTsKCWJhY2tncm91bmQtc2l6ZTogODBweCA4MHB4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wOwoJei1pbmRleDogOTk5OTsKfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYmlnCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDcwcHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkBrZXlmcmFtZXMgcHVsc2UKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMzVweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpAa2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLlNpZGVOb3RlVGFiOmhvdmVyOmFmdGVyIHsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2hvdmVyY29sb3IifTsKfQoKCS5TaWRlTm90ZVRhYjpob3ZlciB7CgkJY3Vyc29yOiBoZWxwOwoJfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVUYWIgewoJCWxlZnQ6IDA7Cgl9CglodG1sW2Rpcj0icnRsIl0gLlNpZGVOb3RlVGFiIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZUluZm9Cb3ggewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKCWJhY2tncm91bmQ6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9jb2xvciJ9Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbiB7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9mb250aWNvbl9zaXplIn1weDsKfQoKLlNpZGVOb3RlSW5mb0JveEljb246YmVmb3JlIHsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAwLjNyZW07Cn0KCi8qIFBIT05FUyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKLlNpZGVOb3RlQmFyU3RyaXBlIHsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMDsKCXRvcDogMDsKCXdpZHRoOiA1cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX2JhY2tncm91bmRfY29sb3IifTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA1MDA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCgkuU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCAyMHB4IDIwcHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMTBweDsKCXdpZHRoOiAzNXB4OwoJaGVpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiAzMHB4OwoJei1pbmRleDogMTA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cgl9CgoKLlNpZGVOb3RlVGFiIHsKICAgIGJvcmRlci1yYWRpdXM6IDAge3NldHRpbmc9InNkbl90YWJfcmFkaXVzIn1weCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IDA7Cglwb3NpdGlvbjogZml4ZWQ7CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAndG9wJ319Cgl0b3A6IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAnYm90dG9tJ319Cglib3R0b206IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19Cgl3aWR0aDoge3NldHRpbmc9InNkbl90YWJfc2l6ZXcifXB4OwoJaGVpZ2h0OiB7c2V0dGluZz0ic2RuX3RhYl9zaXplaCJ9cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX3RhYl9jb2xvciJ9OwoJdGV4dC1zaGFkb3c6IDBweCAxcHggNHB4IHJnYmEoMTUxLCAxMTIsIDMwLCAwLjUpOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJbGluZS1oZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCXotaW5kZXg6IDk5OTg7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCi5TaWRlTm90ZVRhYjpiZWZvcmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwoJY29udGVudDogJ1x7c2V0dGluZz0ic2RuX2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwoJZm9udC1zaXplOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX3NpemUifXB4OwoJY29sb3I6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fY29sb3IifTsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMn19CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gM319CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CiAgICBhbmltYXRpb246IHB1bHNlIDFzIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMX19Cgktd2Via2l0LWFuaW1hdGlvbjogYmxpbmtlciAxcyBzdGVwLXN0YXJ0IGluZmluaXRlOwoJYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQogICB9Cn0KCi8qIFRvYXN0ciAqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6NzAwfS50b2FzdC1tZXNzYWdley1tcy13b3JkLXdyYXA6YnJlYWstd29yZDt3b3JkLXdyYXA6YnJlYWstd29yZH0udG9hc3QtbWVzc2FnZSBhLC50b2FzdC1tZXNzYWdlIGxhYmVse2NvbG9yOiNGRkZ9LnRvYXN0LW1lc3NhZ2UgYTpob3Zlcntjb2xvcjojQ0NDO3RleHQtZGVjb3JhdGlvbjpub25lfS50b2FzdC1jbG9zZS1idXR0b257cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6LS4zZW07dG9wOi0uM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojRkZGOy13ZWJraXQtdGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtsaW5lLWhlaWdodDoxfS50b2FzdC1jbG9zZS1idXR0b246Zm9jdXMsLnRvYXN0LWNsb3NlLWJ1dHRvbjpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfS5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uM2VtO2Zsb2F0OmxlZnQ7cmlnaHQ6LjNlbX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9hc3QtdG9wLWNlbnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1jZW50ZXJ7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtZnVsbC13aWR0aHt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoe2JvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtdG9wLWxlZnR7dG9wOjEycHg7bGVmdDoxMnB4fS50b2FzdC10b3AtcmlnaHR7dG9wOjEycHg7cmlnaHQ6MTJweH0udG9hc3QtYm90dG9tLXJpZ2h0e3JpZ2h0OjEycHg7Ym90dG9tOjEycHh9LnRvYXN0LWJvdHRvbS1sZWZ0e2JvdHRvbToxMnB4O2xlZnQ6MTJweH0jdG9hc3QtY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5OTk5O3BvaW50ZXItZXZlbnRzOm5vbmV9I3RvYXN0LWNvbnRhaW5lciAqey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdG9hc3QtY29udGFpbmVyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtwb2ludGVyLWV2ZW50czphdXRvO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjojRkZGO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtkaXJlY3Rpb246cnRsO3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDE1cHggY2VudGVyfSN0b2FzdC1jb250YWluZXI+ZGl2OmhvdmVyey1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjMDAwOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjMDAwO2JveC1zaGFkb3c6MCAwIDEycHggIzAwMDtvcGFjaXR5OjE7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7Y3Vyc29yOnBvaW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtZXJyb3J7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtd2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyPmRpdnt3aWR0aDozMDBweDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2e3dpZHRoOjk2JTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFBMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNCRDM2MkZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMkY5NkI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I0Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxMWVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6MjQxcHgpIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjhweCA4cHggOHB4IDUwcHg7d2lkdGg6MThlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzo4cHggNTBweCA4cHggOHB4fSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotLjJlbTt0b3A6LS4yZW19I3RvYXN0LWNvbnRhaW5lciAucnRsIC50b2FzdC1jbG9zZS1idXR0b257bGVmdDotLjJlbTtyaWdodDouMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweH19CgovKiBUb2FzdHIgQ3VzdG9tIE92ZXJyaWRlcyovCgoudG9hc3Qtc3VjY2VzcyB7Cglmb250LXNpemU6IDE2cHg7Cn0KCi50b2FzdC13YXJuaW5nIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIHsKCWJvdHRvbTowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiB7c2V0dGluZz0ic2RuX3RvYXN0cl9zaXpldyJ9JTsKfQoKLnRvYXN0LXRvcC1mdWxsLXdpZHRoIHsKCXRvcDowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiA5MCU7Cn0KCiN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2IHsKICAgd2lkdGg6IDk2JTsKICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQ==OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7Cgo7KCBmdW5jdGlvbigkLCBfLCB1bmRlZmluZWQpewoidXNlIHN0cmljdCI7CgoJCXRvYXN0ci5vcHRpb25zID0gewoJCQkJImNsb3NlQnV0dG9uIjogZmFsc2UsCgkJCQkiZGVidWciOiBmYWxzZSwKCQkJCSJuZXdlc3RPblRvcCI6IGZhbHNlLAoJCQkJInByb2dyZXNzQmFyIjogdHJ1ZSwKCQkJCSJwb3NpdGlvbkNsYXNzIjogInRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIiwKCQkJCSJwcmV2ZW50RHVwbGljYXRlcyI6IGZhbHNlLAoJCQkJIm9uY2xpY2siOiBudWxsLAoJCQkJInNob3dEdXJhdGlvbiI6ICIzMDAiLAoJCQkJImhpZGVEdXJhdGlvbiI6ICIxMDAwIiwKCQkJCSJ0aW1lT3V0IjogIjYwMDAiLAoJCQkJImV4dGVuZGVkVGltZU91dCI6ICIxMDAwIiwKCQkJCSJzaG93RWFzaW5nIjogInN3aW5nIiwKCQkJCSJoaWRlRWFzaW5nIjogImxpbmVhciIsCgkJCQkic2hvd01ldGhvZCI6ICJmYWRlSW4iLAoJCQkJImhpZGVNZXRob2QiOiAiZmFkZU91dCIKCQl9OwoKCQlsZXQgdmlzaWJsZU1lc3NhZ2UgPSAkKCIudG9hc3Qtc3VjY2VzcyIpLmh0bWwoKTsKCQkJCWlmICh2aXNpYmxlTWVzc2FnZSAmJiB2aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgCQkJCXRvYXN0ci5zdWNjZXNzKHZpc2libGVNZXNzYWdlLCAiIiwgewogICAgCQkJCWNvbnRhaW5lcklkOiAidG9hc3QtY29udGFpbmVyIiwKIAkJIH0pOwogIH0KCgkJbGV0IGludmlzaWJsZU1lc3NhZ2UgPSAkKCIudG9hc3Qtd2FybmluZyIpLmh0bWwoKTsKCQkJCWlmIChpbnZpc2libGVNZXNzYWdlICYmIGludmlzaWJsZU1lc3NhZ2UubGVuZ3RoID4gMCkgewogIAkJCQl0b2FzdHIud2FybmluZyhpbnZpc2libGVNZXNzYWdlLCAiIiwgewogICAgCQkJCWNvbnRhaW5lcklkOiAidG9hc3QtY29udGFpbmVyIgoJCQl9KTsKICB9Cgp9KTsoalF1ZXJ5LCBfKTs=SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypeAdmin NotificationsPage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsOnly groups with staff status and ACP access should be able to see these notifications. Preferably Admins onlyCurrent page addressSideNote will display on this pageSideNote will not display on this pageBeta 1.0.3]]>Toastr WidthToastr Width in Percentage, default is100% Toatr PositionTop RightBottom RightBottom LeftTop LeftTop Full WidthBottom Full WidthBottom CenterTop CenterSideNote ContentMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentStart DateEnd DateSideNote InfoBoxEnable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Descriptive text, keep it short for best displayingShow the Start and End TimesSideNote CustomizeSideNote BarSideNote TabAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Solid ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabSide Bar StyleStripedSolidImageImageTab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSd7e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMH19U2lkZU5vdGVCYXJTdHJpcGV7e2VuZGlmfX17e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMX19U2lkZU5vdGVCYXJTb2xpZHt7ZW5kaWZ9fSc+PC9kaXY+CiAgICB7e2VuZGlmfX0KCQkJICAgIDxkaXYgaWQ9J2VsU05NRGlhbG9nJyBjbGFzcz0naXBzSGlkZSBpcHNQYWQnPgogICAge3tpZiBzZXR0aW5ncy5zZG5faW5mb2JveF9lbmFibGVkfX0KCSAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdpcHNNZXNzYWdlIFNpZGVOb3RlSW5mb0JveCc+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlNpZGVOb3RlSW5mb0JveEljb24iPntleHByZXNzaW9uPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9pbmZvYm94X2NvbnRlbnQifSA8L3NwYW4+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X3Nob3d0aW1lID09IDF9fQogICAgICAgICAgICAgICAgICAgIDxicj48c3Ryb25nPlN0YXJ0IFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9zdGFydCIgbm9yZWxhdGl2ZT0iZmFsc2UifSA8PiA8c3Ryb25nPkVuZCBUaW1lOjwvc3Ryb25nPiB7ZGF0ZXRpbWU9IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2RhdGVfZW5kIiBub3JlbGF0aXZlPSJmYWxzZSJ9CiAgICB7e2VuZGlmfX0KICAgICAgICAgICAgICAgPC9kaXY+CiAge3tlbmRpZn19CgkJCQkgICAgIDxwIGNsYXNzPSdpcHNUeXBlX3Jlc2V0IGlwc1NwYWNlcl9ib3R0b20gaXBzVHlwZV9ub3JtYWwnPgogICAgICAgICAgICAgICB7bGFuZz0ic2RuX2xnZGVzY192YWx1ZSJ9CgkJCQkgICAgPC9wPgoKCXt7aWYgc2V0dGluZ3Muc2RuX2hpZGV9fQoJe3tpZiAhc2V0dGluZ3Muc2RuX2hpZGVfZ3Vlc3RzfX0KCQkJCSAgIDxkaXYgaWQ9IlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIj4KCQkJCQkgIDxhIGNsYXNzPSJpcHNCdXR0b24gaXBzQnV0dG9uX3ZlcnlTbWFsbCBpcHNCdXR0b25faW1wb3J0YW50IGlwc0J1dHRvbl9mdWxsV2lkdGgiIGhyZWY9Int1cmw9ImFwcD1jb3JlJm1vZHVsZT1zeXN0ZW0mc2VjdGlvbj1wbHVnaW5zJmRvPVNpZGVOb3RlRGlzbWlzcyIgY3NyZj0iMSJ9IiBkYXRhLWlwc3Rvb2x0aXAgdGl0bGU9IntsYW5nPSdzZG5faGlkZV90b29sdGlwJ30iIGRhdGEtYWN0aW9uPSJkaXNtaXNzIj57bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9PC9hPgoJCQkJICAgPC9kaXY+Cgl7e2Vsc2VpZiBzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHMgYW5kICFcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+bWVtYmVyX2lkIH19CiAgICAgICAgICAgICAgICAgIDxwPiA8L3A+Cgl7e2Vsc2V9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZW5kaWZ9fQoJe3tlbmRpZn19CiAgICAgICAgICAgIDwvZGl2Pgp7e2VuZGlmfX0KCgp7e2lmICgkZW5hYmxlZCA9PSAxKSAmJiAoJFVSTGVuYWJsZWQgPT0gMSkgJiYgKCRwYWdldmlzaWJsZSA9PSAxKX19Cgk8ZGl2IGlkPSJzZG5TaWRlTm90ZSIgY2xhc3M9InRvYXN0LXN1Y2Nlc3MiIGhpZGRlbj4KCQl7bGFuZz0ic2RuX3BhZ2VfYWRkcmVzcyJ9IDxzdHJvbmc+eyRjdXJyZW50X3VybH08L3N0cm9uZz48L2JyPjxlbT57bGFuZz0ic2RuX3BhZ2VfZGlzcGxheV95ZXMifTwvZW0+Cgk8L2Rpdj4Ke3tlbHNlaWYgKCRlbmFibGVkID09IDEpICYmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDApfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtd2FybmluZyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X25vIn08L2VtPgoJPC9kaXY+Cnt7ZW5kaWZ9fQ==LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhclN0cmlwZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyU3RyaXBlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhclN0cmlwZSB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJTb2xpZCB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fc29saWRfY29sb3IifTsKCWJhY2tncm91bmQtc2l6ZTogODBweCA4MHB4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wOwoJei1pbmRleDogOTk5OTsKfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYmlnCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDcwcHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkBrZXlmcmFtZXMgcHVsc2UKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMzVweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpAa2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLlNpZGVOb3RlVGFiOmhvdmVyOmFmdGVyIHsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2hvdmVyY29sb3IifTsKfQoKCS5TaWRlTm90ZVRhYjpob3ZlciB7CgkJY3Vyc29yOiBoZWxwOwoJfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVUYWIgewoJCWxlZnQ6IDA7Cgl9CglodG1sW2Rpcj0icnRsIl0gLlNpZGVOb3RlVGFiIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZUluZm9Cb3ggewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKCWJhY2tncm91bmQ6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9jb2xvciJ9Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbiB7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9mb250aWNvbl9zaXplIn1weDsKfQoKLlNpZGVOb3RlSW5mb0JveEljb246YmVmb3JlIHsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAwLjNyZW07Cn0KCi8qIFBIT05FUyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKLlNpZGVOb3RlQmFyU3RyaXBlIHsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMDsKCXRvcDogMDsKCXdpZHRoOiA1cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX2JhY2tncm91bmRfY29sb3IifTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA1MDA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCgkuU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCAyMHB4IDIwcHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMTBweDsKCXdpZHRoOiAzNXB4OwoJaGVpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiAzMHB4OwoJei1pbmRleDogMTA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cgl9CgoKLlNpZGVOb3RlVGFiIHsKICAgIGJvcmRlci1yYWRpdXM6IDAge3NldHRpbmc9InNkbl90YWJfcmFkaXVzIn1weCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IDA7Cglwb3NpdGlvbjogZml4ZWQ7CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAndG9wJ319Cgl0b3A6IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAnYm90dG9tJ319Cglib3R0b206IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19Cgl3aWR0aDoge3NldHRpbmc9InNkbl90YWJfc2l6ZXcifXB4OwoJaGVpZ2h0OiB7c2V0dGluZz0ic2RuX3RhYl9zaXplaCJ9cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX3RhYl9jb2xvciJ9OwoJdGV4dC1zaGFkb3c6IDBweCAxcHggNHB4IHJnYmEoMTUxLCAxMTIsIDMwLCAwLjUpOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJbGluZS1oZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCXotaW5kZXg6IDk5OTg7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCi5TaWRlTm90ZVRhYjpiZWZvcmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwoJY29udGVudDogJ1x7c2V0dGluZz0ic2RuX2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwoJZm9udC1zaXplOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX3NpemUifXB4OwoJY29sb3I6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fY29sb3IifTsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMn19CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gM319CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CiAgICBhbmltYXRpb246IHB1bHNlIDFzIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMX19Cgktd2Via2l0LWFuaW1hdGlvbjogYmxpbmtlciAxcyBzdGVwLXN0YXJ0IGluZmluaXRlOwoJYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQogICB9Cn0KCi8qIFRvYXN0ciAqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6NzAwfS50b2FzdC1tZXNzYWdley1tcy13b3JkLXdyYXA6YnJlYWstd29yZDt3b3JkLXdyYXA6YnJlYWstd29yZH0udG9hc3QtbWVzc2FnZSBhLC50b2FzdC1tZXNzYWdlIGxhYmVse2NvbG9yOiNGRkZ9LnRvYXN0LW1lc3NhZ2UgYTpob3Zlcntjb2xvcjojQ0NDO3RleHQtZGVjb3JhdGlvbjpub25lfS50b2FzdC1jbG9zZS1idXR0b257cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6LS4zZW07dG9wOi0uM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojRkZGOy13ZWJraXQtdGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtsaW5lLWhlaWdodDoxfS50b2FzdC1jbG9zZS1idXR0b246Zm9jdXMsLnRvYXN0LWNsb3NlLWJ1dHRvbjpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfS5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uM2VtO2Zsb2F0OmxlZnQ7cmlnaHQ6LjNlbX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9hc3QtdG9wLWNlbnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1jZW50ZXJ7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtZnVsbC13aWR0aHt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoe2JvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtdG9wLWxlZnR7dG9wOjEycHg7bGVmdDoxMnB4fS50b2FzdC10b3AtcmlnaHR7dG9wOjEycHg7cmlnaHQ6MTJweH0udG9hc3QtYm90dG9tLXJpZ2h0e3JpZ2h0OjEycHg7Ym90dG9tOjEycHh9LnRvYXN0LWJvdHRvbS1sZWZ0e2JvdHRvbToxMnB4O2xlZnQ6MTJweH0jdG9hc3QtY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5OTk5O3BvaW50ZXItZXZlbnRzOm5vbmV9I3RvYXN0LWNvbnRhaW5lciAqey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdG9hc3QtY29udGFpbmVyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtwb2ludGVyLWV2ZW50czphdXRvO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjojRkZGO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtkaXJlY3Rpb246cnRsO3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDE1cHggY2VudGVyfSN0b2FzdC1jb250YWluZXI+ZGl2OmhvdmVyey1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjMDAwOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjMDAwO2JveC1zaGFkb3c6MCAwIDEycHggIzAwMDtvcGFjaXR5OjE7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7Y3Vyc29yOnBvaW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtZXJyb3J7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtd2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyPmRpdnt3aWR0aDozMDBweDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2e3dpZHRoOjk2JTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFBMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNCRDM2MkZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMkY5NkI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I0Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxMWVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6MjQxcHgpIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjhweCA4cHggOHB4IDUwcHg7d2lkdGg6MThlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzo4cHggNTBweCA4cHggOHB4fSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotLjJlbTt0b3A6LS4yZW19I3RvYXN0LWNvbnRhaW5lciAucnRsIC50b2FzdC1jbG9zZS1idXR0b257bGVmdDotLjJlbTtyaWdodDouMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweH19CgovKiBUb2FzdHIgQ3VzdG9tIE92ZXJyaWRlcyovCgoudG9hc3Qtc3VjY2VzcyB7Cglmb250LXNpemU6IDE2cHg7Cn0KCi50b2FzdC13YXJuaW5nIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIHsKCWJvdHRvbTowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiB7c2V0dGluZz0ic2RuX3RvYXN0cl9zaXpldyJ9JTsKfQoKLnRvYXN0LXRvcC1mdWxsLXdpZHRoIHsKCXRvcDowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiA5MCU7Cn0KCiN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2IHsKICAgd2lkdGg6IDk2JTsKICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQ==OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7CgokKGZ1bmN0aW9uICgpIHsKdG9hc3RyLm9wdGlvbnMgPSB7CiAgImNsb3NlQnV0dG9uIjogZmFsc2UsCiAgImRlYnVnIjogZmFsc2UsCiAgIm5ld2VzdE9uVG9wIjogZmFsc2UsCiAgInByb2dyZXNzQmFyIjogdHJ1ZSwKICAicG9zaXRpb25DbGFzcyI6ICJ0b2FzdC1ib3R0b20tZnVsbC13aWR0aCIsCiAgInByZXZlbnREdXBsaWNhdGVzIjogZmFsc2UsCiAgIm9uY2xpY2siOiBudWxsLAogICJzaG93RHVyYXRpb24iOiAiMzAwIiwKICAiaGlkZUR1cmF0aW9uIjogIjEwMDAiLAogICJ0aW1lT3V0IjogIjYwMDAiLAogICJleHRlbmRlZFRpbWVPdXQiOiAiMTAwMCIsCiAgInNob3dFYXNpbmciOiAic3dpbmciLAogICJoaWRlRWFzaW5nIjogImxpbmVhciIsCiAgInNob3dNZXRob2QiOiAiZmFkZUluIiwKICAiaGlkZU1ldGhvZCI6ICJmYWRlT3V0Igp9OwoKbGV0IHZpc2libGVNZXNzYWdlID0gJCgiLnRvYXN0LXN1Y2Nlc3MiKS5odG1sKCk7CmlmICh2aXNpYmxlTWVzc2FnZSAmJiB2aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgdG9hc3RyLnN1Y2Nlc3ModmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICBjb250YWluZXJJZDogInRvYXN0LWNvbnRhaW5lciIsCiAgfSk7Cn0KCmxldCBpbnZpc2libGVNZXNzYWdlID0gJCgiLnRvYXN0LXdhcm5pbmciKS5odG1sKCk7CmlmIChpbnZpc2libGVNZXNzYWdlICYmIGludmlzaWJsZU1lc3NhZ2UubGVuZ3RoID4gMCkgewogIHRvYXN0ci53YXJuaW5nKGludmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICBjb250YWluZXJJZDogInRvYXN0LWNvbnRhaW5lciIKICB9KTsKfQp9KTsoalF1ZXJ5LCBfKTs=SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypeAdmin NotificationsPage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsOnly groups with staff status and ACP access should be able to see these notifications. Preferably Admins onlyCurrent page addressSideNote will display on this pageSideNote will not display on this pageBeta 1.0.3]]>Toastr WidthToastr Width in Percentage, default is100% Toatr PositionTop RightBottom RightBottom LeftTop LeftTop Full WidthBottom Full WidthBottom CenterTop CenterSideNote ContentMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentStart DateEnd DateSideNote InfoBoxEnable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Descriptive text, keep it short for best displayingShow the Start and End TimesSideNote CustomizeSideNote BarSideNote TabAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Solid ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabSide Bar StyleStripedSolidImageImageTab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
values() ) return TRUE; } -return $form;]]>PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSd7e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMH19U2lkZU5vdGVCYXJTdHJpcGV7e2VuZGlmfX17e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMX19U2lkZU5vdGVCYXJTb2xpZHt7ZW5kaWZ9fSc+PC9kaXY+CiAgICB7e2VuZGlmfX0KCQkJICAgIDxkaXYgaWQ9J2VsU05NRGlhbG9nJyBjbGFzcz0naXBzSGlkZSBpcHNQYWQnPgogICAge3tpZiBzZXR0aW5ncy5zZG5faW5mb2JveF9lbmFibGVkfX0KCSAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdpcHNNZXNzYWdlIFNpZGVOb3RlSW5mb0JveCc+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlNpZGVOb3RlSW5mb0JveEljb24iPntleHByZXNzaW9uPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9pbmZvYm94X2NvbnRlbnQifSA8L3NwYW4+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X3Nob3d0aW1lID09IDF9fQogICAgICAgICAgICAgICAgICAgIDxicj48c3Ryb25nPlN0YXJ0IFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9zdGFydCIgbm9yZWxhdGl2ZT0iZmFsc2UifSA8PiA8c3Ryb25nPkVuZCBUaW1lOjwvc3Ryb25nPiB7ZGF0ZXRpbWU9IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2RhdGVfZW5kIiBub3JlbGF0aXZlPSJmYWxzZSJ9CiAgICB7e2VuZGlmfX0KICAgICAgICAgICAgICAgPC9kaXY+CiAge3tlbmRpZn19CgkJCQkgICAgIDxwIGNsYXNzPSdpcHNUeXBlX3Jlc2V0IGlwc1NwYWNlcl9ib3R0b20gaXBzVHlwZV9ub3JtYWwnPgogICAgICAgICAgICAgICB7bGFuZz0ic2RuX2xnZGVzY192YWx1ZSJ9CgkJCQkgICAgPC9wPgoKCXt7aWYgc2V0dGluZ3Muc2RuX2hpZGV9fQoJe3tpZiAhc2V0dGluZ3Muc2RuX2hpZGVfZ3Vlc3RzfX0KCQkJCSAgIDxkaXYgaWQ9IlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIj4KCQkJCQkgIDxhIGNsYXNzPSJpcHNCdXR0b24gaXBzQnV0dG9uX3ZlcnlTbWFsbCBpcHNCdXR0b25faW1wb3J0YW50IGlwc0J1dHRvbl9mdWxsV2lkdGgiIGhyZWY9Int1cmw9ImFwcD1jb3JlJm1vZHVsZT1zeXN0ZW0mc2VjdGlvbj1wbHVnaW5zJmRvPVNpZGVOb3RlRGlzbWlzcyIgY3NyZj0iMSJ9IiBkYXRhLWlwc3Rvb2x0aXAgdGl0bGU9IntsYW5nPSdzZG5faGlkZV90b29sdGlwJ30iIGRhdGEtYWN0aW9uPSJkaXNtaXNzIj57bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9PC9hPgoJCQkJICAgPC9kaXY+Cgl7e2Vsc2VpZiBzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHMgYW5kICFcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+bWVtYmVyX2lkIH19CiAgICAgICAgICAgICAgICAgIDxwPiA8L3A+Cgl7e2Vsc2V9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZW5kaWZ9fQoJe3tlbmRpZn19CiAgICAgICAgICAgIDwvZGl2Pgp7e2VuZGlmfX0KCgp7e2lmICgkZW5hYmxlZCA9PSAxKSAmJiAoJFVSTGVuYWJsZWQgPT0gMSkgJiYgKCRwYWdldmlzaWJsZSA9PSAxKX19Cgk8ZGl2IGlkPSJzZG5TaWRlTm90ZSIgY2xhc3M9InRvYXN0LXN1Y2Nlc3MiIGhpZGRlbj4KCQl7bGFuZz0ic2RuX3BhZ2VfYWRkcmVzcyJ9IDxzdHJvbmc+eyRjdXJyZW50X3VybH08L3N0cm9uZz48L2JyPjxlbT57bGFuZz0ic2RuX3BhZ2VfZGlzcGxheV95ZXMifTwvZW0+Cgk8L2Rpdj4Ke3tlbHNlaWYgKCRlbmFibGVkID09IDEpICYmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDApfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtd2FybmluZyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X25vIn08L2VtPgoJPC9kaXY+Cnt7ZW5kaWZ9fQ==LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhclN0cmlwZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyU3RyaXBlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhclN0cmlwZSB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJTb2xpZCB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fc29saWRfY29sb3IifTsKCWJhY2tncm91bmQtc2l6ZTogODBweCA4MHB4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wOwoJei1pbmRleDogOTk5OTsKfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYmlnCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDcwcHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkBrZXlmcmFtZXMgcHVsc2UKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMzVweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpAa2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLlNpZGVOb3RlVGFiOmhvdmVyOmFmdGVyIHsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2hvdmVyY29sb3IifTsKfQoKCS5TaWRlTm90ZVRhYjpob3ZlciB7CgkJY3Vyc29yOiBoZWxwOwoJfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVUYWIgewoJCWxlZnQ6IDA7Cgl9CglodG1sW2Rpcj0icnRsIl0gLlNpZGVOb3RlVGFiIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZUluZm9Cb3ggewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKCWJhY2tncm91bmQ6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9jb2xvciJ9Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbiB7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9mb250aWNvbl9zaXplIn1weDsKfQoKLlNpZGVOb3RlSW5mb0JveEljb246YmVmb3JlIHsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAwLjNyZW07Cn0KCi8qIFBIT05FUyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKLlNpZGVOb3RlQmFyU3RyaXBlIHsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMDsKCXRvcDogMDsKCXdpZHRoOiA1cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX2JhY2tncm91bmRfY29sb3IifTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA1MDA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCgkuU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCAyMHB4IDIwcHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMTBweDsKCXdpZHRoOiAzNXB4OwoJaGVpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiAzMHB4OwoJei1pbmRleDogMTA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cgl9CgoKLlNpZGVOb3RlVGFiIHsKICAgIGJvcmRlci1yYWRpdXM6IDAge3NldHRpbmc9InNkbl90YWJfcmFkaXVzIn1weCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IDA7Cglwb3NpdGlvbjogZml4ZWQ7CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAndG9wJ319Cgl0b3A6IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAnYm90dG9tJ319Cglib3R0b206IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19Cgl3aWR0aDoge3NldHRpbmc9InNkbl90YWJfc2l6ZXcifXB4OwoJaGVpZ2h0OiB7c2V0dGluZz0ic2RuX3RhYl9zaXplaCJ9cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX3RhYl9jb2xvciJ9OwoJdGV4dC1zaGFkb3c6IDBweCAxcHggNHB4IHJnYmEoMTUxLCAxMTIsIDMwLCAwLjUpOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJbGluZS1oZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCXotaW5kZXg6IDk5OTg7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCi5TaWRlTm90ZVRhYjpiZWZvcmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwoJY29udGVudDogJ1x7c2V0dGluZz0ic2RuX2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwoJZm9udC1zaXplOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX3NpemUifXB4OwoJY29sb3I6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fY29sb3IifTsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMn19CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gM319CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CiAgICBhbmltYXRpb246IHB1bHNlIDFzIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMX19Cgktd2Via2l0LWFuaW1hdGlvbjogYmxpbmtlciAxcyBzdGVwLXN0YXJ0IGluZmluaXRlOwoJYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQogICB9Cn0KCi8qIFRvYXN0ciAqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6NzAwfS50b2FzdC1tZXNzYWdley1tcy13b3JkLXdyYXA6YnJlYWstd29yZDt3b3JkLXdyYXA6YnJlYWstd29yZH0udG9hc3QtbWVzc2FnZSBhLC50b2FzdC1tZXNzYWdlIGxhYmVse2NvbG9yOiNGRkZ9LnRvYXN0LW1lc3NhZ2UgYTpob3Zlcntjb2xvcjojQ0NDO3RleHQtZGVjb3JhdGlvbjpub25lfS50b2FzdC1jbG9zZS1idXR0b257cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6LS4zZW07dG9wOi0uM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojRkZGOy13ZWJraXQtdGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtsaW5lLWhlaWdodDoxfS50b2FzdC1jbG9zZS1idXR0b246Zm9jdXMsLnRvYXN0LWNsb3NlLWJ1dHRvbjpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfS5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uM2VtO2Zsb2F0OmxlZnQ7cmlnaHQ6LjNlbX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9hc3QtdG9wLWNlbnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1jZW50ZXJ7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtZnVsbC13aWR0aHt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoe2JvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtdG9wLWxlZnR7dG9wOjEycHg7bGVmdDoxMnB4fS50b2FzdC10b3AtcmlnaHR7dG9wOjEycHg7cmlnaHQ6MTJweH0udG9hc3QtYm90dG9tLXJpZ2h0e3JpZ2h0OjEycHg7Ym90dG9tOjEycHh9LnRvYXN0LWJvdHRvbS1sZWZ0e2JvdHRvbToxMnB4O2xlZnQ6MTJweH0jdG9hc3QtY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5OTk5O3BvaW50ZXItZXZlbnRzOm5vbmV9I3RvYXN0LWNvbnRhaW5lciAqey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdG9hc3QtY29udGFpbmVyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtwb2ludGVyLWV2ZW50czphdXRvO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjojRkZGO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtkaXJlY3Rpb246cnRsO3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDE1cHggY2VudGVyfSN0b2FzdC1jb250YWluZXI+ZGl2OmhvdmVyey1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjMDAwOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjMDAwO2JveC1zaGFkb3c6MCAwIDEycHggIzAwMDtvcGFjaXR5OjE7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7Y3Vyc29yOnBvaW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtZXJyb3J7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtd2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyPmRpdnt3aWR0aDozMDBweDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2e3dpZHRoOjk2JTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFBMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNCRDM2MkZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMkY5NkI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I0Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxMWVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6MjQxcHgpIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjhweCA4cHggOHB4IDUwcHg7d2lkdGg6MThlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzo4cHggNTBweCA4cHggOHB4fSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotLjJlbTt0b3A6LS4yZW19I3RvYXN0LWNvbnRhaW5lciAucnRsIC50b2FzdC1jbG9zZS1idXR0b257bGVmdDotLjJlbTtyaWdodDouMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweH19CgovKiBUb2FzdHIgQ3VzdG9tIE92ZXJyaWRlcyovCgoudG9hc3Qtc3VjY2VzcyB7Cglmb250LXNpemU6IDE2cHg7Cn0KCi50b2FzdC13YXJuaW5nIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIHsKCWJvdHRvbTowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiB7c2V0dGluZz0ic2RuX3RvYXN0cl9zaXpldyJ9JTsKfQoKLnRvYXN0LXRvcC1mdWxsLXdpZHRoIHsKCXRvcDowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiA5MCU7Cn0KCiN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2IHsKICAgd2lkdGg6IDk2JTsKICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQ==OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7Cgo7KCBmdW5jdGlvbigkLCBfLCB1bmRlZmluZWQpewoidXNlIHN0cmljdCI7CgoJCXRvYXN0ci5vcHRpb25zID0gewoJCQkJImNsb3NlQnV0dG9uIjogZmFsc2UsCgkJCQkiZGVidWciOiBmYWxzZSwKCQkJCSJuZXdlc3RPblRvcCI6IGZhbHNlLAoJCQkJInByb2dyZXNzQmFyIjogdHJ1ZSwKCQkJCSJwb3NpdGlvbkNsYXNzIjogInRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIiwKCQkJCSJwcmV2ZW50RHVwbGljYXRlcyI6IGZhbHNlLAoJCQkJIm9uY2xpY2siOiBudWxsLAoJCQkJInNob3dEdXJhdGlvbiI6ICIzMDAiLAoJCQkJImhpZGVEdXJhdGlvbiI6ICIxMDAwIiwKCQkJCSJ0aW1lT3V0IjogIjYwMDAiLAoJCQkJImV4dGVuZGVkVGltZU91dCI6ICIxMDAwIiwKCQkJCSJzaG93RWFzaW5nIjogInN3aW5nIiwKCQkJCSJoaWRlRWFzaW5nIjogImxpbmVhciIsCgkJCQkic2hvd01ldGhvZCI6ICJmYWRlSW4iLAoJCQkJImhpZGVNZXRob2QiOiAiZmFkZU91dCIKCQl9OwoKCQlsZXQgdmlzaWJsZU1lc3NhZ2UgPSAkKCIudG9hc3Qtc3VjY2VzcyIpLmh0bWwoKTsKCQkJCWlmICh2aXNpYmxlTWVzc2FnZSAmJiB2aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgCQkJCXRvYXN0ci5zdWNjZXNzKHZpc2libGVNZXNzYWdlLCAiIiwgewogICAgCQkJCWNvbnRhaW5lcklkOiAidG9hc3QtY29udGFpbmVyIiwKIAkJIH0pOwogIH0KCgkJbGV0IGludmlzaWJsZU1lc3NhZ2UgPSAkKCIudG9hc3Qtd2FybmluZyIpLmh0bWwoKTsKCQkJCWlmIChpbnZpc2libGVNZXNzYWdlICYmIGludmlzaWJsZU1lc3NhZ2UubGVuZ3RoID4gMCkgewogIAkJCQl0b2FzdHIud2FybmluZyhpbnZpc2libGVNZXNzYWdlLCAiIiwgewogICAgCQkJCWNvbnRhaW5lcklkOiAidG9hc3QtY29udGFpbmVyIgoJCQl9KTsKICB9Cgp9KTsoalF1ZXJ5LCBfKTs=SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypeAdmin NotificationsPage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsOnly groups with staff status and ACP access should be able to see these notifications. Preferably Admins onlyCurrent page addressSideNote will display on this pageSideNote will not display on this pageBeta 1.0.3]]>Toastr WidthToastr Width in Percentage, default is100% Toatr PositionTop RightBottom RightBottom LeftTop LeftTop Full WidthBottom Full WidthBottom CenterTop CenterSideNote ContentMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentStart DateEnd DateSideNote InfoBoxEnable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Descriptive text, keep it short for best displayingShow the Start and End TimesSideNote CustomizeSideNote BarSideNote TabAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Solid ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabSide Bar StyleStripedSolidImageImageTab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSd7e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMH19U2lkZU5vdGVCYXJTdHJpcGV7e2VuZGlmfX17e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMX19U2lkZU5vdGVCYXJTb2xpZHt7ZW5kaWZ9fSc+PC9kaXY+CiAgICB7e2VuZGlmfX0KCQkJICAgIDxkaXYgaWQ9J2VsU05NRGlhbG9nJyBjbGFzcz0naXBzSGlkZSBpcHNQYWQnPgogICAge3tpZiBzZXR0aW5ncy5zZG5faW5mb2JveF9lbmFibGVkfX0KCSAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdpcHNNZXNzYWdlIFNpZGVOb3RlSW5mb0JveCc+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlNpZGVOb3RlSW5mb0JveEljb24iPntleHByZXNzaW9uPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9pbmZvYm94X2NvbnRlbnQifSA8L3NwYW4+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X3Nob3d0aW1lID09IDF9fQogICAgICAgICAgICAgICAgICAgIDxicj48c3Ryb25nPlN0YXJ0IFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9zdGFydCIgbm9yZWxhdGl2ZT0iZmFsc2UifSA8PiA8c3Ryb25nPkVuZCBUaW1lOjwvc3Ryb25nPiB7ZGF0ZXRpbWU9IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2RhdGVfZW5kIiBub3JlbGF0aXZlPSJmYWxzZSJ9CiAgICB7e2VuZGlmfX0KICAgICAgICAgICAgICAgPC9kaXY+CiAge3tlbmRpZn19CgkJCQkgICAgIDxwIGNsYXNzPSdpcHNUeXBlX3Jlc2V0IGlwc1NwYWNlcl9ib3R0b20gaXBzVHlwZV9ub3JtYWwnPgogICAgICAgICAgICAgICB7bGFuZz0ic2RuX2xnZGVzY192YWx1ZSJ9CgkJCQkgICAgPC9wPgoKCXt7aWYgc2V0dGluZ3Muc2RuX2hpZGV9fQoJe3tpZiAhc2V0dGluZ3Muc2RuX2hpZGVfZ3Vlc3RzfX0KCQkJCSAgIDxkaXYgaWQ9IlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIj4KCQkJCQkgIDxhIGNsYXNzPSJpcHNCdXR0b24gaXBzQnV0dG9uX3ZlcnlTbWFsbCBpcHNCdXR0b25faW1wb3J0YW50IGlwc0J1dHRvbl9mdWxsV2lkdGgiIGhyZWY9Int1cmw9ImFwcD1jb3JlJm1vZHVsZT1zeXN0ZW0mc2VjdGlvbj1wbHVnaW5zJmRvPVNpZGVOb3RlRGlzbWlzcyIgY3NyZj0iMSJ9IiBkYXRhLWlwc3Rvb2x0aXAgdGl0bGU9IntsYW5nPSdzZG5faGlkZV90b29sdGlwJ30iIGRhdGEtYWN0aW9uPSJkaXNtaXNzIj57bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9PC9hPgoJCQkJICAgPC9kaXY+Cgl7e2Vsc2VpZiBzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHMgYW5kICFcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+bWVtYmVyX2lkIH19CiAgICAgICAgICAgICAgICAgIDxwPiA8L3A+Cgl7e2Vsc2V9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZW5kaWZ9fQoJe3tlbmRpZn19CiAgICAgICAgICAgIDwvZGl2Pgp7e2VuZGlmfX0KCgp7e2lmICgkZW5hYmxlZCA9PSAxKSAmJiAoJFVSTGVuYWJsZWQgPT0gMSkgJiYgKCRwYWdldmlzaWJsZSA9PSAxKX19Cgk8ZGl2IGlkPSJzZG5TaWRlTm90ZSIgY2xhc3M9InRvYXN0LXN1Y2Nlc3MiIGhpZGRlbj4KCQl7bGFuZz0ic2RuX3BhZ2VfYWRkcmVzcyJ9IDxzdHJvbmc+eyRjdXJyZW50X3VybH08L3N0cm9uZz48L2JyPjxlbT57bGFuZz0ic2RuX3BhZ2VfZGlzcGxheV95ZXMifTwvZW0+Cgk8L2Rpdj4Ke3tlbHNlaWYgKCRlbmFibGVkID09IDEpICYmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDApfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtd2FybmluZyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X25vIn08L2VtPgoJPC9kaXY+Cnt7ZW5kaWZ9fQ==LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhclN0cmlwZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyU3RyaXBlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhclN0cmlwZSB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJTb2xpZCB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fc29saWRfY29sb3IifTsKCWJhY2tncm91bmQtc2l6ZTogODBweCA4MHB4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wOwoJei1pbmRleDogOTk5OTsKfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYmlnCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDcwcHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkBrZXlmcmFtZXMgcHVsc2UKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMzVweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpAa2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLlNpZGVOb3RlVGFiOmhvdmVyOmFmdGVyIHsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2hvdmVyY29sb3IifTsKfQoKCS5TaWRlTm90ZVRhYjpob3ZlciB7CgkJY3Vyc29yOiBoZWxwOwoJfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVUYWIgewoJCWxlZnQ6IDA7Cgl9CglodG1sW2Rpcj0icnRsIl0gLlNpZGVOb3RlVGFiIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZUluZm9Cb3ggewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKCWJhY2tncm91bmQ6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9jb2xvciJ9Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbiB7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9mb250aWNvbl9zaXplIn1weDsKfQoKLlNpZGVOb3RlSW5mb0JveEljb246YmVmb3JlIHsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAwLjNyZW07Cn0KCi8qIFBIT05FUyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKLlNpZGVOb3RlQmFyU3RyaXBlIHsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMDsKCXRvcDogMDsKCXdpZHRoOiA1cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX2JhY2tncm91bmRfY29sb3IifTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA1MDA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCgkuU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCAyMHB4IDIwcHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMTBweDsKCXdpZHRoOiAzNXB4OwoJaGVpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiAzMHB4OwoJei1pbmRleDogMTA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cgl9CgoKLlNpZGVOb3RlVGFiIHsKICAgIGJvcmRlci1yYWRpdXM6IDAge3NldHRpbmc9InNkbl90YWJfcmFkaXVzIn1weCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IDA7Cglwb3NpdGlvbjogZml4ZWQ7CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAndG9wJ319Cgl0b3A6IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAnYm90dG9tJ319Cglib3R0b206IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19Cgl3aWR0aDoge3NldHRpbmc9InNkbl90YWJfc2l6ZXcifXB4OwoJaGVpZ2h0OiB7c2V0dGluZz0ic2RuX3RhYl9zaXplaCJ9cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX3RhYl9jb2xvciJ9OwoJdGV4dC1zaGFkb3c6IDBweCAxcHggNHB4IHJnYmEoMTUxLCAxMTIsIDMwLCAwLjUpOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJbGluZS1oZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCXotaW5kZXg6IDk5OTg7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCi5TaWRlTm90ZVRhYjpiZWZvcmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwoJY29udGVudDogJ1x7c2V0dGluZz0ic2RuX2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwoJZm9udC1zaXplOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX3NpemUifXB4OwoJY29sb3I6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fY29sb3IifTsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMn19CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gM319CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CiAgICBhbmltYXRpb246IHB1bHNlIDFzIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMX19Cgktd2Via2l0LWFuaW1hdGlvbjogYmxpbmtlciAxcyBzdGVwLXN0YXJ0IGluZmluaXRlOwoJYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQogICB9Cn0KCi8qIFRvYXN0ciAqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6NzAwfS50b2FzdC1tZXNzYWdley1tcy13b3JkLXdyYXA6YnJlYWstd29yZDt3b3JkLXdyYXA6YnJlYWstd29yZH0udG9hc3QtbWVzc2FnZSBhLC50b2FzdC1tZXNzYWdlIGxhYmVse2NvbG9yOiNGRkZ9LnRvYXN0LW1lc3NhZ2UgYTpob3Zlcntjb2xvcjojQ0NDO3RleHQtZGVjb3JhdGlvbjpub25lfS50b2FzdC1jbG9zZS1idXR0b257cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6LS4zZW07dG9wOi0uM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojRkZGOy13ZWJraXQtdGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtsaW5lLWhlaWdodDoxfS50b2FzdC1jbG9zZS1idXR0b246Zm9jdXMsLnRvYXN0LWNsb3NlLWJ1dHRvbjpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfS5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uM2VtO2Zsb2F0OmxlZnQ7cmlnaHQ6LjNlbX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9hc3QtdG9wLWNlbnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1jZW50ZXJ7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtZnVsbC13aWR0aHt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoe2JvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtdG9wLWxlZnR7dG9wOjEycHg7bGVmdDoxMnB4fS50b2FzdC10b3AtcmlnaHR7dG9wOjEycHg7cmlnaHQ6MTJweH0udG9hc3QtYm90dG9tLXJpZ2h0e3JpZ2h0OjEycHg7Ym90dG9tOjEycHh9LnRvYXN0LWJvdHRvbS1sZWZ0e2JvdHRvbToxMnB4O2xlZnQ6MTJweH0jdG9hc3QtY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5OTk5O3BvaW50ZXItZXZlbnRzOm5vbmV9I3RvYXN0LWNvbnRhaW5lciAqey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdG9hc3QtY29udGFpbmVyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtwb2ludGVyLWV2ZW50czphdXRvO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjojRkZGO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtkaXJlY3Rpb246cnRsO3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDE1cHggY2VudGVyfSN0b2FzdC1jb250YWluZXI+ZGl2OmhvdmVyey1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjMDAwOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjMDAwO2JveC1zaGFkb3c6MCAwIDEycHggIzAwMDtvcGFjaXR5OjE7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7Y3Vyc29yOnBvaW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtZXJyb3J7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtd2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyPmRpdnt3aWR0aDozMDBweDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2e3dpZHRoOjk2JTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFBMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNCRDM2MkZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMkY5NkI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I0Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxMWVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6MjQxcHgpIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjhweCA4cHggOHB4IDUwcHg7d2lkdGg6MThlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzo4cHggNTBweCA4cHggOHB4fSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotLjJlbTt0b3A6LS4yZW19I3RvYXN0LWNvbnRhaW5lciAucnRsIC50b2FzdC1jbG9zZS1idXR0b257bGVmdDotLjJlbTtyaWdodDouMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweH19CgovKiBUb2FzdHIgQ3VzdG9tIE92ZXJyaWRlcyovCgoudG9hc3Qtc3VjY2VzcyB7Cglmb250LXNpemU6IDE2cHg7Cn0KCi50b2FzdC13YXJuaW5nIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIHsKCWJvdHRvbTowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiB7c2V0dGluZz0ic2RuX3RvYXN0cl9zaXpldyJ9JTsKfQoKLnRvYXN0LXRvcC1mdWxsLXdpZHRoIHsKCXRvcDowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiA5MCU7Cn0KCiN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2IHsKICAgd2lkdGg6IDk2JTsKICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQ==OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7CgokKGZ1bmN0aW9uICgpIHsKdG9hc3RyLm9wdGlvbnMgPSB7CiAgImNsb3NlQnV0dG9uIjogZmFsc2UsCiAgImRlYnVnIjogZmFsc2UsCiAgIm5ld2VzdE9uVG9wIjogZmFsc2UsCiAgInByb2dyZXNzQmFyIjogdHJ1ZSwKICAicG9zaXRpb25DbGFzcyI6ICJ0b2FzdC1ib3R0b20tZnVsbC13aWR0aCIsCiAgInByZXZlbnREdXBsaWNhdGVzIjogZmFsc2UsCiAgIm9uY2xpY2siOiBudWxsLAogICJzaG93RHVyYXRpb24iOiAiMzAwIiwKICAiaGlkZUR1cmF0aW9uIjogIjEwMDAiLAogICJ0aW1lT3V0IjogIjYwMDAiLAogICJleHRlbmRlZFRpbWVPdXQiOiAiMTAwMCIsCiAgInNob3dFYXNpbmciOiAic3dpbmciLAogICJoaWRlRWFzaW5nIjogImxpbmVhciIsCiAgInNob3dNZXRob2QiOiAiZmFkZUluIiwKICAiaGlkZU1ldGhvZCI6ICJmYWRlT3V0Igp9OwoKbGV0IHZpc2libGVNZXNzYWdlID0gJCgiLnRvYXN0LXN1Y2Nlc3MiKS5odG1sKCk7CmlmICh2aXNpYmxlTWVzc2FnZSAmJiB2aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgdG9hc3RyLnN1Y2Nlc3ModmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICBjb250YWluZXJJZDogInRvYXN0LWNvbnRhaW5lciIsCiAgfSk7Cn0KCmxldCBpbnZpc2libGVNZXNzYWdlID0gJCgiLnRvYXN0LXdhcm5pbmciKS5odG1sKCk7CmlmIChpbnZpc2libGVNZXNzYWdlICYmIGludmlzaWJsZU1lc3NhZ2UubGVuZ3RoID4gMCkgewogIHRvYXN0ci53YXJuaW5nKGludmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICBjb250YWluZXJJZDogInRvYXN0LWNvbnRhaW5lciIKICB9KTsKfQp9KTsoalF1ZXJ5LCBfKTs=SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypeAdmin NotificationsPage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsOnly groups with staff status and ACP access should be able to see these notifications. Preferably Admins onlyCurrent page addressSideNote will display on this pageSideNote will not display on this pageBeta 1.0.3]]>Toastr WidthToastr Width in Percentage, default is100% Toatr PositionTop RightBottom RightBottom LeftTop LeftTop Full WidthBottom Full WidthBottom CenterTop CenterSideNote ContentMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentStart DateEnd DateSideNote InfoBoxEnable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Descriptive text, keep it short for best displayingShow the Start and End TimesSideNote CustomizeSideNote BarSideNote TabAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Solid ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabSide Bar StyleStripedSolidImageImageTab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
Date: Tue, 23 Apr 2019 17:40:11 -0400 Subject: [PATCH 23/23] Release 1.0.2 --- README.md | 6 +++--- src/IPS4.3/SideNote.xml | 3 ++- src/IPS4.4/SideNote.xml | 3 ++- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 65c1e4f..fef75d4 100644 --- a/README.md +++ b/README.md @@ -51,10 +51,10 @@ ## ** Updated Notes ** -04/22/19 +04/23/19 -- New release 1.0.2 -- Working stable release for 4.3x and 4.4x available in /src folder and compressed on releases page +- New release 1.0.2 available +- Release for 4.3x and 4.4x available in /src folder and compressed on releases page - IPS 4.4 version updated for PHP root-namespace - Please report any issues, feature requests, or suggestions in [Issues](https://github.com/devCU/IPS-SideNote/issues) diff --git a/src/IPS4.3/SideNote.xml b/src/IPS4.3/SideNote.xml index 3d2d689..6e36024 100644 --- a/src/IPS4.3/SideNote.xml +++ b/src/IPS4.3/SideNote.xml @@ -264,6 +264,7 @@ $form->add( new \IPS\Helpers\Form\Color( 'sdn_stripe_color', \IPS\Settings::i()- $form->add( new \IPS\Helpers\Form\Color( 'sdn_background_color', \IPS\Settings::i()->sdn_background_color, FALSE, array(), NULL, NULL, NULL, 'sdn_background_color') ); $form->add( new \IPS\Helpers\Form\Color( 'sdn_solid_color', \IPS\Settings::i()->sdn_solid_color, FALSE, array(), NULL, NULL, NULL, 'sdn_solid_color') ); $form->add( new \IPS\Helpers\Form\Number( 'sdn_sidebar_width', \IPS\Settings::i()->sdn_sidebar_width, FALSE, array(), NULL, NULL, NULL, 'sdn_sidebar_width') ); +$form->add( new \IPS\Helpers\Form\Text( 'sdn_image_back', \IPS\Settings::i()->sdn_image_back, FALSE, array(), NULL, NULL, NULL, 'sdn_image_back') ); if ( $values = $form->values() ) { @@ -274,7 +275,7 @@ if ( $values = $form->values() ) return TRUE; } -return $form;]]>PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSd7e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMH19U2lkZU5vdGVCYXJTdHJpcGV7e2VuZGlmfX17e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMX19U2lkZU5vdGVCYXJTb2xpZHt7ZW5kaWZ9fSc+PC9kaXY+CiAgICB7e2VuZGlmfX0KCQkJICAgIDxkaXYgaWQ9J2VsU05NRGlhbG9nJyBjbGFzcz0naXBzSGlkZSBpcHNQYWQnPgogICAge3tpZiBzZXR0aW5ncy5zZG5faW5mb2JveF9lbmFibGVkfX0KCSAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdpcHNNZXNzYWdlIFNpZGVOb3RlSW5mb0JveCc+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlNpZGVOb3RlSW5mb0JveEljb24iPntleHByZXNzaW9uPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9pbmZvYm94X2NvbnRlbnQifSA8L3NwYW4+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X3Nob3d0aW1lID09IDF9fQogICAgICAgICAgICAgICAgICAgIDxicj48c3Ryb25nPlN0YXJ0IFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9zdGFydCIgbm9yZWxhdGl2ZT0iZmFsc2UifSA8PiA8c3Ryb25nPkVuZCBUaW1lOjwvc3Ryb25nPiB7ZGF0ZXRpbWU9IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2RhdGVfZW5kIiBub3JlbGF0aXZlPSJmYWxzZSJ9CiAgICB7e2VuZGlmfX0KICAgICAgICAgICAgICAgPC9kaXY+CiAge3tlbmRpZn19CgkJCQkgICAgIDxwIGNsYXNzPSdpcHNUeXBlX3Jlc2V0IGlwc1NwYWNlcl9ib3R0b20gaXBzVHlwZV9ub3JtYWwnPgogICAgICAgICAgICAgICB7bGFuZz0ic2RuX2xnZGVzY192YWx1ZSJ9CgkJCQkgICAgPC9wPgoKCXt7aWYgc2V0dGluZ3Muc2RuX2hpZGV9fQoJe3tpZiAhc2V0dGluZ3Muc2RuX2hpZGVfZ3Vlc3RzfX0KCQkJCSAgIDxkaXYgaWQ9IlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIj4KCQkJCQkgIDxhIGNsYXNzPSJpcHNCdXR0b24gaXBzQnV0dG9uX3ZlcnlTbWFsbCBpcHNCdXR0b25faW1wb3J0YW50IGlwc0J1dHRvbl9mdWxsV2lkdGgiIGhyZWY9Int1cmw9ImFwcD1jb3JlJm1vZHVsZT1zeXN0ZW0mc2VjdGlvbj1wbHVnaW5zJmRvPVNpZGVOb3RlRGlzbWlzcyIgY3NyZj0iMSJ9IiBkYXRhLWlwc3Rvb2x0aXAgdGl0bGU9IntsYW5nPSdzZG5faGlkZV90b29sdGlwJ30iIGRhdGEtYWN0aW9uPSJkaXNtaXNzIj57bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9PC9hPgoJCQkJICAgPC9kaXY+Cgl7e2Vsc2VpZiBzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHMgYW5kICFcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+bWVtYmVyX2lkIH19CiAgICAgICAgICAgICAgICAgIDxwPiA8L3A+Cgl7e2Vsc2V9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZW5kaWZ9fQoJe3tlbmRpZn19CiAgICAgICAgICAgIDwvZGl2Pgp7e2VuZGlmfX0KCgp7e2lmICgkZW5hYmxlZCA9PSAxKSAmJiAoJFVSTGVuYWJsZWQgPT0gMSkgJiYgKCRwYWdldmlzaWJsZSA9PSAxKX19Cgk8ZGl2IGlkPSJzZG5TaWRlTm90ZSIgY2xhc3M9InRvYXN0LXN1Y2Nlc3MiIGhpZGRlbj4KCQl7bGFuZz0ic2RuX3BhZ2VfYWRkcmVzcyJ9IDxzdHJvbmc+eyRjdXJyZW50X3VybH08L3N0cm9uZz48L2JyPjxlbT57bGFuZz0ic2RuX3BhZ2VfZGlzcGxheV95ZXMifTwvZW0+Cgk8L2Rpdj4Ke3tlbHNlaWYgKCRlbmFibGVkID09IDEpICYmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDApfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtd2FybmluZyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X25vIn08L2VtPgoJPC9kaXY+Cnt7ZW5kaWZ9fQ==LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhclN0cmlwZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyU3RyaXBlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhclN0cmlwZSB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJTb2xpZCB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fc29saWRfY29sb3IifTsKCWJhY2tncm91bmQtc2l6ZTogODBweCA4MHB4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wOwoJei1pbmRleDogOTk5OTsKfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYmlnCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDcwcHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkBrZXlmcmFtZXMgcHVsc2UKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMzVweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpAa2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLlNpZGVOb3RlVGFiOmhvdmVyOmFmdGVyIHsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2hvdmVyY29sb3IifTsKfQoKCS5TaWRlTm90ZVRhYjpob3ZlciB7CgkJY3Vyc29yOiBoZWxwOwoJfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVUYWIgewoJCWxlZnQ6IDA7Cgl9CglodG1sW2Rpcj0icnRsIl0gLlNpZGVOb3RlVGFiIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZUluZm9Cb3ggewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKCWJhY2tncm91bmQ6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9jb2xvciJ9Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbiB7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9mb250aWNvbl9zaXplIn1weDsKfQoKLlNpZGVOb3RlSW5mb0JveEljb246YmVmb3JlIHsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAwLjNyZW07Cn0KCi8qIFBIT05FUyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKLlNpZGVOb3RlQmFyU3RyaXBlIHsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMDsKCXRvcDogMDsKCXdpZHRoOiA1cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX2JhY2tncm91bmRfY29sb3IifTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA1MDA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCgkuU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCAyMHB4IDIwcHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMTBweDsKCXdpZHRoOiAzNXB4OwoJaGVpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiAzMHB4OwoJei1pbmRleDogMTA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cgl9CgoKLlNpZGVOb3RlVGFiIHsKICAgIGJvcmRlci1yYWRpdXM6IDAge3NldHRpbmc9InNkbl90YWJfcmFkaXVzIn1weCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IDA7Cglwb3NpdGlvbjogZml4ZWQ7CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAndG9wJ319Cgl0b3A6IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAnYm90dG9tJ319Cglib3R0b206IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19Cgl3aWR0aDoge3NldHRpbmc9InNkbl90YWJfc2l6ZXcifXB4OwoJaGVpZ2h0OiB7c2V0dGluZz0ic2RuX3RhYl9zaXplaCJ9cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX3RhYl9jb2xvciJ9OwoJdGV4dC1zaGFkb3c6IDBweCAxcHggNHB4IHJnYmEoMTUxLCAxMTIsIDMwLCAwLjUpOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJbGluZS1oZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCXotaW5kZXg6IDk5OTg7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCi5TaWRlTm90ZVRhYjpiZWZvcmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwoJY29udGVudDogJ1x7c2V0dGluZz0ic2RuX2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwoJZm9udC1zaXplOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX3NpemUifXB4OwoJY29sb3I6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fY29sb3IifTsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMn19CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gM319CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CiAgICBhbmltYXRpb246IHB1bHNlIDFzIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMX19Cgktd2Via2l0LWFuaW1hdGlvbjogYmxpbmtlciAxcyBzdGVwLXN0YXJ0IGluZmluaXRlOwoJYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQogICB9Cn0KCi8qIFRvYXN0ciAqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6NzAwfS50b2FzdC1tZXNzYWdley1tcy13b3JkLXdyYXA6YnJlYWstd29yZDt3b3JkLXdyYXA6YnJlYWstd29yZH0udG9hc3QtbWVzc2FnZSBhLC50b2FzdC1tZXNzYWdlIGxhYmVse2NvbG9yOiNGRkZ9LnRvYXN0LW1lc3NhZ2UgYTpob3Zlcntjb2xvcjojQ0NDO3RleHQtZGVjb3JhdGlvbjpub25lfS50b2FzdC1jbG9zZS1idXR0b257cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6LS4zZW07dG9wOi0uM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojRkZGOy13ZWJraXQtdGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtsaW5lLWhlaWdodDoxfS50b2FzdC1jbG9zZS1idXR0b246Zm9jdXMsLnRvYXN0LWNsb3NlLWJ1dHRvbjpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfS5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uM2VtO2Zsb2F0OmxlZnQ7cmlnaHQ6LjNlbX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9hc3QtdG9wLWNlbnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1jZW50ZXJ7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtZnVsbC13aWR0aHt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoe2JvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtdG9wLWxlZnR7dG9wOjEycHg7bGVmdDoxMnB4fS50b2FzdC10b3AtcmlnaHR7dG9wOjEycHg7cmlnaHQ6MTJweH0udG9hc3QtYm90dG9tLXJpZ2h0e3JpZ2h0OjEycHg7Ym90dG9tOjEycHh9LnRvYXN0LWJvdHRvbS1sZWZ0e2JvdHRvbToxMnB4O2xlZnQ6MTJweH0jdG9hc3QtY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5OTk5O3BvaW50ZXItZXZlbnRzOm5vbmV9I3RvYXN0LWNvbnRhaW5lciAqey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdG9hc3QtY29udGFpbmVyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtwb2ludGVyLWV2ZW50czphdXRvO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjojRkZGO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtkaXJlY3Rpb246cnRsO3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDE1cHggY2VudGVyfSN0b2FzdC1jb250YWluZXI+ZGl2OmhvdmVyey1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjMDAwOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjMDAwO2JveC1zaGFkb3c6MCAwIDEycHggIzAwMDtvcGFjaXR5OjE7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7Y3Vyc29yOnBvaW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtZXJyb3J7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtd2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyPmRpdnt3aWR0aDozMDBweDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2e3dpZHRoOjk2JTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFBMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNCRDM2MkZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMkY5NkI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I0Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxMWVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6MjQxcHgpIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjhweCA4cHggOHB4IDUwcHg7d2lkdGg6MThlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzo4cHggNTBweCA4cHggOHB4fSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotLjJlbTt0b3A6LS4yZW19I3RvYXN0LWNvbnRhaW5lciAucnRsIC50b2FzdC1jbG9zZS1idXR0b257bGVmdDotLjJlbTtyaWdodDouMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweH19CgovKiBUb2FzdHIgQ3VzdG9tIE92ZXJyaWRlcyovCgoudG9hc3Qtc3VjY2VzcyB7Cglmb250LXNpemU6IDE2cHg7Cn0KCi50b2FzdC13YXJuaW5nIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIHsKCWJvdHRvbTowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiB7c2V0dGluZz0ic2RuX3RvYXN0cl9zaXpldyJ9JTsKfQoKLnRvYXN0LXRvcC1mdWxsLXdpZHRoIHsKCXRvcDowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiA5MCU7Cn0KCiN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2IHsKICAgd2lkdGg6IDk2JTsKICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQ==OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7CgokKGZ1bmN0aW9uICgpIHsKdG9hc3RyLm9wdGlvbnMgPSB7CiAgImNsb3NlQnV0dG9uIjogZmFsc2UsCiAgImRlYnVnIjogZmFsc2UsCiAgIm5ld2VzdE9uVG9wIjogZmFsc2UsCiAgInByb2dyZXNzQmFyIjogdHJ1ZSwKICAicG9zaXRpb25DbGFzcyI6ICJ0b2FzdC1ib3R0b20tZnVsbC13aWR0aCIsCiAgInByZXZlbnREdXBsaWNhdGVzIjogZmFsc2UsCiAgIm9uY2xpY2siOiBudWxsLAogICJzaG93RHVyYXRpb24iOiAiMzAwIiwKICAiaGlkZUR1cmF0aW9uIjogIjEwMDAiLAogICJ0aW1lT3V0IjogIjYwMDAiLAogICJleHRlbmRlZFRpbWVPdXQiOiAiMTAwMCIsCiAgInNob3dFYXNpbmciOiAic3dpbmciLAogICJoaWRlRWFzaW5nIjogImxpbmVhciIsCiAgInNob3dNZXRob2QiOiAiZmFkZUluIiwKICAiaGlkZU1ldGhvZCI6ICJmYWRlT3V0Igp9OwoKbGV0IHZpc2libGVNZXNzYWdlID0gJCgiLnRvYXN0LXN1Y2Nlc3MiKS5odG1sKCk7CmlmICh2aXNpYmxlTWVzc2FnZSAmJiB2aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgdG9hc3RyLnN1Y2Nlc3ModmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICBjb250YWluZXJJZDogInRvYXN0LWNvbnRhaW5lciIsCiAgfSk7Cn0KCmxldCBpbnZpc2libGVNZXNzYWdlID0gJCgiLnRvYXN0LXdhcm5pbmciKS5odG1sKCk7CmlmIChpbnZpc2libGVNZXNzYWdlICYmIGludmlzaWJsZU1lc3NhZ2UubGVuZ3RoID4gMCkgewogIHRvYXN0ci53YXJuaW5nKGludmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICBjb250YWluZXJJZDogInRvYXN0LWNvbnRhaW5lciIKICB9KTsKfQp9KTsoalF1ZXJ5LCBfKTs=SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypeAdmin NotificationsPage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsOnly groups with staff status and ACP access should be able to see these notifications. Preferably Admins onlyCurrent page addressSideNote will display on this pageSideNote will not display on this pageBeta 1.0.3]]>Toastr WidthToastr Width in Percentage, default is100% Toatr PositionTop RightBottom RightBottom LeftTop LeftTop Full WidthBottom Full WidthBottom CenterTop CenterSideNote ContentMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentStart DateEnd DateSideNote InfoBoxEnable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Descriptive text, keep it short for best displayingShow the Start and End TimesSideNote CustomizeSideNote BarSideNote TabAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Solid ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabSide Bar StyleStripedSolidImageImageTab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSd7e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMH19U2lkZU5vdGVCYXJTdHJpcGV7e2VuZGlmfX17e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMX19U2lkZU5vdGVCYXJTb2xpZHt7ZW5kaWZ9fXt7aWYgc2V0dGluZ3Muc2RuX2Jhcl9zdHlsZSA9PSAyfX1TaWRlTm90ZUJhckltYWdle3tlbmRpZn19Jz48L2Rpdj4KICAgIHt7ZW5kaWZ9fQoJCQkgICAgPGRpdiBpZD0nZWxTTk1EaWFsb2cnIGNsYXNzPSdpcHNIaWRlIGlwc1BhZCc+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X2VuYWJsZWR9fQoJICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2lwc01lc3NhZ2UgU2lkZU5vdGVJbmZvQm94Jz4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iU2lkZU5vdGVJbmZvQm94SWNvbiI+e2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2luZm9ib3hfY29udGVudCJ9IDwvc3Bhbj4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX2luZm9ib3hfc2hvd3RpbWUgPT0gMX19CiAgICAgICAgICAgICAgICAgICAgPGJyPjxzdHJvbmc+U3RhcnQgVGltZTo8L3N0cm9uZz4ge2RhdGV0aW1lPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9kYXRlX3N0YXJ0IiBub3JlbGF0aXZlPSJmYWxzZSJ9IDw+IDxzdHJvbmc+RW5kIFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9lbmQiIG5vcmVsYXRpdmU9ImZhbHNlIn0KICAgIHt7ZW5kaWZ9fQogICAgICAgICAgICAgICA8L2Rpdj4KICB7e2VuZGlmfX0KCQkJCSAgICAgPHAgY2xhc3M9J2lwc1R5cGVfcmVzZXQgaXBzU3BhY2VyX2JvdHRvbSBpcHNUeXBlX25vcm1hbCc+CiAgICAgICAgICAgICAgIHtsYW5nPSJzZG5fbGdkZXNjX3ZhbHVlIn0KCQkJCSAgICA8L3A+CgoJe3tpZiBzZXR0aW5ncy5zZG5faGlkZX19Cgl7e2lmICFzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHN9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZWxzZWlmIHNldHRpbmdzLnNkbl9oaWRlX2d1ZXN0cyBhbmQgIVxJUFNcTWVtYmVyOjpsb2dnZWRJbigpLT5tZW1iZXJfaWQgfX0KICAgICAgICAgICAgICAgICAgPHA+IDwvcD4KCXt7ZWxzZX19CgkJCQkgICA8ZGl2IGlkPSJTaWRlTm90ZU1lc3NhZ2VfZGlzbWlzcyI+CgkJCQkJICA8YSBjbGFzcz0iaXBzQnV0dG9uIGlwc0J1dHRvbl92ZXJ5U21hbGwgaXBzQnV0dG9uX2ltcG9ydGFudCBpcHNCdXR0b25fZnVsbFdpZHRoIiBocmVmPSJ7dXJsPSJhcHA9Y29yZSZtb2R1bGU9c3lzdGVtJnNlY3Rpb249cGx1Z2lucyZkbz1TaWRlTm90ZURpc21pc3MiIGNzcmY9IjEifSIgZGF0YS1pcHN0b29sdGlwIHRpdGxlPSJ7bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9IiBkYXRhLWFjdGlvbj0iZGlzbWlzcyI+e2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfTwvYT4KCQkJCSAgIDwvZGl2PgoJe3tlbmRpZn19Cgl7e2VuZGlmfX0KICAgICAgICAgICAgPC9kaXY+Cnt7ZW5kaWZ9fQoKCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDEpfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtc3VjY2VzcyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X3llcyJ9PC9lbT4KCTwvZGl2Pgp7e2Vsc2VpZiAoJGVuYWJsZWQgPT0gMSkgJiYgKCRVUkxlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMCl9fQoJPGRpdiBpZD0ic2RuU2lkZU5vdGUiIGNsYXNzPSJ0b2FzdC13YXJuaW5nIiBoaWRkZW4+CgkJe2xhbmc9InNkbl9wYWdlX2FkZHJlc3MifSA8c3Ryb25nPnskY3VycmVudF91cmx9PC9zdHJvbmc+PC9icj48ZW0+e2xhbmc9InNkbl9wYWdlX2Rpc3BsYXlfbm8ifTwvZW0+Cgk8L2Rpdj4Ke3tlbmRpZn19LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhclN0cmlwZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyU3RyaXBlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhclN0cmlwZSB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJTb2xpZCB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fc29saWRfY29sb3IifTsKCWJhY2tncm91bmQtc2l6ZTogODBweCA4MHB4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wOwoJei1pbmRleDogOTk5OTsKfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJJbWFnZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgvdXBsb2Fkcy97c2V0dGluZz0ic2RuX2ltYWdlX2JhY2sifSk7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0OwogICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluOwoJYmFja2dyb3VuZC1zaXplOiA4MHB4IDgwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA5OTk5Owp9CgoJaHRtbFtkaXI9Imx0ciJdIC5TaWRlTm90ZUJhckltYWdlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhckltYWdlIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZVRhYiB7CiAgICBib3JkZXItcmFkaXVzOiAwIHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHgge3NldHRpbmc9InNkbl90YWJfcmFkaXVzIn1weCAwOwoJcG9zaXRpb246IGZpeGVkOwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl90YWJfcG9zaXRpb24gPT0gJ3RvcCd9fQoJdG9wOiB7c2V0dGluZz0ic2RuX3RhYl93aW5kb3cifXB4OwoJCXt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl90YWJfcG9zaXRpb24gPT0gJ2JvdHRvbSd9fQoJYm90dG9tOiB7c2V0dGluZz0ic2RuX3RhYl93aW5kb3cifXB4OwoJCXt7ZW5kaWZ9fQoJd2lkdGg6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemV3In1weDsKCWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl90YWJfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiB7c2V0dGluZz0ic2RuX3RhYl9zaXplaCJ9cHg7Cgl6LWluZGV4OiA5OTk4OwoJdHJhbnNpdGlvbjogMC4ycyBiYWNrZ3JvdW5kIGVhc2UtaW4tb3V0Owp9CgouU2lkZU5vdGVUYWI6YmVmb3JlIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9mb250aWNvbiJ9JzsKICAgIGZvbnQtZmFtaWx5OiBGb250QXdlc29tZTsKCWZvbnQtc2l6ZToge3NldHRpbmc9InNkbl9mb250aWNvbl9zaXplIn1weDsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2NvbG9yIn07CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX2ljb25fYW5pbWF0aW9uID09IDJ9fQogICAgLXdlYmtpdC1hbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlOwogICAgYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKCQkge3tlbmRpZn19CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX2ljb25fYW5pbWF0aW9uID09IDN9fQogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC1hbmltYXRpb246IHB1bHNlIDFzIGluZmluaXRlOwogICAgYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKCQkge3tlbmRpZn19CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX2ljb25fYW5pbWF0aW9uID09IDF9fQoJLXdlYmtpdC1hbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCWFuaW1hdGlvbjogYmxpbmtlciAxcyBzdGVwLXN0YXJ0IGluZmluaXRlOwoJCSB7e2VuZGlmfX0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIHB1bHNlCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDM1cHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpAa2V5ZnJhbWVzIHB1bHNlLWJpZwp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCA3MHB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgYmxpbmtlciB7CiAgNTAlIHsKICAgIG9wYWNpdHk6IDA7CiAgfQp9CkBrZXlmcmFtZXMgYmxpbmtlciB7CiAgNTAlIHsKICAgIG9wYWNpdHk6IDA7CiAgfQp9CgouU2lkZU5vdGVUYWI6aG92ZXI6YWZ0ZXIgewoJY29sb3I6IHtzZXR0aW5nPSJzZG5fZm9udGljb25faG92ZXJjb2xvciJ9Owp9CgoJLlNpZGVOb3RlVGFiOmhvdmVyIHsKCQljdXJzb3I6IGhlbHA7Cgl9CgoJaHRtbFtkaXI9Imx0ciJdIC5TaWRlTm90ZVRhYiB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVUYWIgewoJCXJpZ2h0OiAwOwoJfQoKLlNpZGVOb3RlSW5mb0JveCB7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4OwoJYmFja2dyb3VuZDoge3NldHRpbmc9InNkbl9pbmZvYm94X2NvbG9yIn07Cn0KCi5TaWRlTm90ZUluZm9Cb3hJY29uIHsKCWZvbnQtc2l6ZToge3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uX3NpemUifXB4Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbjpiZWZvcmUgewoJY29udGVudDogJ1x7c2V0dGluZz0ic2RuX2luZm9ib3hfZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtYXJnaW4tcmlnaHQ6IDAuM3JlbTsKfQoKLyogUEhPTkVTICovCkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7CgouU2lkZU5vdGVCYXJTdHJpcGUgewoJcG9zaXRpb246IGZpeGVkOwoJYm90dG9tOiAwOwoJdG9wOiAwOwoJd2lkdGg6IDVweDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDQwcHggNDBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDUwMDsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKCS5TaWRlTm90ZVRhYiB7CiAgICBib3JkZXItcmFkaXVzOiAwIDIwcHggMjBweCAwOwoJcG9zaXRpb246IGZpeGVkOwoJYm90dG9tOiAxMHB4OwoJd2lkdGg6IDM1cHg7CgloZWlnaHQ6IDMwcHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9OwoJdGV4dC1zaGFkb3c6IDBweCAxcHggNHB4IHJnYmEoMTUxLCAxMTIsIDMwLCAwLjUpOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJbGluZS1oZWlnaHQ6IDMwcHg7Cgl6LWluZGV4OiAxMDsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKCX0KCgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19CiAgIH0KfQoKLyogVG9hc3RyICovCi50b2FzdC10aXRsZXtmb250LXdlaWdodDo3MDB9LnRvYXN0LW1lc3NhZ2V7LW1zLXdvcmQtd3JhcDpicmVhay13b3JkO3dvcmQtd3JhcDpicmVhay13b3JkfS50b2FzdC1tZXNzYWdlIGEsLnRvYXN0LW1lc3NhZ2UgbGFiZWx7Y29sb3I6I0ZGRn0udG9hc3QtbWVzc2FnZSBhOmhvdmVye2NvbG9yOiNDQ0M7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnRvYXN0LWNsb3NlLWJ1dHRvbntwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDotLjNlbTt0b3A6LS4zZW07ZmxvYXQ6cmlnaHQ7Zm9udC1zaXplOjIwcHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiNGRkY7LXdlYmtpdC10ZXh0LXNoYWRvdzowIDFweCAwICNmZmY7dGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApO2xpbmUtaGVpZ2h0OjF9LnRvYXN0LWNsb3NlLWJ1dHRvbjpmb2N1cywudG9hc3QtY2xvc2UtYnV0dG9uOmhvdmVye2NvbG9yOiMwMDA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXI7b3BhY2l0eTouNDstbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTQwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT00MCl9LnJ0bCAudG9hc3QtY2xvc2UtYnV0dG9ue2xlZnQ6LS4zZW07ZmxvYXQ6bGVmdDtyaWdodDouM2VtfWJ1dHRvbi50b2FzdC1jbG9zZS1idXR0b257cGFkZGluZzowO2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6MCAwO2JvcmRlcjowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lfS50b2FzdC10b3AtY2VudGVye3RvcDowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtYm90dG9tLWNlbnRlcntib3R0b206MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LXRvcC1mdWxsLXdpZHRoe3RvcDowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtYm90dG9tLWZ1bGwtd2lkdGh7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtbGVmdHt0b3A6MTJweDtsZWZ0OjEycHh9LnRvYXN0LXRvcC1yaWdodHt0b3A6MTJweDtyaWdodDoxMnB4fS50b2FzdC1ib3R0b20tcmlnaHR7cmlnaHQ6MTJweDtib3R0b206MTJweH0udG9hc3QtYm90dG9tLWxlZnR7Ym90dG9tOjEycHg7bGVmdDoxMnB4fSN0b2FzdC1jb250YWluZXJ7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDo5OTk5OTk7cG9pbnRlci1ldmVudHM6bm9uZX0jdG9hc3QtY29udGFpbmVyICp7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fSN0b2FzdC1jb250YWluZXI+ZGl2e3Bvc2l0aW9uOnJlbGF0aXZlO3BvaW50ZXItZXZlbnRzOmF1dG87b3ZlcmZsb3c6aGlkZGVuO21hcmdpbjowIDAgNnB4O3BhZGRpbmc6MTVweCAxNXB4IDE1cHggNTBweDt3aWR0aDozMDBweDstbW96LWJvcmRlci1yYWRpdXM6M3B4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7Ym9yZGVyLXJhZGl1czozcHg7YmFja2dyb3VuZC1wb3NpdGlvbjoxNXB4IGNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7LW1vei1ib3gtc2hhZG93OjAgMCAxMnB4ICM5OTk7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAxMnB4ICM5OTk7Ym94LXNoYWRvdzowIDAgMTJweCAjOTk5O2NvbG9yOiNGRkY7b3BhY2l0eTouODstbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTgwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT04MCl9I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse2RpcmVjdGlvbjpydGw7cGFkZGluZzoxNXB4IDUwcHggMTVweCAxNXB4O2JhY2tncm91bmQtcG9zaXRpb246cmlnaHQgMTVweCBjZW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj5kaXY6aG92ZXJ7LW1vei1ib3gtc2hhZG93OjAgMCAxMnB4ICMwMDA7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAxMnB4ICMwMDA7Ym94LXNoYWRvdzowIDAgMTJweCAjMDAwO29wYWNpdHk6MTstbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTtjdXJzb3I6cG9pbnRlcn0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1pbmZve2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFHd1NVUkJWRWhMdFphOVNnTkJFTWM5c1V4eFJjb1VLU3pTV0loWHBGTWhoWVdGaGFCZzR5UFlpV0NYWnhCTEVSc0xSUzNFUWtFZndDS2RqV0pBd1NLQ2dvS0NjdWR2NE81WUxydDdFemdYaGlVMy80K2IyY2ttd1ZqSlNwS2tRNndBaTRnd2hUK3ozd1JCY0V6MHlqU3NlVVRyY1J5ZnNIc1htRDBBbWJIT0M5SWk4VkltbnVYQlBnbEhwUTV3d1NWTTdzTm5URzdaYTRKd0RkQ2p4eUFpSDNueUEybXRhVEp1ZmlEWjVkQ2FxbEl0SUxoMU5IYXRmTjVza3ZqeDlaMzhtNjlDZ3p1WG1aZ1ZyUElHRTc2M0p4OXFLc1JveldZdzZ4T0hkRVIrbm4yS2tPK0JiK1VWNUNCTjZXQzZRdEJnYlJWb3pyYWhBYm1tNkh0VXNndFBDMTl0RmR4WFpZQk9ma2JtRkoxVmFIQTFWQUhqZDBwcDcwb1RaenZSK0VWcngyWWdmZHNxNmV1NTVCSFlSOGhsY2tpK24ra0VSVUZHOEJyQTBCd2plQXYyTThXTFFCdGN5K1NENmZOc21uQjNBbEJMcmdUdFZXMWMyUU40YlZXTEFUYUlTNjBKMkR1NXkxVGlKZ2pTQnZGVlpnVG13Q1UrZEFaRm9QeEdFRXM4bnlIQzlCd2UyR3ZFSnYyV1haYjB2amR5RlQ0Q3hrM2Uva0lxbE9Hb1ZMd3dQZXZwWUhUKzAwVCtoV3dYRGY0QUpBT1VxV2NEaGJ3QUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBSE9TVVJCVkVoTHJaYS9TZ05CRU1aemgwV0tDQ2xTQ0thSVlPRUQrQUFLZVFRTEc4SFd6dExDSW1CcllhZGdJZFkrZ0lLTllrQkZTd3U3Q0FvcUNna2tvR0JJL0UyOFBkYkxabWVETGd6WnpjeDgzL3paMlNTWEMxajlmcitJMUhxOTNnMnl4SDRpd00xdmtvQldBZHhDbXB6VHhma04yUmN5Wk5hSEZJa1NvMTArOGtneGtYSVVSVjVIR3hUbUZ1Yzc1QjJSZlFrcHhIRzhhQWdhQUZhMHRBSHFZRmZRN0l3ZTJ5aE9EazgrSjRDN3lBb1JUV0kzdy80a2xHUmdSNGxPN1JwbjkrZ3ZNeVdwK3V4Rmg4K0grQVJsZ04xbkp1SnVRQVl2TmtFbndHRmNrMThFcjRxM2VnRWMvb08rbWhMZEtnUnloZE5GaWFjQzBybE9DYmhOVno0SDlGbkFZZ0RCdlUzUUlpb1psSkZMSnRzb0hZUkRmaVpvVXlJeHFDdFJwVmxBTnEwRVU0ZEFwanJ0Z2V6UEZhZDVTMTlXZ2prYzBoTlZudUY0SGpWQTZDN1FyU0lieWxCK29aZTNhSGdCc3FsTnFLWUg0OGpYeUpLTXVBYml5Vko4S3phQjNlUmMwcGc5VndRNG5pRnJ5STY4cWlPaTNBYmp3ZHNmbkF0azBiQ2pUTEpLcjZtckQ5ZzhpcS9TL0I4MWhndU9NbFFUblZ5RzQwd0Fjam5tZ3NDTkVTRHJqbWU3d2ZmdFA0UDdTUDROM0NKWmR2em9OeUdxMmMvSFdPWEpHc3ZWZytSQS9rMk1DL3dONkkyWUEyUHQ4R2tBQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXI+LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQURzU1VSQlZFaExZMkFZQmZRTWdmLy8vM1A4Ky9ldkFJZ3ZBL0ZzSUYrQmF2WUREV01CR3JvYVNNTUJpRThWQzdBWkRySUZhTUZuaWkzQVpUalVnc1VVV1VEQThPZEFINmlRYlFFaHc0SHlHc1BFY0tCWEJJQzRBUmhleDRHNEJzam13ZVUxc29JRmFHZy9XdG9GWlJJWmRFdklNaHhrQ0NqWElWc0FUVjZnRkdBQ3M0UnN3MEVHZ0lJSDNRSllKZ0hTQVJRWkRyV0FCK2phd3pncytRMlVPNDlEN2puUlNSR29FRlJJTGNkbUVNV0dJMGNtMEpKMlFwWUExUkR2Y216SkVXaEFCaEQvcHFyTDBTMENXdUFCS2duUmtpOWxMc2VTN2cyQWxxd0hXUVNLSDRvS0xySUxwUkdoRVFDdzJMaVJVSWE0bHdBQUFBQkpSVTVFcmtKZ2dnPT0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFHWVNVUkJWRWhMNVpTdlRzTlFGTWJYWkdJQ01ZR1ltSmhBUUlKQUlDWVFQQUFDaVNEQjhBaUlDUVFKVDRDcVFFd2dKdllBU0FRQ2laaVltSmhBSUJBVENBUkp5KzlyVHNsZGQ4c0t1MU0wK2RMYjA1N3Y2L2xicS8yckswbVMvVFJOajljV05BS1BZSUpJSTdnSXhDY1E1MWN2cUlEK0dJRVg4QVNHNEIxYks1Z0laRmVRZm9KZEVYT2ZnWDRRQVFnN2tIMkE2NXlRODdseXhiMjdzZ2drQXpBdUZoYmJnMUsya2dDa0IxYlZ3eUlSOW0yTDdQUlBJaERVSVhnR3R5S3c1NzV5ejNsVE5zNlg0SlhualYrTEtNL20zTXlkblRidE9LSWp0ejZWaENCcTR2U20zbmNkckQybGswVmdVWFNWS2pWREpYSnppalcxUlFkc1U3Rjc3SGU4dTY4a29OWlR6OE96NXlHYTZKM0gzbFoweFlnWEJLMlF5bWxXV0ErUlduWWhza0xCdjJ2bUUraEJNQ3RiQTdLWDVkcld5UlQvMkpzcVoySXZmQjlZNGJXRE5NRmJKUkZtQzlFNzRTb1MwQ3F1bHdqa0MwKzVicGNWMUNaOE5NZWo0cGp5MFUrZG9EUXNHeW8xaHpWSnR0SWpoUTdHbkJ0UkZOMVVhclVsSDhGM3hpY3QrSFkwN3JFem9VR1BsV2NqUkZScjQvZ0NoWmdjM1pMMmQ4b0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lci50b2FzdC1ib3R0b20tY2VudGVyPmRpdiwjdG9hc3QtY29udGFpbmVyLnRvYXN0LXRvcC1jZW50ZXI+ZGl2e3dpZHRoOjMwMHB4O21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG99I3RvYXN0LWNvbnRhaW5lci50b2FzdC1ib3R0b20tZnVsbC13aWR0aD5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtZnVsbC13aWR0aD5kaXZ7d2lkdGg6OTYlO21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG99LnRvYXN0e2JhY2tncm91bmQtY29sb3I6IzAzMDMwM30udG9hc3Qtc3VjY2Vzc3tiYWNrZ3JvdW5kLWNvbG9yOiM1MUEzNTF9LnRvYXN0LWVycm9ye2JhY2tncm91bmQtY29sb3I6I0JEMzYyRn0udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWNvbG9yOiMyRjk2QjR9LnRvYXN0LXdhcm5pbmd7YmFja2dyb3VuZC1jb2xvcjojRjg5NDA2fS50b2FzdC1wcm9ncmVzc3twb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7Ym90dG9tOjA7aGVpZ2h0OjRweDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7b3BhY2l0eTouNDstbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTQwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT00MCl9QG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDoyNDBweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzo4cHggOHB4IDhweCA1MHB4O3dpZHRoOjExZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6OHB4IDUwcHggOHB4IDhweH0jdG9hc3QtY29udGFpbmVyIC50b2FzdC1jbG9zZS1idXR0b257cmlnaHQ6LS4yZW07dG9wOi0uMmVtfSN0b2FzdC1jb250YWluZXIgLnJ0bCAudG9hc3QtY2xvc2UtYnV0dG9ue2xlZnQ6LS4yZW07cmlnaHQ6LjJlbX19QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDoyNDFweCkgYW5kIChtYXgtd2lkdGg6NDgwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxOGVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6NDgxcHgpIGFuZCAobWF4LXdpZHRoOjc2OHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MjVlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzoxNXB4IDUwcHggMTVweCAxNXB4fX0KCi8qIFRvYXN0ciBDdXN0b20gT3ZlcnJpZGVzKi8KCi50b2FzdC1zdWNjZXNzIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLnRvYXN0LXdhcm5pbmcgewoJZm9udC1zaXplOiAxNnB4Owp9CgoudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGggewoJYm90dG9tOjA7CiAgICByaWdodDowOwogICAgd2lkdGg6IHtzZXR0aW5nPSJzZG5fdG9hc3RyX3NpemV3In0lOwp9CgoudG9hc3QtdG9wLWZ1bGwtd2lkdGggewoJdG9wOjA7CiAgICByaWdodDowOwogICAgd2lkdGg6IDkwJTsKfQoKI3RvYXN0LWNvbnRhaW5lci50b2FzdC1ib3R0b20tZnVsbC13aWR0aD5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtZnVsbC13aWR0aD5kaXYgewogICB3aWR0aDogOTYlOwogICBtYXJnaW4tbGVmdDogYXV0bzsKICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7CgokKGZ1bmN0aW9uICgpIHsKdG9hc3RyLm9wdGlvbnMgPSB7CiAgImNsb3NlQnV0dG9uIjogZmFsc2UsCiAgImRlYnVnIjogZmFsc2UsCiAgIm5ld2VzdE9uVG9wIjogZmFsc2UsCiAgInByb2dyZXNzQmFyIjogdHJ1ZSwKICAicG9zaXRpb25DbGFzcyI6ICJ0b2FzdC1ib3R0b20tZnVsbC13aWR0aCIsCiAgInByZXZlbnREdXBsaWNhdGVzIjogZmFsc2UsCiAgIm9uY2xpY2siOiBudWxsLAogICJzaG93RHVyYXRpb24iOiAiMzAwIiwKICAiaGlkZUR1cmF0aW9uIjogIjEwMDAiLAogICJ0aW1lT3V0IjogIjYwMDAiLAogICJleHRlbmRlZFRpbWVPdXQiOiAiMTAwMCIsCiAgInNob3dFYXNpbmciOiAic3dpbmciLAogICJoaWRlRWFzaW5nIjogImxpbmVhciIsCiAgInNob3dNZXRob2QiOiAiZmFkZUluIiwKICAiaGlkZU1ldGhvZCI6ICJmYWRlT3V0Igp9OwoKbGV0IHZpc2libGVNZXNzYWdlID0gJCgiLnRvYXN0LXN1Y2Nlc3MiKS5odG1sKCk7CmlmICh2aXNpYmxlTWVzc2FnZSAmJiB2aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgdG9hc3RyLnN1Y2Nlc3ModmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICBjb250YWluZXJJZDogInRvYXN0LWNvbnRhaW5lciIsCiAgfSk7Cn0KCmxldCBpbnZpc2libGVNZXNzYWdlID0gJCgiLnRvYXN0LXdhcm5pbmciKS5odG1sKCk7CmlmIChpbnZpc2libGVNZXNzYWdlICYmIGludmlzaWJsZU1lc3NhZ2UubGVuZ3RoID4gMCkgewogIHRvYXN0ci53YXJuaW5nKGludmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICBjb250YWluZXJJZDogInRvYXN0LWNvbnRhaW5lciIKICB9KTsKfQp9KTsoalF1ZXJ5LCBfKTs=SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypeAdmin NotificationsPage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsOnly groups with staff status and ACP access should be able to see these notifications. Preferably Admins onlyCurrent page addressSideNote will display on this pageSideNote will not display on this pageBeta 1.0.3]]>Toastr WidthToastr Width in Percentage, default is100% Toatr PositionTop RightBottom RightBottom LeftTop LeftTop Full WidthBottom Full WidthBottom CenterTop CenterSideNote ContentMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentStart DateEnd DateSideNote InfoBoxEnable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Descriptive text, keep it short for best displayingShow the Start and End TimesSideNote CustomizeSideNote BarSideNote TabAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Solid ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabSide Bar StyleStripedSolidImageImage URLIE barbackground.png or with a sub folder IE sidenote/barbackground.png.]]>Tab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
add( new \IPS\Helpers\Form\Color( 'sdn_stripe_color', \IPS\Settings::i()- $form->add( new \IPS\Helpers\Form\Color( 'sdn_background_color', \IPS\Settings::i()->sdn_background_color, FALSE, array(), NULL, NULL, NULL, 'sdn_background_color') ); $form->add( new \IPS\Helpers\Form\Color( 'sdn_solid_color', \IPS\Settings::i()->sdn_solid_color, FALSE, array(), NULL, NULL, NULL, 'sdn_solid_color') ); $form->add( new \IPS\Helpers\Form\Number( 'sdn_sidebar_width', \IPS\Settings::i()->sdn_sidebar_width, FALSE, array(), NULL, NULL, NULL, 'sdn_sidebar_width') ); +$form->add( new \IPS\Helpers\Form\Text( 'sdn_image_back', \IPS\Settings::i()->sdn_image_back, FALSE, array(), NULL, NULL, NULL, 'sdn_image_back') ); if ( $values = $form->values() ) { @@ -274,7 +275,7 @@ if ( $values = $form->values() ) return TRUE; } -return $form;]]>PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSd7e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMH19U2lkZU5vdGVCYXJTdHJpcGV7e2VuZGlmfX17e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMX19U2lkZU5vdGVCYXJTb2xpZHt7ZW5kaWZ9fSc+PC9kaXY+CiAgICB7e2VuZGlmfX0KCQkJICAgIDxkaXYgaWQ9J2VsU05NRGlhbG9nJyBjbGFzcz0naXBzSGlkZSBpcHNQYWQnPgogICAge3tpZiBzZXR0aW5ncy5zZG5faW5mb2JveF9lbmFibGVkfX0KCSAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdpcHNNZXNzYWdlIFNpZGVOb3RlSW5mb0JveCc+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlNpZGVOb3RlSW5mb0JveEljb24iPntleHByZXNzaW9uPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9pbmZvYm94X2NvbnRlbnQifSA8L3NwYW4+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X3Nob3d0aW1lID09IDF9fQogICAgICAgICAgICAgICAgICAgIDxicj48c3Ryb25nPlN0YXJ0IFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9zdGFydCIgbm9yZWxhdGl2ZT0iZmFsc2UifSA8PiA8c3Ryb25nPkVuZCBUaW1lOjwvc3Ryb25nPiB7ZGF0ZXRpbWU9IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2RhdGVfZW5kIiBub3JlbGF0aXZlPSJmYWxzZSJ9CiAgICB7e2VuZGlmfX0KICAgICAgICAgICAgICAgPC9kaXY+CiAge3tlbmRpZn19CgkJCQkgICAgIDxwIGNsYXNzPSdpcHNUeXBlX3Jlc2V0IGlwc1NwYWNlcl9ib3R0b20gaXBzVHlwZV9ub3JtYWwnPgogICAgICAgICAgICAgICB7bGFuZz0ic2RuX2xnZGVzY192YWx1ZSJ9CgkJCQkgICAgPC9wPgoKCXt7aWYgc2V0dGluZ3Muc2RuX2hpZGV9fQoJe3tpZiAhc2V0dGluZ3Muc2RuX2hpZGVfZ3Vlc3RzfX0KCQkJCSAgIDxkaXYgaWQ9IlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIj4KCQkJCQkgIDxhIGNsYXNzPSJpcHNCdXR0b24gaXBzQnV0dG9uX3ZlcnlTbWFsbCBpcHNCdXR0b25faW1wb3J0YW50IGlwc0J1dHRvbl9mdWxsV2lkdGgiIGhyZWY9Int1cmw9ImFwcD1jb3JlJm1vZHVsZT1zeXN0ZW0mc2VjdGlvbj1wbHVnaW5zJmRvPVNpZGVOb3RlRGlzbWlzcyIgY3NyZj0iMSJ9IiBkYXRhLWlwc3Rvb2x0aXAgdGl0bGU9IntsYW5nPSdzZG5faGlkZV90b29sdGlwJ30iIGRhdGEtYWN0aW9uPSJkaXNtaXNzIj57bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9PC9hPgoJCQkJICAgPC9kaXY+Cgl7e2Vsc2VpZiBzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHMgYW5kICFcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+bWVtYmVyX2lkIH19CiAgICAgICAgICAgICAgICAgIDxwPiA8L3A+Cgl7e2Vsc2V9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZW5kaWZ9fQoJe3tlbmRpZn19CiAgICAgICAgICAgIDwvZGl2Pgp7e2VuZGlmfX0KCgp7e2lmICgkZW5hYmxlZCA9PSAxKSAmJiAoJFVSTGVuYWJsZWQgPT0gMSkgJiYgKCRwYWdldmlzaWJsZSA9PSAxKX19Cgk8ZGl2IGlkPSJzZG5TaWRlTm90ZSIgY2xhc3M9InRvYXN0LXN1Y2Nlc3MiIGhpZGRlbj4KCQl7bGFuZz0ic2RuX3BhZ2VfYWRkcmVzcyJ9IDxzdHJvbmc+eyRjdXJyZW50X3VybH08L3N0cm9uZz48L2JyPjxlbT57bGFuZz0ic2RuX3BhZ2VfZGlzcGxheV95ZXMifTwvZW0+Cgk8L2Rpdj4Ke3tlbHNlaWYgKCRlbmFibGVkID09IDEpICYmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDApfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtd2FybmluZyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X25vIn08L2VtPgoJPC9kaXY+Cnt7ZW5kaWZ9fQ==LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhclN0cmlwZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyU3RyaXBlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhclN0cmlwZSB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJTb2xpZCB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fc29saWRfY29sb3IifTsKCWJhY2tncm91bmQtc2l6ZTogODBweCA4MHB4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wOwoJei1pbmRleDogOTk5OTsKfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYmlnCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDcwcHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkBrZXlmcmFtZXMgcHVsc2UKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMzVweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpAa2V5ZnJhbWVzIGJsaW5rZXIgewogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLlNpZGVOb3RlVGFiOmhvdmVyOmFmdGVyIHsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2hvdmVyY29sb3IifTsKfQoKCS5TaWRlTm90ZVRhYjpob3ZlciB7CgkJY3Vyc29yOiBoZWxwOwoJfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVUYWIgewoJCWxlZnQ6IDA7Cgl9CglodG1sW2Rpcj0icnRsIl0gLlNpZGVOb3RlVGFiIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZUluZm9Cb3ggewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKCWJhY2tncm91bmQ6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9jb2xvciJ9Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbiB7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5faW5mb2JveF9mb250aWNvbl9zaXplIn1weDsKfQoKLlNpZGVOb3RlSW5mb0JveEljb246YmVmb3JlIHsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAwLjNyZW07Cn0KCi8qIFBIT05FUyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKLlNpZGVOb3RlQmFyU3RyaXBlIHsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMDsKCXRvcDogMDsKCXdpZHRoOiA1cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX2JhY2tncm91bmRfY29sb3IifTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA1MDA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCgkuU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCAyMHB4IDIwcHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCWJvdHRvbTogMTBweDsKCXdpZHRoOiAzNXB4OwoJaGVpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiAzMHB4OwoJei1pbmRleDogMTA7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cgl9CgoKLlNpZGVOb3RlVGFiIHsKICAgIGJvcmRlci1yYWRpdXM6IDAge3NldHRpbmc9InNkbl90YWJfcmFkaXVzIn1weCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IDA7Cglwb3NpdGlvbjogZml4ZWQ7CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAndG9wJ319Cgl0b3A6IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX3RhYl9wb3NpdGlvbiA9PSAnYm90dG9tJ319Cglib3R0b206IHtzZXR0aW5nPSJzZG5fdGFiX3dpbmRvdyJ9cHg7CgkJe3tlbmRpZn19Cgl3aWR0aDoge3NldHRpbmc9InNkbl90YWJfc2l6ZXcifXB4OwoJaGVpZ2h0OiB7c2V0dGluZz0ic2RuX3RhYl9zaXplaCJ9cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX3RhYl9jb2xvciJ9OwoJdGV4dC1zaGFkb3c6IDBweCAxcHggNHB4IHJnYmEoMTUxLCAxMTIsIDMwLCAwLjUpOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJbGluZS1oZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCXotaW5kZXg6IDk5OTg7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCi5TaWRlTm90ZVRhYjpiZWZvcmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwoJY29udGVudDogJ1x7c2V0dGluZz0ic2RuX2ZvbnRpY29uIn0nOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwoJZm9udC1zaXplOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX3NpemUifXB4OwoJY29sb3I6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fY29sb3IifTsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMn19CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gM319CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CiAgICBhbmltYXRpb246IHB1bHNlIDFzIGluZmluaXRlOwoJCSB7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5faWNvbl9hbmltYXRpb24gPT0gMX19Cgktd2Via2l0LWFuaW1hdGlvbjogYmxpbmtlciAxcyBzdGVwLXN0YXJ0IGluZmluaXRlOwoJYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQogICB9Cn0KCi8qIFRvYXN0ciAqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6NzAwfS50b2FzdC1tZXNzYWdley1tcy13b3JkLXdyYXA6YnJlYWstd29yZDt3b3JkLXdyYXA6YnJlYWstd29yZH0udG9hc3QtbWVzc2FnZSBhLC50b2FzdC1tZXNzYWdlIGxhYmVse2NvbG9yOiNGRkZ9LnRvYXN0LW1lc3NhZ2UgYTpob3Zlcntjb2xvcjojQ0NDO3RleHQtZGVjb3JhdGlvbjpub25lfS50b2FzdC1jbG9zZS1idXR0b257cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6LS4zZW07dG9wOi0uM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojRkZGOy13ZWJraXQtdGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtsaW5lLWhlaWdodDoxfS50b2FzdC1jbG9zZS1idXR0b246Zm9jdXMsLnRvYXN0LWNsb3NlLWJ1dHRvbjpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfS5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uM2VtO2Zsb2F0OmxlZnQ7cmlnaHQ6LjNlbX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9hc3QtdG9wLWNlbnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1jZW50ZXJ7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtZnVsbC13aWR0aHt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoe2JvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtdG9wLWxlZnR7dG9wOjEycHg7bGVmdDoxMnB4fS50b2FzdC10b3AtcmlnaHR7dG9wOjEycHg7cmlnaHQ6MTJweH0udG9hc3QtYm90dG9tLXJpZ2h0e3JpZ2h0OjEycHg7Ym90dG9tOjEycHh9LnRvYXN0LWJvdHRvbS1sZWZ0e2JvdHRvbToxMnB4O2xlZnQ6MTJweH0jdG9hc3QtY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5OTk5O3BvaW50ZXItZXZlbnRzOm5vbmV9I3RvYXN0LWNvbnRhaW5lciAqey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdG9hc3QtY29udGFpbmVyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtwb2ludGVyLWV2ZW50czphdXRvO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjojRkZGO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtkaXJlY3Rpb246cnRsO3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDE1cHggY2VudGVyfSN0b2FzdC1jb250YWluZXI+ZGl2OmhvdmVyey1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjMDAwOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjMDAwO2JveC1zaGFkb3c6MCAwIDEycHggIzAwMDtvcGFjaXR5OjE7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7Y3Vyc29yOnBvaW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3QtZXJyb3J7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtd2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyPmRpdnt3aWR0aDozMDBweDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfSN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2e3dpZHRoOjk2JTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFBMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNCRDM2MkZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMkY5NkI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I0Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxMWVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6MjQxcHgpIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjhweCA4cHggOHB4IDUwcHg7d2lkdGg6MThlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzo4cHggNTBweCA4cHggOHB4fSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotLjJlbTt0b3A6LS4yZW19I3RvYXN0LWNvbnRhaW5lciAucnRsIC50b2FzdC1jbG9zZS1idXR0b257bGVmdDotLjJlbTtyaWdodDouMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6MTVweCA1MHB4IDE1cHggMTVweH19CgovKiBUb2FzdHIgQ3VzdG9tIE92ZXJyaWRlcyovCgoudG9hc3Qtc3VjY2VzcyB7Cglmb250LXNpemU6IDE2cHg7Cn0KCi50b2FzdC13YXJuaW5nIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIHsKCWJvdHRvbTowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiB7c2V0dGluZz0ic2RuX3RvYXN0cl9zaXpldyJ9JTsKfQoKLnRvYXN0LXRvcC1mdWxsLXdpZHRoIHsKCXRvcDowOwogICAgcmlnaHQ6MDsKICAgIHdpZHRoOiA5MCU7Cn0KCiN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2IHsKICAgd2lkdGg6IDk2JTsKICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQ==OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7CgokKGZ1bmN0aW9uICgpIHsKdG9hc3RyLm9wdGlvbnMgPSB7CiAgImNsb3NlQnV0dG9uIjogZmFsc2UsCiAgImRlYnVnIjogZmFsc2UsCiAgIm5ld2VzdE9uVG9wIjogZmFsc2UsCiAgInByb2dyZXNzQmFyIjogdHJ1ZSwKICAicG9zaXRpb25DbGFzcyI6ICJ0b2FzdC1ib3R0b20tZnVsbC13aWR0aCIsCiAgInByZXZlbnREdXBsaWNhdGVzIjogZmFsc2UsCiAgIm9uY2xpY2siOiBudWxsLAogICJzaG93RHVyYXRpb24iOiAiMzAwIiwKICAiaGlkZUR1cmF0aW9uIjogIjEwMDAiLAogICJ0aW1lT3V0IjogIjYwMDAiLAogICJleHRlbmRlZFRpbWVPdXQiOiAiMTAwMCIsCiAgInNob3dFYXNpbmciOiAic3dpbmciLAogICJoaWRlRWFzaW5nIjogImxpbmVhciIsCiAgInNob3dNZXRob2QiOiAiZmFkZUluIiwKICAiaGlkZU1ldGhvZCI6ICJmYWRlT3V0Igp9OwoKbGV0IHZpc2libGVNZXNzYWdlID0gJCgiLnRvYXN0LXN1Y2Nlc3MiKS5odG1sKCk7CmlmICh2aXNpYmxlTWVzc2FnZSAmJiB2aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgdG9hc3RyLnN1Y2Nlc3ModmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICBjb250YWluZXJJZDogInRvYXN0LWNvbnRhaW5lciIsCiAgfSk7Cn0KCmxldCBpbnZpc2libGVNZXNzYWdlID0gJCgiLnRvYXN0LXdhcm5pbmciKS5odG1sKCk7CmlmIChpbnZpc2libGVNZXNzYWdlICYmIGludmlzaWJsZU1lc3NhZ2UubGVuZ3RoID4gMCkgewogIHRvYXN0ci53YXJuaW5nKGludmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICBjb250YWluZXJJZDogInRvYXN0LWNvbnRhaW5lciIKICB9KTsKfQp9KTsoalF1ZXJ5LCBfKTs=SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypeAdmin NotificationsPage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsOnly groups with staff status and ACP access should be able to see these notifications. Preferably Admins onlyCurrent page addressSideNote will display on this pageSideNote will not display on this pageBeta 1.0.3]]>Toastr WidthToastr Width in Percentage, default is100% Toatr PositionTop RightBottom RightBottom LeftTop LeftTop Full WidthBottom Full WidthBottom CenterTop CenterSideNote ContentMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentStart DateEnd DateSideNote InfoBoxEnable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Descriptive text, keep it short for best displayingShow the Start and End TimesSideNote CustomizeSideNote BarSideNote TabAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Solid ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabSide Bar StyleStripedSolidImageImageTab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top
PGlwczp0ZW1wbGF0ZSBwYXJhbWV0ZXJzPSIiIC8+Cgp7eyRlbmFibGVkID0gMDt9fQoKe3tpZiBzZXR0aW5ncy5zZG5fZW5hYmxlZCBhbmQgc2V0dGluZ3Muc2RuX2RhdGVfc3RhcnQgPCB0aW1lKCkgYW5kIChzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPT0gMCBPUiBzZXR0aW5ncy5zZG5fZGF0ZV9lbmQgPiB0aW1lKCkpIGFuZCAhbWVtYmVyLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgYW5kICFpc3NldCggY29va2llLlNpZGVOb3RlTWVzc2FnZV9kaXNtaXNzZWQgKX19Cgl7e2lmIHNldHRpbmdzLnNkbl9ncm91cHMgPT0gJ2FsbCcgb3IgXElQU1xNZW1iZXI6OmxvZ2dlZEluKCktPmluR3JvdXAoIGV4cGxvZGUoJywnLCBzZXR0aW5ncy5zZG5fZ3JvdXBzICkgKX19CgkJe3skZW5hYmxlZCAgPSAxO319Cgl7e2VuZGlmfX0Ke3tlbmRpZn19Cgp7eyRVUkxlbmFibGVkID0gMDt9fQp7e2lmIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9lbmFibGVkIGFuZCBcSVBTXE1lbWJlcjo6bG9nZ2VkSW4oKS0+aW5Hcm91cCggZXhwbG9kZSgnLCcsIHNldHRpbmdzLnNkbl9ub3RmaWNhdGlvbl9ncm91cHMgKSApfX0KCXt7JFVSTGVuYWJsZWQgPSAxO319Cnt7ZW5kaWZ9fQoKe3tpZiAkZW5hYmxlZCA9PSAxIG9yICRVUkxlbmFibGVkID09IDF9fQoJe3skY3VycmVudF91cmwgPSBtYl9zdHJ0b2xvd2VyKFxJUFNcUmVxdWVzdDo6aSgpLT51cmwoKSk7fX0KCXt7JHBhZ2VzID0gcHJlZ19zcGxpdCgnL1xzKy8nLCBtYl9zdHJ0b2xvd2VyKHNldHRpbmdzLnNkbl9jb25maWd1cmVfcGFnZXNfbGlzdCkgKTt9fQoJe3tpZiBzZXR0aW5ncy5zZG5fY29uZmlndXJlX3BhZ2VzX3R5cGUgPT0gMH19CgkJe3skcGFnZXZpc2libGUgPSAwO319CgkJe3tmb3JlYWNoICRwYWdlcyBhcyAkcGFnZX19CgkgICAgICAgICAgICB7e2lmICRwYWdlICE9IiIgJiYgKG1iX3N0cnBvcygkY3VycmVudF91cmwsICRwYWdlKSAhPT0gZmFsc2UpIH19CgkgICAgICAgICAgICAgICAge3skcGFnZXZpc2libGUgPSAxO319CgkgICAgICAgICAgICB7e2VuZGlmfX0KCQl7e2VuZGZvcmVhY2h9fQoJe3tlbHNlaWYgc2V0dGluZ3Muc2RuX2NvbmZpZ3VyZV9wYWdlc190eXBlID09IDF9fQoJCXt7JHBhZ2V2aXNpYmxlID0gMTt9fQoJCXt7Zm9yZWFjaCAkcGFnZXMgYXMgJHBhZ2V9fQoJICAgICAgICAgICAge3tpZiAkcGFnZSAhPSIiICYmIChtYl9zdHJwb3MoJGN1cnJlbnRfdXJsLCAkcGFnZSkgIT09IGZhbHNlKSB9fQoJICAgICAgICAgICAgICAgIHt7JHBhZ2V2aXNpYmxlID0gMDt9fQoJICAgICAgICAgICAge3tlbmRpZn19CgkJe3tlbmRmb3JlYWNofX0KCXt7ZW5kaWZ9fQp7e2VuZGlmfX0KCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMSl9fQoJCQk8YSBjbGFzcz0nU2lkZU5vdGVUYWInIGRhdGEtaXBzRGlhbG9nIGRhdGEtaXBzRGlhbG9nLWNvbnRlbnQ9JyNlbFNOTURpYWxvZycgZGF0YS1pcHNEaWFsb2ctc2l6ZT0ne2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX21vZGFsX3NpemUifScgIGRhdGEtaXBzRGlhbG9nLXRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fdGl0bGUifSIgZGF0YS1pcHNUb29sdGlwIHRpdGxlPSJ7ZXhwcmVzc2lvbj0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fc3RkZXNjIn0iPjwvYT4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX3NpZGViYXJfaGlkZSA9PSAwfX0KCQkJICA8ZGl2IGNsYXNzPSd7e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMH19U2lkZU5vdGVCYXJTdHJpcGV7e2VuZGlmfX17e2lmIHNldHRpbmdzLnNkbl9iYXJfc3R5bGUgPT0gMX19U2lkZU5vdGVCYXJTb2xpZHt7ZW5kaWZ9fXt7aWYgc2V0dGluZ3Muc2RuX2Jhcl9zdHlsZSA9PSAyfX1TaWRlTm90ZUJhckltYWdle3tlbmRpZn19Jz48L2Rpdj4KICAgIHt7ZW5kaWZ9fQoJCQkgICAgPGRpdiBpZD0nZWxTTk1EaWFsb2cnIGNsYXNzPSdpcHNIaWRlIGlwc1BhZCc+CiAgICB7e2lmIHNldHRpbmdzLnNkbl9pbmZvYm94X2VuYWJsZWR9fQoJICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2lwc01lc3NhZ2UgU2lkZU5vdGVJbmZvQm94Jz4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iU2lkZU5vdGVJbmZvQm94SWNvbiI+e2V4cHJlc3Npb249IlxJUFNcU2V0dGluZ3M6OmkoKS0+c2RuX2luZm9ib3hfY29udGVudCJ9IDwvc3Bhbj4KICAgIHt7aWYgc2V0dGluZ3Muc2RuX2luZm9ib3hfc2hvd3RpbWUgPT0gMX19CiAgICAgICAgICAgICAgICAgICAgPGJyPjxzdHJvbmc+U3RhcnQgVGltZTo8L3N0cm9uZz4ge2RhdGV0aW1lPSJcSVBTXFNldHRpbmdzOjppKCktPnNkbl9kYXRlX3N0YXJ0IiBub3JlbGF0aXZlPSJmYWxzZSJ9IDw+IDxzdHJvbmc+RW5kIFRpbWU6PC9zdHJvbmc+IHtkYXRldGltZT0iXElQU1xTZXR0aW5nczo6aSgpLT5zZG5fZGF0ZV9lbmQiIG5vcmVsYXRpdmU9ImZhbHNlIn0KICAgIHt7ZW5kaWZ9fQogICAgICAgICAgICAgICA8L2Rpdj4KICB7e2VuZGlmfX0KCQkJCSAgICAgPHAgY2xhc3M9J2lwc1R5cGVfcmVzZXQgaXBzU3BhY2VyX2JvdHRvbSBpcHNUeXBlX25vcm1hbCc+CiAgICAgICAgICAgICAgIHtsYW5nPSJzZG5fbGdkZXNjX3ZhbHVlIn0KCQkJCSAgICA8L3A+CgoJe3tpZiBzZXR0aW5ncy5zZG5faGlkZX19Cgl7e2lmICFzZXR0aW5ncy5zZG5faGlkZV9ndWVzdHN9fQoJCQkJICAgPGRpdiBpZD0iU2lkZU5vdGVNZXNzYWdlX2Rpc21pc3MiPgoJCQkJCSAgPGEgY2xhc3M9Imlwc0J1dHRvbiBpcHNCdXR0b25fdmVyeVNtYWxsIGlwc0J1dHRvbl9pbXBvcnRhbnQgaXBzQnV0dG9uX2Z1bGxXaWR0aCIgaHJlZj0ie3VybD0iYXBwPWNvcmUmbW9kdWxlPXN5c3RlbSZzZWN0aW9uPXBsdWdpbnMmZG89U2lkZU5vdGVEaXNtaXNzIiBjc3JmPSIxIn0iIGRhdGEtaXBzdG9vbHRpcCB0aXRsZT0ie2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfSIgZGF0YS1hY3Rpb249ImRpc21pc3MiPntsYW5nPSdzZG5faGlkZV90b29sdGlwJ308L2E+CgkJCQkgICA8L2Rpdj4KCXt7ZWxzZWlmIHNldHRpbmdzLnNkbl9oaWRlX2d1ZXN0cyBhbmQgIVxJUFNcTWVtYmVyOjpsb2dnZWRJbigpLT5tZW1iZXJfaWQgfX0KICAgICAgICAgICAgICAgICAgPHA+IDwvcD4KCXt7ZWxzZX19CgkJCQkgICA8ZGl2IGlkPSJTaWRlTm90ZU1lc3NhZ2VfZGlzbWlzcyI+CgkJCQkJICA8YSBjbGFzcz0iaXBzQnV0dG9uIGlwc0J1dHRvbl92ZXJ5U21hbGwgaXBzQnV0dG9uX2ltcG9ydGFudCBpcHNCdXR0b25fZnVsbFdpZHRoIiBocmVmPSJ7dXJsPSJhcHA9Y29yZSZtb2R1bGU9c3lzdGVtJnNlY3Rpb249cGx1Z2lucyZkbz1TaWRlTm90ZURpc21pc3MiIGNzcmY9IjEifSIgZGF0YS1pcHN0b29sdGlwIHRpdGxlPSJ7bGFuZz0nc2RuX2hpZGVfdG9vbHRpcCd9IiBkYXRhLWFjdGlvbj0iZGlzbWlzcyI+e2xhbmc9J3Nkbl9oaWRlX3Rvb2x0aXAnfTwvYT4KCQkJCSAgIDwvZGl2PgoJe3tlbmRpZn19Cgl7e2VuZGlmfX0KICAgICAgICAgICAgPC9kaXY+Cnt7ZW5kaWZ9fQoKCnt7aWYgKCRlbmFibGVkID09IDEpICYmICgkVVJMZW5hYmxlZCA9PSAxKSAmJiAoJHBhZ2V2aXNpYmxlID09IDEpfX0KCTxkaXYgaWQ9InNkblNpZGVOb3RlIiBjbGFzcz0idG9hc3Qtc3VjY2VzcyIgaGlkZGVuPgoJCXtsYW5nPSJzZG5fcGFnZV9hZGRyZXNzIn0gPHN0cm9uZz57JGN1cnJlbnRfdXJsfTwvc3Ryb25nPjwvYnI+PGVtPntsYW5nPSJzZG5fcGFnZV9kaXNwbGF5X3llcyJ9PC9lbT4KCTwvZGl2Pgp7e2Vsc2VpZiAoJGVuYWJsZWQgPT0gMSkgJiYgKCRVUkxlbmFibGVkID09IDEpICYmICgkcGFnZXZpc2libGUgPT0gMCl9fQoJPGRpdiBpZD0ic2RuU2lkZU5vdGUiIGNsYXNzPSJ0b2FzdC13YXJuaW5nIiBoaWRkZW4+CgkJe2xhbmc9InNkbl9wYWdlX2FkZHJlc3MifSA8c3Ryb25nPnskY3VycmVudF91cmx9PC9zdHJvbmc+PC9icj48ZW0+e2xhbmc9InNkbl9wYWdlX2Rpc3BsYXlfbm8ifTwvZW0+Cgk8L2Rpdj4Ke3tlbmRpZn19LyogU2lkZU5vdGUgKi8KI1NpZGVOb3RlTWVzc2FnZV9kaXNtaXNzIHsKCW1hcmdpbi10b3A6IDVweDsKfQoKI2VsU05NRGlhbG9nIHsKCn0KCi5TaWRlTm90ZUJhclN0cmlwZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDgwcHggODBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDk5OTk7Cgl0cmFuc2l0aW9uOiAwLjJzIGJhY2tncm91bmQgZWFzZS1pbi1vdXQ7Cn0KCglodG1sW2Rpcj0ibHRyIl0gLlNpZGVOb3RlQmFyU3RyaXBlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhclN0cmlwZSB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJTb2xpZCB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fc29saWRfY29sb3IifTsKCWJhY2tncm91bmQtc2l6ZTogODBweCA4MHB4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wOwoJei1pbmRleDogOTk5OTsKfQoKCWh0bWxbZGlyPSJsdHIiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVCYXJTb2xpZCB7CgkJcmlnaHQ6IDA7Cgl9CgouU2lkZU5vdGVCYXJJbWFnZSB7Cglwb3NpdGlvbjogZml4ZWQ7Cglib3R0b206IDA7Cgl0b3A6IDA7Cgl3aWR0aDoge3NldHRpbmc9InNkbl9zaWRlYmFyX3dpZHRoIn1weDsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgvdXBsb2Fkcy97c2V0dGluZz0ic2RuX2ltYWdlX2JhY2sifSk7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0OwogICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluOwoJYmFja2dyb3VuZC1zaXplOiA4MHB4IDgwcHg7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7Cgl6LWluZGV4OiA5OTk5Owp9CgoJaHRtbFtkaXI9Imx0ciJdIC5TaWRlTm90ZUJhckltYWdlIHsKCQlsZWZ0OiAwOwoJfQoJaHRtbFtkaXI9InJ0bCJdIC5TaWRlTm90ZUJhckltYWdlIHsKCQlyaWdodDogMDsKCX0KCi5TaWRlTm90ZVRhYiB7CiAgICBib3JkZXItcmFkaXVzOiAwIHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHgge3NldHRpbmc9InNkbl90YWJfcmFkaXVzIn1weCAwOwoJcG9zaXRpb246IGZpeGVkOwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl90YWJfcG9zaXRpb24gPT0gJ3RvcCd9fQoJdG9wOiB7c2V0dGluZz0ic2RuX3RhYl93aW5kb3cifXB4OwoJCXt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl90YWJfcG9zaXRpb24gPT0gJ2JvdHRvbSd9fQoJYm90dG9tOiB7c2V0dGluZz0ic2RuX3RhYl93aW5kb3cifXB4OwoJCXt7ZW5kaWZ9fQoJd2lkdGg6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemV3In1weDsKCWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJYmFja2dyb3VuZC1jb2xvcjoge3NldHRpbmc9InNkbl90YWJfY29sb3IifTsKCXRleHQtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDE1MSwgMTEyLCAzMCwgMC41KTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWxpbmUtaGVpZ2h0OiB7c2V0dGluZz0ic2RuX3RhYl9zaXplaCJ9cHg7Cgl6LWluZGV4OiA5OTk4OwoJdHJhbnNpdGlvbjogMC4ycyBiYWNrZ3JvdW5kIGVhc2UtaW4tb3V0Owp9CgouU2lkZU5vdGVUYWI6YmVmb3JlIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKCWNvbnRlbnQ6ICdce3NldHRpbmc9InNkbl9mb250aWNvbiJ9JzsKICAgIGZvbnQtZmFtaWx5OiBGb250QXdlc29tZTsKCWZvbnQtc2l6ZToge3NldHRpbmc9InNkbl9mb250aWNvbl9zaXplIn1weDsKCWNvbG9yOiB7c2V0dGluZz0ic2RuX2ZvbnRpY29uX2NvbG9yIn07CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX2ljb25fYW5pbWF0aW9uID09IDJ9fQogICAgLXdlYmtpdC1hbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlOwogICAgYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKCQkge3tlbmRpZn19CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX2ljb25fYW5pbWF0aW9uID09IDN9fQogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgLXdlYmtpdC1hbmltYXRpb246IHB1bHNlIDFzIGluZmluaXRlOwogICAgYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKCQkge3tlbmRpZn19CgkgICAgIHt7aWYgc2V0dGluZ3Muc2RuX2ljb25fYW5pbWF0aW9uID09IDF9fQoJLXdlYmtpdC1hbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCWFuaW1hdGlvbjogYmxpbmtlciAxcyBzdGVwLXN0YXJ0IGluZmluaXRlOwoJCSB7e2VuZGlmfX0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIHB1bHNlCnsKICAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpOwogIH0KICAxMDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDM1cHggcmdiYSgwLCAwLCAwLCAwKTsKICB9Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZS1iaWcKewogIDAlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgfQogIDEwMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgNzBweCByZ2JhKDAsIDAsIDAsIDApOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzZQp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCAzNXB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpAa2V5ZnJhbWVzIHB1bHNlLWJpZwp7CiAgMCUgewogICAgYm94LXNoYWRvdzogMCAwIDAgMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICB9CiAgMTAwJSB7CiAgICBib3gtc2hhZG93OiAwIDAgMCA3MHB4IHJnYmEoMCwgMCwgMCwgMCk7CiAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgYmxpbmtlciB7CiAgNTAlIHsKICAgIG9wYWNpdHk6IDA7CiAgfQp9CkBrZXlmcmFtZXMgYmxpbmtlciB7CiAgNTAlIHsKICAgIG9wYWNpdHk6IDA7CiAgfQp9CgouU2lkZU5vdGVUYWI6aG92ZXI6YWZ0ZXIgewoJY29sb3I6IHtzZXR0aW5nPSJzZG5fZm9udGljb25faG92ZXJjb2xvciJ9Owp9CgoJLlNpZGVOb3RlVGFiOmhvdmVyIHsKCQljdXJzb3I6IGhlbHA7Cgl9CgoJaHRtbFtkaXI9Imx0ciJdIC5TaWRlTm90ZVRhYiB7CgkJbGVmdDogMDsKCX0KCWh0bWxbZGlyPSJydGwiXSAuU2lkZU5vdGVUYWIgewoJCXJpZ2h0OiAwOwoJfQoKLlNpZGVOb3RlSW5mb0JveCB7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4OwoJYmFja2dyb3VuZDoge3NldHRpbmc9InNkbl9pbmZvYm94X2NvbG9yIn07Cn0KCi5TaWRlTm90ZUluZm9Cb3hJY29uIHsKCWZvbnQtc2l6ZToge3NldHRpbmc9InNkbl9pbmZvYm94X2ZvbnRpY29uX3NpemUifXB4Owp9CgouU2lkZU5vdGVJbmZvQm94SWNvbjpiZWZvcmUgewoJY29udGVudDogJ1x7c2V0dGluZz0ic2RuX2luZm9ib3hfZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtYXJnaW4tcmlnaHQ6IDAuM3JlbTsKfQoKLyogUEhPTkVTICovCkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7CgouU2lkZU5vdGVCYXJTdHJpcGUgewoJcG9zaXRpb246IGZpeGVkOwoJYm90dG9tOiAwOwoJdG9wOiAwOwoJd2lkdGg6IDVweDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fYmFja2dyb3VuZF9jb2xvciJ9OwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0pLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDUwJSwge3NldHRpbmc9InNkbl9zdHJpcGVfY29sb3IifSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHtzZXR0aW5nPSJzZG5fc3RyaXBlX2NvbG9yIn0gNTAlLCB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9IDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CgliYWNrZ3JvdW5kLXNpemU6IDQwcHggNDBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKCXotaW5kZXg6IDUwMDsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKCS5TaWRlTm90ZVRhYiB7CiAgICBib3JkZXItcmFkaXVzOiAwIDIwcHggMjBweCAwOwoJcG9zaXRpb246IGZpeGVkOwoJYm90dG9tOiAxMHB4OwoJd2lkdGg6IDM1cHg7CgloZWlnaHQ6IDMwcHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB7c2V0dGluZz0ic2RuX3N0cmlwZV9jb2xvciJ9OwoJdGV4dC1zaGFkb3c6IDBweCAxcHggNHB4IHJnYmEoMTUxLCAxMTIsIDMwLCAwLjUpOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJbGluZS1oZWlnaHQ6IDMwcHg7Cgl6LWluZGV4OiAxMDsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKCX0KCgouU2lkZU5vdGVUYWIgewogICAgYm9yZGVyLXJhZGl1czogMCB7c2V0dGluZz0ic2RuX3RhYl9yYWRpdXMifXB4IHtzZXR0aW5nPSJzZG5fdGFiX3JhZGl1cyJ9cHggMDsKCXBvc2l0aW9uOiBmaXhlZDsKCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICd0b3AnfX0KCXRvcDoge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCSAgICAge3tpZiBzZXR0aW5ncy5zZG5fdGFiX3Bvc2l0aW9uID09ICdib3R0b20nfX0KCWJvdHRvbToge3NldHRpbmc9InNkbl90YWJfd2luZG93In1weDsKCQl7e2VuZGlmfX0KCXdpZHRoOiB7c2V0dGluZz0ic2RuX3RhYl9zaXpldyJ9cHg7CgloZWlnaHQ6IHtzZXR0aW5nPSJzZG5fdGFiX3NpemVoIn1weDsKCWJhY2tncm91bmQtY29sb3I6IHtzZXR0aW5nPSJzZG5fdGFiX2NvbG9yIn07Cgl0ZXh0LXNoYWRvdzogMHB4IDFweCA0cHggcmdiYSgxNTEsIDExMiwgMzAsIDAuNSk7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglsaW5lLWhlaWdodDoge3NldHRpbmc9InNkbl90YWJfc2l6ZWgifXB4OwoJei1pbmRleDogOTk5ODsKCXRyYW5zaXRpb246IDAuMnMgYmFja2dyb3VuZCBlYXNlLWluLW91dDsKfQoKLlNpZGVOb3RlVGFiOmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb250ZW50OiAnXHtzZXR0aW5nPSJzZG5fZm9udGljb24ifSc7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7Cglmb250LXNpemU6IHtzZXR0aW5nPSJzZG5fZm9udGljb25fc2l6ZSJ9cHg7Cgljb2xvcjoge3NldHRpbmc9InNkbl9mb250aWNvbl9jb2xvciJ9OwoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAyfX0KICAgIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAzfX0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogcHVsc2UgMXMgaW5maW5pdGU7CgkJIHt7ZW5kaWZ9fQoJICAgICB7e2lmIHNldHRpbmdzLnNkbl9pY29uX2FuaW1hdGlvbiA9PSAxfX0KCS13ZWJraXQtYW5pbWF0aW9uOiBibGlua2VyIDFzIHN0ZXAtc3RhcnQgaW5maW5pdGU7CglhbmltYXRpb246IGJsaW5rZXIgMXMgc3RlcC1zdGFydCBpbmZpbml0ZTsKCQkge3tlbmRpZn19CiAgIH0KfQoKLyogVG9hc3RyICovCi50b2FzdC10aXRsZXtmb250LXdlaWdodDo3MDB9LnRvYXN0LW1lc3NhZ2V7LW1zLXdvcmQtd3JhcDpicmVhay13b3JkO3dvcmQtd3JhcDpicmVhay13b3JkfS50b2FzdC1tZXNzYWdlIGEsLnRvYXN0LW1lc3NhZ2UgbGFiZWx7Y29sb3I6I0ZGRn0udG9hc3QtbWVzc2FnZSBhOmhvdmVye2NvbG9yOiNDQ0M7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnRvYXN0LWNsb3NlLWJ1dHRvbntwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDotLjNlbTt0b3A6LS4zZW07ZmxvYXQ6cmlnaHQ7Zm9udC1zaXplOjIwcHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiNGRkY7LXdlYmtpdC10ZXh0LXNoYWRvdzowIDFweCAwICNmZmY7dGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApO2xpbmUtaGVpZ2h0OjF9LnRvYXN0LWNsb3NlLWJ1dHRvbjpmb2N1cywudG9hc3QtY2xvc2UtYnV0dG9uOmhvdmVye2NvbG9yOiMwMDA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXI7b3BhY2l0eTouNDstbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTQwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT00MCl9LnJ0bCAudG9hc3QtY2xvc2UtYnV0dG9ue2xlZnQ6LS4zZW07ZmxvYXQ6bGVmdDtyaWdodDouM2VtfWJ1dHRvbi50b2FzdC1jbG9zZS1idXR0b257cGFkZGluZzowO2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6MCAwO2JvcmRlcjowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lfS50b2FzdC10b3AtY2VudGVye3RvcDowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtYm90dG9tLWNlbnRlcntib3R0b206MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LXRvcC1mdWxsLXdpZHRoe3RvcDowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtYm90dG9tLWZ1bGwtd2lkdGh7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtbGVmdHt0b3A6MTJweDtsZWZ0OjEycHh9LnRvYXN0LXRvcC1yaWdodHt0b3A6MTJweDtyaWdodDoxMnB4fS50b2FzdC1ib3R0b20tcmlnaHR7cmlnaHQ6MTJweDtib3R0b206MTJweH0udG9hc3QtYm90dG9tLWxlZnR7Ym90dG9tOjEycHg7bGVmdDoxMnB4fSN0b2FzdC1jb250YWluZXJ7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDo5OTk5OTk7cG9pbnRlci1ldmVudHM6bm9uZX0jdG9hc3QtY29udGFpbmVyICp7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fSN0b2FzdC1jb250YWluZXI+ZGl2e3Bvc2l0aW9uOnJlbGF0aXZlO3BvaW50ZXItZXZlbnRzOmF1dG87b3ZlcmZsb3c6aGlkZGVuO21hcmdpbjowIDAgNnB4O3BhZGRpbmc6MTVweCAxNXB4IDE1cHggNTBweDt3aWR0aDozMDBweDstbW96LWJvcmRlci1yYWRpdXM6M3B4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7Ym9yZGVyLXJhZGl1czozcHg7YmFja2dyb3VuZC1wb3NpdGlvbjoxNXB4IGNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7LW1vei1ib3gtc2hhZG93OjAgMCAxMnB4ICM5OTk7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAxMnB4ICM5OTk7Ym94LXNoYWRvdzowIDAgMTJweCAjOTk5O2NvbG9yOiNGRkY7b3BhY2l0eTouODstbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTgwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT04MCl9I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse2RpcmVjdGlvbjpydGw7cGFkZGluZzoxNXB4IDUwcHggMTVweCAxNXB4O2JhY2tncm91bmQtcG9zaXRpb246cmlnaHQgMTVweCBjZW50ZXJ9I3RvYXN0LWNvbnRhaW5lcj5kaXY6aG92ZXJ7LW1vei1ib3gtc2hhZG93OjAgMCAxMnB4ICMwMDA7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAxMnB4ICMwMDA7Ym94LXNoYWRvdzowIDAgMTJweCAjMDAwO29wYWNpdHk6MTstbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTtjdXJzb3I6cG9pbnRlcn0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1pbmZve2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFHd1NVUkJWRWhMdFphOVNnTkJFTWM5c1V4eFJjb1VLU3pTV0loWHBGTWhoWVdGaGFCZzR5UFlpV0NYWnhCTEVSc0xSUzNFUWtFZndDS2RqV0pBd1NLQ2dvS0NjdWR2NE81WUxydDdFemdYaGlVMy80K2IyY2ttd1ZqSlNwS2tRNndBaTRnd2hUK3ozd1JCY0V6MHlqU3NlVVRyY1J5ZnNIc1htRDBBbWJIT0M5SWk4VkltbnVYQlBnbEhwUTV3d1NWTTdzTm5URzdaYTRKd0RkQ2p4eUFpSDNueUEybXRhVEp1ZmlEWjVkQ2FxbEl0SUxoMU5IYXRmTjVza3ZqeDlaMzhtNjlDZ3p1WG1aZ1ZyUElHRTc2M0p4OXFLc1JveldZdzZ4T0hkRVIrbm4yS2tPK0JiK1VWNUNCTjZXQzZRdEJnYlJWb3pyYWhBYm1tNkh0VXNndFBDMTl0RmR4WFpZQk9ma2JtRkoxVmFIQTFWQUhqZDBwcDcwb1RaenZSK0VWcngyWWdmZHNxNmV1NTVCSFlSOGhsY2tpK24ra0VSVUZHOEJyQTBCd2plQXYyTThXTFFCdGN5K1NENmZOc21uQjNBbEJMcmdUdFZXMWMyUU40YlZXTEFUYUlTNjBKMkR1NXkxVGlKZ2pTQnZGVlpnVG13Q1UrZEFaRm9QeEdFRXM4bnlIQzlCd2UyR3ZFSnYyV1haYjB2amR5RlQ0Q3hrM2Uva0lxbE9Hb1ZMd3dQZXZwWUhUKzAwVCtoV3dYRGY0QUpBT1VxV2NEaGJ3QUFBQUFTVVZPUks1Q1lJST0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBSE9TVVJCVkVoTHJaYS9TZ05CRU1aemgwV0tDQ2xTQ0thSVlPRUQrQUFLZVFRTEc4SFd6dExDSW1CcllhZGdJZFkrZ0lLTllrQkZTd3U3Q0FvcUNna2tvR0JJL0UyOFBkYkxabWVETGd6WnpjeDgzL3paMlNTWEMxajlmcitJMUhxOTNnMnl4SDRpd00xdmtvQldBZHhDbXB6VHhma04yUmN5Wk5hSEZJa1NvMTArOGtneGtYSVVSVjVIR3hUbUZ1Yzc1QjJSZlFrcHhIRzhhQWdhQUZhMHRBSHFZRmZRN0l3ZTJ5aE9EazgrSjRDN3lBb1JUV0kzdy80a2xHUmdSNGxPN1JwbjkrZ3ZNeVdwK3V4Rmg4K0grQVJsZ04xbkp1SnVRQVl2TmtFbndHRmNrMThFcjRxM2VnRWMvb08rbWhMZEtnUnloZE5GaWFjQzBybE9DYmhOVno0SDlGbkFZZ0RCdlUzUUlpb1psSkZMSnRzb0hZUkRmaVpvVXlJeHFDdFJwVmxBTnEwRVU0ZEFwanJ0Z2V6UEZhZDVTMTlXZ2prYzBoTlZudUY0SGpWQTZDN1FyU0lieWxCK29aZTNhSGdCc3FsTnFLWUg0OGpYeUpLTXVBYml5Vko4S3phQjNlUmMwcGc5VndRNG5pRnJ5STY4cWlPaTNBYmp3ZHNmbkF0azBiQ2pUTEpLcjZtckQ5ZzhpcS9TL0I4MWhndU9NbFFUblZ5RzQwd0Fjam5tZ3NDTkVTRHJqbWU3d2ZmdFA0UDdTUDROM0NKWmR2em9OeUdxMmMvSFdPWEpHc3ZWZytSQS9rMk1DL3dONkkyWUEyUHQ4R2tBQUFBQVNVVk9SSzVDWUlJPSkhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXI+LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQURzU1VSQlZFaExZMkFZQmZRTWdmLy8vM1A4Ky9ldkFJZ3ZBL0ZzSUYrQmF2WUREV01CR3JvYVNNTUJpRThWQzdBWkRySUZhTUZuaWkzQVpUalVnc1VVV1VEQThPZEFINmlRYlFFaHc0SHlHc1BFY0tCWEJJQzRBUmhleDRHNEJzam13ZVUxc29JRmFHZy9XdG9GWlJJWmRFdklNaHhrQ0NqWElWc0FUVjZnRkdBQ3M0UnN3MEVHZ0lJSDNRSllKZ0hTQVJRWkRyV0FCK2phd3pncytRMlVPNDlEN2puUlNSR29FRlJJTGNkbUVNV0dJMGNtMEpKMlFwWUExUkR2Y216SkVXaEFCaEQvcHFyTDBTMENXdUFCS2duUmtpOWxMc2VTN2cyQWxxd0hXUVNLSDRvS0xySUxwUkdoRVFDdzJMaVJVSWE0bHdBQUFBQkpSVTVFcmtKZ2dnPT0pIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFHWVNVUkJWRWhMNVpTdlRzTlFGTWJYWkdJQ01ZR1ltSmhBUUlKQUlDWVFQQUFDaVNEQjhBaUlDUVFKVDRDcVFFd2dKdllBU0FRQ2laaVltSmhBSUJBVENBUkp5KzlyVHNsZGQ4c0t1MU0wK2RMYjA1N3Y2L2xicS8yckswbVMvVFJOajljV05BS1BZSUpJSTdnSXhDY1E1MWN2cUlEK0dJRVg4QVNHNEIxYks1Z0laRmVRZm9KZEVYT2ZnWDRRQVFnN2tIMkE2NXlRODdseXhiMjdzZ2drQXpBdUZoYmJnMUsya2dDa0IxYlZ3eUlSOW0yTDdQUlBJaERVSVhnR3R5S3c1NzV5ejNsVE5zNlg0SlhualYrTEtNL20zTXlkblRidE9LSWp0ejZWaENCcTR2U20zbmNkckQybGswVmdVWFNWS2pWREpYSnppalcxUlFkc1U3Rjc3SGU4dTY4a29OWlR6OE96NXlHYTZKM0gzbFoweFlnWEJLMlF5bWxXV0ErUlduWWhza0xCdjJ2bUUraEJNQ3RiQTdLWDVkcld5UlQvMkpzcVoySXZmQjlZNGJXRE5NRmJKUkZtQzlFNzRTb1MwQ3F1bHdqa0MwKzVicGNWMUNaOE5NZWo0cGp5MFUrZG9EUXNHeW8xaHpWSnR0SWpoUTdHbkJ0UkZOMVVhclVsSDhGM3hpY3QrSFkwN3JFem9VR1BsV2NqUkZScjQvZ0NoWmdjM1pMMmQ4b0FBQUFBU1VWT1JLNUNZSUk9KSFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lci50b2FzdC1ib3R0b20tY2VudGVyPmRpdiwjdG9hc3QtY29udGFpbmVyLnRvYXN0LXRvcC1jZW50ZXI+ZGl2e3dpZHRoOjMwMHB4O21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG99I3RvYXN0LWNvbnRhaW5lci50b2FzdC1ib3R0b20tZnVsbC13aWR0aD5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtZnVsbC13aWR0aD5kaXZ7d2lkdGg6OTYlO21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG99LnRvYXN0e2JhY2tncm91bmQtY29sb3I6IzAzMDMwM30udG9hc3Qtc3VjY2Vzc3tiYWNrZ3JvdW5kLWNvbG9yOiM1MUEzNTF9LnRvYXN0LWVycm9ye2JhY2tncm91bmQtY29sb3I6I0JEMzYyRn0udG9hc3QtaW5mb3tiYWNrZ3JvdW5kLWNvbG9yOiMyRjk2QjR9LnRvYXN0LXdhcm5pbmd7YmFja2dyb3VuZC1jb2xvcjojRjg5NDA2fS50b2FzdC1wcm9ncmVzc3twb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7Ym90dG9tOjA7aGVpZ2h0OjRweDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7b3BhY2l0eTouNDstbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTQwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT00MCl9QG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDoyNDBweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzo4cHggOHB4IDhweCA1MHB4O3dpZHRoOjExZW19I3RvYXN0LWNvbnRhaW5lcj5kaXYucnRse3BhZGRpbmc6OHB4IDUwcHggOHB4IDhweH0jdG9hc3QtY29udGFpbmVyIC50b2FzdC1jbG9zZS1idXR0b257cmlnaHQ6LS4yZW07dG9wOi0uMmVtfSN0b2FzdC1jb250YWluZXIgLnJ0bCAudG9hc3QtY2xvc2UtYnV0dG9ue2xlZnQ6LS4yZW07cmlnaHQ6LjJlbX19QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDoyNDFweCkgYW5kIChtYXgtd2lkdGg6NDgwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxOGVtfSN0b2FzdC1jb250YWluZXI+ZGl2LnJ0bHtwYWRkaW5nOjhweCA1MHB4IDhweCA4cHh9I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0uMmVtO3RvcDotLjJlbX0jdG9hc3QtY29udGFpbmVyIC5ydGwgLnRvYXN0LWNsb3NlLWJ1dHRvbntsZWZ0Oi0uMmVtO3JpZ2h0Oi4yZW19fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6NDgxcHgpIGFuZCAobWF4LXdpZHRoOjc2OHB4KXsjdG9hc3QtY29udGFpbmVyPmRpdntwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MjVlbX0jdG9hc3QtY29udGFpbmVyPmRpdi5ydGx7cGFkZGluZzoxNXB4IDUwcHggMTVweCAxNXB4fX0KCi8qIFRvYXN0ciBDdXN0b20gT3ZlcnJpZGVzKi8KCi50b2FzdC1zdWNjZXNzIHsKCWZvbnQtc2l6ZTogMTZweDsKfQoKLnRvYXN0LXdhcm5pbmcgewoJZm9udC1zaXplOiAxNnB4Owp9CgoudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGggewoJYm90dG9tOjA7CiAgICByaWdodDowOwogICAgd2lkdGg6IHtzZXR0aW5nPSJzZG5fdG9hc3RyX3NpemV3In0lOwp9CgoudG9hc3QtdG9wLWZ1bGwtd2lkdGggewoJdG9wOjA7CiAgICByaWdodDowOwogICAgd2lkdGg6IDkwJTsKfQoKI3RvYXN0LWNvbnRhaW5lci50b2FzdC1ib3R0b20tZnVsbC13aWR0aD5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtZnVsbC13aWR0aD5kaXYgewogICB3aWR0aDogOTYlOwogICBtYXJnaW4tbGVmdDogYXV0bzsKICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9OyggZnVuY3Rpb24oJCwgXywgdW5kZWZpbmVkKXsKCSJ1c2Ugc3RyaWN0IjsKCQoJaXBzLmNvbnRyb2xsZXIucmVnaXN0ZXIoJ3BsdWdpbnMuc2lkZW5vdGUnLCB7CgkKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CgkJCXRoaXMub24oICdjbGljaycsICdbZGF0YS1hY3Rpb249ImRpc21pc3MiXScsIHRoaXMuZGlzbWlzcyApOwoJCX0sCgkJCgkJZGlzbWlzczogZnVuY3Rpb24gKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQl2YXIgdXJsID0gJCggZS5jdXJyZW50VGFyZ2V0ICkuYXR0cignaHJlZicpOwoJCQl2YXIgbWVzc2FnZSA9ICQodGhpcy5zY29wZSk7CgkJCQoJCQlpcHMuZ2V0QWpheCgpKHVybCkuZG9uZShmdW5jdGlvbigpewoJCQkJaXBzLnV0aWxzLmFuaW0uZ28oICdmYWRlT3V0JywgbWVzc2FnZSApOwoJCQkJLy90aGlzLnNjb3BlLnNsaWRlVXAoKTsKCQkJfSkuZmFpbChmdW5jdGlvbigpewoJCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQl9KTsKCQl9CgoJfSk7Cn0oalF1ZXJ5LCBfKSk7CgohZnVuY3Rpb24oZSl7ZShbImpxdWVyeSJdLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uZXJyb3IsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5lcnJvcixtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gdHx8KHQ9bSgpKSx2PWUoIiMiK3QuY29udGFpbmVySWQpLHYubGVuZ3RoP3Y6KG4mJih2PWQodCkpLHYpfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBnKHt0eXBlOk8uaW5mbyxpY29uQ2xhc3M6bSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTplLG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOnR9KX1mdW5jdGlvbiBzKGUpe0M9ZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZyh7dHlwZTpPLnN1Y2Nlc3MsaWNvbkNsYXNzOm0oKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6ZSxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTp0fSl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGcoe3R5cGU6Ty53YXJuaW5nLGljb25DbGFzczptKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmUsb3B0aW9uc092ZXJyaWRlOm4sdGl0bGU6dH0pfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbz1tKCk7dnx8bihvKSx1KGUsbyx0KXx8bChvKX1mdW5jdGlvbiBjKHQpe3ZhciBvPW0oKTtyZXR1cm4gdnx8bihvKSx0JiYwPT09ZSgiOmZvY3VzIix0KS5sZW5ndGg/dm9pZCBoKHQpOnZvaWQodi5jaGlsZHJlbigpLmxlbmd0aCYmdi5yZW1vdmUoKSl9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIG49di5jaGlsZHJlbigpLG89bi5sZW5ndGgtMTtvPj0wO28tLSl1KGUobltvXSksdCl9ZnVuY3Rpb24gdSh0LG4sbyl7dmFyIHM9ISghb3x8IW8uZm9yY2UpJiZvLmZvcmNlO3JldHVybiEoIXR8fCFzJiYwIT09ZSgiOmZvY3VzIix0KS5sZW5ndGgpJiYodFtuLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpuLmhpZGVEdXJhdGlvbixlYXNpbmc6bi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aCh0KX19KSwhMCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdj1lKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsdC5jb250YWluZXJJZCkuYWRkQ2xhc3ModC5wb3NpdGlvbkNsYXNzKSx2LmFwcGVuZFRvKGUodC50YXJnZXQpKSx2fWZ1bmN0aW9uIHAoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLHRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246dm9pZCAwLGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxZTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOnZvaWQgMCxjbG9zZU1ldGhvZDohMSxjbG9zZUR1cmF0aW9uOiExLGNsb3NlRWFzaW5nOiExLGNsb3NlT25Ib3ZlcjohMCxleHRlbmRlZFRpbWVPdXQ6MWUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1ZTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsZXNjYXBlSHRtbDohMSx0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLGNsb3NlQ2xhc3M6InRvYXN0LWNsb3NlLWJ1dHRvbiIsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITEscHJvZ3Jlc3NDbGFzczoidG9hc3QtcHJvZ3Jlc3MiLHJ0bDohMX19ZnVuY3Rpb24gZihlKXtDJiZDKGUpfWZ1bmN0aW9uIGcodCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbD09ZSYmKGU9IiIpLGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIHMoKXtjKCksdSgpLGQoKSxwKCksZygpLEMoKSxsKCksaSgpfWZ1bmN0aW9uIGkoKXt2YXIgZT0iIjtzd2l0Y2godC5pY29uQ2xhc3Mpe2Nhc2UidG9hc3Qtc3VjY2VzcyI6Y2FzZSJ0b2FzdC1pbmZvIjplPSJwb2xpdGUiO2JyZWFrO2RlZmF1bHQ6ZT0iYXNzZXJ0aXZlIn1JLmF0dHIoImFyaWEtbGl2ZSIsZSl9ZnVuY3Rpb24gYSgpe0UuY2xvc2VPbkhvdmVyJiZJLmhvdmVyKEgsRCksIUUub25jbGljayYmRS50YXBUb0Rpc21pc3MmJkkuY2xpY2soYiksRS5jbG9zZUJ1dHRvbiYmaiYmai5jbGljayhmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZSE9PSEwJiYoZS5jYW5jZWxCdWJibGU9ITApLEUub25DbG9zZUNsaWNrJiZFLm9uQ2xvc2VDbGljayhlKSxiKCEwKX0pLEUub25jbGljayYmSS5jbGljayhmdW5jdGlvbihlKXtFLm9uY2xpY2soZSksYigpfSl9ZnVuY3Rpb24gcigpe0kuaGlkZSgpLElbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZyxjb21wbGV0ZTpFLm9uU2hvd259KSxFLnRpbWVPdXQ+MCYmKGs9c2V0VGltZW91dChiLEUudGltZU91dCksRi5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KEUudGltZU91dCksRi5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK0YubWF4SGlkZVRpbWUsRS5wcm9ncmVzc0JhciYmKEYuaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbCh4LDEwKSkpfWZ1bmN0aW9uIGMoKXt0Lmljb25DbGFzcyYmSS5hZGRDbGFzcyhFLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHkpfWZ1bmN0aW9uIGwoKXtFLm5ld2VzdE9uVG9wP3YucHJlcGVuZChJKTp2LmFwcGVuZChJKX1mdW5jdGlvbiB1KCl7aWYodC50aXRsZSl7dmFyIGU9dC50aXRsZTtFLmVzY2FwZUh0bWwmJihlPW8odC50aXRsZSkpLE0uYXBwZW5kKGUpLmFkZENsYXNzKEUudGl0bGVDbGFzcyksSS5hcHBlbmQoTSl9fWZ1bmN0aW9uIGQoKXtpZih0Lm1lc3NhZ2Upe3ZhciBlPXQubWVzc2FnZTtFLmVzY2FwZUh0bWwmJihlPW8odC5tZXNzYWdlKSksQi5hcHBlbmQoZSkuYWRkQ2xhc3MoRS5tZXNzYWdlQ2xhc3MpLEkuYXBwZW5kKEIpfX1mdW5jdGlvbiBwKCl7RS5jbG9zZUJ1dHRvbiYmKGouYWRkQ2xhc3MoRS5jbG9zZUNsYXNzKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksSS5wcmVwZW5kKGopKX1mdW5jdGlvbiBnKCl7RS5wcm9ncmVzc0JhciYmKHEuYWRkQ2xhc3MoRS5wcm9ncmVzc0NsYXNzKSxJLnByZXBlbmQocSkpfWZ1bmN0aW9uIEMoKXtFLnJ0bCYmSS5hZGRDbGFzcygicnRsIil9ZnVuY3Rpb24gTyhlLHQpe2lmKGUucHJldmVudER1cGxpY2F0ZXMpe2lmKHQubWVzc2FnZT09PXcpcmV0dXJuITA7dz10Lm1lc3NhZ2V9cmV0dXJuITF9ZnVuY3Rpb24gYih0KXt2YXIgbj10JiZFLmNsb3NlTWV0aG9kIT09ITE/RS5jbG9zZU1ldGhvZDpFLmhpZGVNZXRob2Qsbz10JiZFLmNsb3NlRHVyYXRpb24hPT0hMT9FLmNsb3NlRHVyYXRpb246RS5oaWRlRHVyYXRpb24scz10JiZFLmNsb3NlRWFzaW5nIT09ITE/RS5jbG9zZUVhc2luZzpFLmhpZGVFYXNpbmc7aWYoIWUoIjpmb2N1cyIsSSkubGVuZ3RofHx0KXJldHVybiBjbGVhclRpbWVvdXQoRi5pbnRlcnZhbElkKSxJW25dKHtkdXJhdGlvbjpvLGVhc2luZzpzLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aChJKSxjbGVhclRpbWVvdXQoayksRS5vbkhpZGRlbiYmImhpZGRlbiIhPT1QLnN0YXRlJiZFLm9uSGlkZGVuKCksUC5zdGF0ZT0iaGlkZGVuIixQLmVuZFRpbWU9bmV3IERhdGUsZihQKX19KX1mdW5jdGlvbiBEKCl7KEUudGltZU91dD4wfHxFLmV4dGVuZGVkVGltZU91dD4wKSYmKGs9c2V0VGltZW91dChiLEUuZXh0ZW5kZWRUaW1lT3V0KSxGLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoRS5leHRlbmRlZFRpbWVPdXQpLEYuaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStGLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBIKCl7Y2xlYXJUaW1lb3V0KGspLEYuaGlkZUV0YT0wLEkuc3RvcCghMCwhMClbRS5zaG93TWV0aG9kXSh7ZHVyYXRpb246RS5zaG93RHVyYXRpb24sZWFzaW5nOkUuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIHgoKXt2YXIgZT0oRi5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9GLm1heEhpZGVUaW1lKjEwMDtxLndpZHRoKGUrIiUiKX12YXIgRT1tKCkseT10Lmljb25DbGFzc3x8RS5pY29uQ2xhc3M7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0Lm9wdGlvbnNPdmVycmlkZSYmKEU9ZS5leHRlbmQoRSx0Lm9wdGlvbnNPdmVycmlkZSkseT10Lm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHkpLCFPKEUsdCkpe1QrKyx2PW4oRSwhMCk7dmFyIGs9bnVsbCxJPWUoIjxkaXYvPiIpLE09ZSgiPGRpdi8+IiksQj1lKCI8ZGl2Lz4iKSxxPWUoIjxkaXYvPiIpLGo9ZShFLmNsb3NlSHRtbCksRj17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxQPXt0b2FzdElkOlQsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOkUsbWFwOnR9O3JldHVybiBzKCkscigpLGEoKSxmKFApLEUuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFApLEl9fWZ1bmN0aW9uIG0oKXtyZXR1cm4gZS5leHRlbmQoe30scCgpLGIub3B0aW9ucyl9ZnVuY3Rpb24gaChlKXt2fHwodj1uKCkpLGUuaXMoIjp2aXNpYmxlIil8fChlLnJlbW92ZSgpLGU9bnVsbCwwPT09di5jaGlsZHJlbigpLmxlbmd0aCYmKHYucmVtb3ZlKCksdz12b2lkIDApKX12YXIgdixDLHcsVD0wLE89e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGI9e2NsZWFyOnIscmVtb3ZlOmMsZXJyb3I6dCxnZXRDb250YWluZXI6bixpbmZvOm8sb3B0aW9uczp7fSxzdWJzY3JpYmU6cyxzdWNjZXNzOmksdmVyc2lvbjoiMi4xLjQiLHdhcm5pbmc6YX07cmV0dXJuIGJ9KCl9KX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj10KHdpbmRvdy5qUXVlcnkpfSk7CgokKGZ1bmN0aW9uICgpIHsKdG9hc3RyLm9wdGlvbnMgPSB7CiAgImNsb3NlQnV0dG9uIjogZmFsc2UsCiAgImRlYnVnIjogZmFsc2UsCiAgIm5ld2VzdE9uVG9wIjogZmFsc2UsCiAgInByb2dyZXNzQmFyIjogdHJ1ZSwKICAicG9zaXRpb25DbGFzcyI6ICJ0b2FzdC1ib3R0b20tZnVsbC13aWR0aCIsCiAgInByZXZlbnREdXBsaWNhdGVzIjogZmFsc2UsCiAgIm9uY2xpY2siOiBudWxsLAogICJzaG93RHVyYXRpb24iOiAiMzAwIiwKICAiaGlkZUR1cmF0aW9uIjogIjEwMDAiLAogICJ0aW1lT3V0IjogIjYwMDAiLAogICJleHRlbmRlZFRpbWVPdXQiOiAiMTAwMCIsCiAgInNob3dFYXNpbmciOiAic3dpbmciLAogICJoaWRlRWFzaW5nIjogImxpbmVhciIsCiAgInNob3dNZXRob2QiOiAiZmFkZUluIiwKICAiaGlkZU1ldGhvZCI6ICJmYWRlT3V0Igp9OwoKbGV0IHZpc2libGVNZXNzYWdlID0gJCgiLnRvYXN0LXN1Y2Nlc3MiKS5odG1sKCk7CmlmICh2aXNpYmxlTWVzc2FnZSAmJiB2aXNpYmxlTWVzc2FnZS5sZW5ndGggPiAwKSB7CiAgdG9hc3RyLnN1Y2Nlc3ModmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICBjb250YWluZXJJZDogInRvYXN0LWNvbnRhaW5lciIsCiAgfSk7Cn0KCmxldCBpbnZpc2libGVNZXNzYWdlID0gJCgiLnRvYXN0LXdhcm5pbmciKS5odG1sKCk7CmlmIChpbnZpc2libGVNZXNzYWdlICYmIGludmlzaWJsZU1lc3NhZ2UubGVuZ3RoID4gMCkgewogIHRvYXN0ci53YXJuaW5nKGludmlzaWJsZU1lc3NhZ2UsICIiLCB7CiAgICBjb250YWluZXJJZDogInRvYXN0LWNvbnRhaW5lciIKICB9KTsKfQp9KTsoalF1ZXJ5LCBfKTs=SideNote ConfigureSideNote EnableGroup VisibilitySelect which groups can see the SideNoteMembers Can Dismiss SideNote Notification?When enabled, members can click to dismiss the SideNote only after opening the modalExclude GuestsWhen enabled, guests will not be able to dismiss the SideNoteModal SizeNarrowMediumLargeWideFullscreenPage PreferencesPage List URLsThe list uses string matching, you can enter partial URLs to select groups of pages.
Example: Enter forums to effect all forum pages.
Enter /downloads/category/1-projects/ toeffect a downlaods category pages]]>
WhitelistBlacklistPage List TypeAdmin NotificationsPage Address NotificationsShow NotificationsWhen enabled the groups selected below will see a toastr notification with page address and status of SideNote visibility. This should only be used for admins who have access to change settingsNotification GroupsOnly groups with staff status and ACP access should be able to see these notifications. Preferably Admins onlyCurrent page addressSideNote will display on this pageSideNote will not display on this pageBeta 1.0.3]]>Toastr WidthToastr Width in Percentage, default is100% Toatr PositionTop RightBottom RightBottom LeftTop LeftTop Full WidthBottom Full WidthBottom CenterTop CenterSideNote ContentMain TitleSimple and short title for your side note modal.Side Note Icon Hover TextShort description of no more than a sentence that will appear on hover over iconFull SideNote ContentFull description and details on the side note contentStart DateEnd DateSideNote InfoBoxEnable Info Box?Info Box will show a small box above the main content with text info and time stampsInfo Box Background ColorFontAwesome iconFontAwesome]]>FontAwesome Icon Size in PixelsInfo Box Text (optional)Descriptive text, keep it short for best displayingShow the Start and End TimesSideNote CustomizeSideNote BarSideNote TabAdditional InformationAdd additional details and information that will show in a containerFontAwesome SideNote Tab IconFontAwesome]]>Side Note Bar Background ColorSide Note Bar Stripe ColorSide Note Bar Solid ColorSide Note Bar Width in PixelsFontAwesome Icon Size in PixelsFontAwesome Hover ColorFontAwesome ColorIcon AnimationNoneSpinningBlinkingPulsingClick to Dismiss this NotificationHide the Side Bar?When enabled, the side bar will not show only the tabSide Bar StyleStripedSolidImageImage URLIE barbackground.png or with a sub folder IE sidenote/barbackground.png.]]>Tab Background ColorWindow SpacingBy default the tab is positioned at bottom and 10px off bottom but you can move it for better visibility or if its blocking a element on the page. Number is in pixels and will effect top and bottom positioning respectivelyTab WidthTab HeightTab RadiusIn pixels the rounded corers of the tab, higher the number more pronounced the roundness, 0 is square no rounded cornersTab PositionPage BottomPage Top