Content-Type: multipart/related; start=; boundary=----------lklIDkRqA33x7wS7VvfJGW Content-Location: http://acer--uk.custhelp.com/app/answers/detail/a_id/3009/~/hotkeys-and-key-combinations-on-aspire-one-netbooks Subject: =?utf-8?Q?Hotkeys=20And=20Key=20Combinations=20On=20Aspire=20One=20Netbooks?= MIME-Version: 1.0 ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=hotkeys-and-key-combinations-on-aspire-one-netbooks.htm Content-Type: text/html; charset=UTF-8; name=hotkeys-and-key-combinations-on-aspire-one-netbooks.htm Content-ID: Content-Location: http://acer--uk.custhelp.com/app/answers/detail/a_id/3009/~/hotkeys-and-key-combinations-on-aspire-one-netbooks Content-Transfer-Encoding: Quoted-Printable Hotkeys And Key Combinations On Aspire One Netbooks = =
Empowering people
= =

Not registered yet?

  • Allow us to serve you better by e= nabling a faster line of communication.
  • Get notifications when information y= ou care about is updated.
  • Customise your support interests.

Don't have an account?
Sign up today!
=
Document ID: 3009
3D""/ Print
3D""/ Notify Me

Not registered yet?

  • Allow us to serve you better by e= nabling a faster line of communication.
  • Get notifications when information y= ou care about is updated.
  • Customise your support interests.

Don't have an account?
Sign up today!

Hotkeys And Key Combinations On Aspire One Net= books

How do I use the hotkeys and key co= mbinations on my Aspire One?

The computer uses hotkeys or key combinations to access most = of the computer's controls like screen brightness and volume output. To = use a hotkey to perform a specific function, press and hold down the Fn = key, press the system key with the desired image on it, and then release= both keys. To cancel the function, repeat the sequence.

 

For Aspire One models: AOA-150, AOD-110, AOD-150, AO531h:

Hotkey Icon Function Description
Fn + F1 3D"Icon" Hot key help Displays the hot key help file.
Fn + F2 3D"Icon" System Properties Launch System Properties.
Fn + F3 3D"Icon" Power Options Launch Power Options.

 

For Aspire One models: AO751h:

Hotkey Icon Function Description
Fn + F1 3D"Icon" Power Options Launch Power Options.
Fn + F2 3D"Icon" System Properties Launch System Properties.
Fn + F3 3D"Icon" Bluetooth toggle Enables or disables the Bluetooth functionality, if equipped.

 

All Aspire One models:

Hotkey Icon Function Description
Fn + F4 3D"Icon" Sleep Puts the computer in Sleep mode.
Fn + F5 3D"Icon" Display toggle Switches display output between the display screen, external monitor= (if connected) and both.
Fn + F6 3D"Icon" Screen blank Switches off the display backlight. Press any key to enable the back= light again.
Fn + F7 3D"Icon" Touchpad toggle Turns the internal touchpad on and off.
Fn + F8 3D"Icon" Speaker toggle Turns the speakers on and off.
Fn + F11 Num Lk Num Lock Enable or disable the Number Lock function.
Fn + F12 Scr Lk Scoll Lock Enable or disable the Scroll Lock function.
Fn + Right Arrow 3D"Icon" Brightness up Increases the screen brightness.
Fn + Left Arrow 3D"Icon" Brightness down Decreases the screen brightness.
Fn + Up Arrow 3D"Icon" Volume up Increases the sound volume.
Fn + Down Arrow 3D"Icon" Volume down Decreases the sound volume.

 

Note: Bluetooth toggle will only function if the netbook is eq= uipped with an internal Bluetooth adapter.

=
Was this answer helpful?
=
Please tell us how we can make = this answer more useful.

=
Copyright© 2010 Acer Inc. All Rights Reser= ved | = Privacy
=
= = = ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=standard1316468885.themes.standard.SITE.css Content-Type: text/css; charset=utf-8; name=standard1316468885.themes.standard.SITE.css Content-Location: http://acer--uk.custhelp.com/euf/rightnow/optimized/templates/standard1316468885.themes.standard.SITE.css Content-Transfer-Encoding: 8bit @charset "utf-8";body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, textarea, p, blockquote, th, td{margin: 0px;padding: 0px;} body{background: #fff none;font-family: 'Verdana', 'Arial', 'Garamond', sans-serif;text-align: left;font-size: 12px;color: #000;} h1, h2, h3, h4, h5, h6{font-size: 100%;font-weight: bold;} h1{line-height: 1.8em;font-size: 2.083em;} h2{line-height: 1.4em;font-size: 1.333em;} h3{line-height: 1.3em;font-size: 1.167em;} h4{line-height: 1.3em;font-size: 1em;} h5{line-height: 1em;font-size: 0.917em;} h6{line-height: 0.8em;font-size: 0.833em;} a{text-decoration: none;} a:link, a:visited, a:focus, a:active, a:hover{text-decoration: underline;} a:hover, a:hover *{cursor: pointer;} ul, ol, li, dl, dt, dd{list-style: none;} p{margin-bottom: 1em;line-height: 1.4em;} hr{margin: 10px 0px;} strong{font-weight: bolder;} blockquote{margin: 1em 3em;} q:before, q:after{content: '';} address, caption, cite, code, dfn, th, var{font-style: normal;font-weight: normal;} abbr, acronym{border: none;font-variant: normal;} sup{vertical-align: text-top;} sub{vertical-align: text-bottom;} table{border-collapse: collapse;border-spacing: 0px;} caption, th{text-align: left;} img, iframe, fieldset{border: none;} input, textarea, select, legend{margin: 0px;padding: 2px;font-family: inherit;font-size: inherit;font-weight: inherit;} legend{color: #000;} body{background: #fff none;font-family: 'Helvetica', 'Arial', sans-serif;text-align: left;font-size: 12px;color: #000;} html[lang="ja-JP"] body, html[lang="ja-JP"] input, html[lang="ja-JP"] select, html[lang="ja-JP"] textarea, html:lang(ja-JP) body, html:lang(ja-JP) input, html:lang(ja-JP) select, html:lang(ja-JP) textarea{font-family: 'Hiragino Kaku Gothic Pro', 'ヒラギノ角ゴ Pro W3', 'Meiryo', 'メイリオ', 'MS PGothic', 'MS Pゴシック', 'Helvetica', 'Arial', sans-serif;} h1, h2, h3, h4, h5, h6{font-family: 'Helvetica', 'Arial', sans-serif;font-weight: bold;} h1{font-weight: normal;} h3{color: #2F2F2F;} h4{color: #404040;} h5{color: #505050;} h6{color: #505050;} a{text-decoration: none;color: #555;} a:link{color: #00C;} a:visited{color: #3C0D68;} a:hover *{cursor: pointer;} blockquote{margin: 10px 30px;} table{border-collapse: separate;border-spacing: 0.3em;} caption{text-align: left;line-height: 1.3em;font-size: 1em;font-weight: bold;color: #404040;} fieldset{padding-left: 8px;} legend{padding: 0px;visibility: hidden;font-size: 0px;} fieldset legend{visibility: visible;font-size: 1em;color: #000;} input, textarea, select{border: 1px solid #B1B1B1;font-family: 'Verdana', 'Arial', 'Garamond', sans-serif;} input[type="text"], input[type="password"]{height: 18px;} input[type="radio"], input[type="checkbox"]{border: none;} input[type="text"]:focus, input[type="password"]:focus, textarea:focus, select:focus{background-color: #F8F8F8;border-color: #AAA;} input[type="submit"][disabled], input[type="reset"][disabled], input[type="button"][disabled], button[disabled]{background-color:#304764;background-position: 0px -40px;border-color: #333;color: #DDD;} input[type="submit"], input[type="reset"], input[type="button"], button{margin-right: 6px;border: 1px outset #304764;-moz-border-radius: 4px;-moz-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.5);-webkit-border-radius: 4px;-webkit-box-shadow: 0px 1px 3px rgba(0,0,0,0.5);padding: 6px 8px;*width: auto;*overflow: visible;background: #0E53A7 url('/euf/rightnow/optimized/1316468885/themes/standard/images/buttonGradientCombo.png') repeat-x 0px 0px;font-family: 'Helvetica', 'Arial', sans-serif;font-size: 12px;line-height: normal;text-decoration: none;text-shadow: 2px 2px 2px rgba(0, 0, 0, 0.25);font-weight: bold;color: #fefefe;cursor: pointer;} input[type="submit"]:focus, input[type="submit"]:hover, input[type="reset"]:focus, input[type="reset"]:hover, input[type="button"]:focus, input[type="button"]:hover, button:focus, button:hover{background-position: 0px -40px;border-color: #46494D;cursor: pointer;} input[type="submit"]:focus, button:focus{outline :#000 dotted 1px\9} #rn_Container{margin: 0px auto;overflow: visible;text-align: left;} #rn_Logo{position: relative;float: left;margin-top: 4px;width: 32%;height: 70px;font-family: 'Lucida Sans Unicode', 'Lucida Grande', 'Garuda', sans-serif;letter-spacing: -0.8px;cursor: pointer;} #rn_Logo a{left: 0px;bottom: 0px;text-decoration: none;line-height: 1em;font-weight: normal;font-size: 2.083em;color: #FFF;cursor: pointer;} #rn_Logo a span.rn_LogoTitle{position: relative;top: 20px;cursor: pointer;} #rn_Logo a span.rn_LogoTitleMinor{color: #DEDEDE;} #rn_Logo a img{display: block;} #rn_LoginStatus{text-align: right;font-size: 0.917em;} #rn_LoginStatus a{text-decoration: none;font-weight: bold;} #rn_Navigation{padding: 3px 10px 0px 0px;height: 31px;_height: 28px;background: transparent none;} #rn_NavigationBar{float: left;height: 14px;} #rn_NavigationBar ul li{float: left;} #rn_Footer, #rn_Body{border-right: 1px solid #DDD;border-left: 1px solid #DDD;-moz-box-shadow: 3px 3px 3px #888;-webkit-box-shadow: 3px 3px 3px #888;padding: 0px 0px 20px 10px;background: #FFF;text-align: left;} #rn_MainColumn{height: auto;min-height: auto;overflow: visible;background: #FFF;} #rn_SideBar{float: right;margin-right: 12px;width: 23%;} #rn_RightNowCredit{clear: both;margin: auto 20px;border-top: 1px solid #DDD;padding: 10px 0px;text-align: right;} fieldset legend{color:#000;} a:link{text-decoration: underline;color: #00c;} a:visited{text-decoration: underline;color: #c0c;} a:focus, a:active, a:hover{text-decoration: underline;color: #c00;} #rn_SideBar .rn_Padding{padding: 16px 4px 2px 10px;overflow: auto;} .rn_HelpResources{margin: 0px 4px 10px 4px;} .rn_HelpResources .rn_Questions, .rn_HelpResources .rn_Community, .rn_HelpResources .rn_Contact, .rn_HelpResources .rn_Chat, .rn_HelpResources .rn_Feedback{margin-top: 10px;} .rn_HelpResources a{display: block;padding: 10px 0px 0px 40px;height: 22px;min-height:22px;*height: auto;background: url('/euf/rightnow/optimized/1316468885/themes/standard/images/layout/contactDiscs.png') no-repeat 0px 0px;text-decoration: none;font-size: 1.25em;font-weight: bold;color: #464646;} .rn_HelpResources a:hover{text-decoration: underline;} .rn_HelpResources span{display: block;margin: 0px 0px 0px 44px;} .rn_HelpResources .rn_Questions a{background-position: 0px -4px;} .rn_HelpResources .rn_Contact a{background-position: 0px -48px;} .rn_HelpResources .rn_Chat a{background-position: 0px -96px;} .rn_HelpResources .rn_Feedback a{background-position: 0px -140px;} .rn_HelpResources .rn_Community a{background-position: 0px -184px;} #rn_SearchControls{display: inline-block;} #rn_SearchControls{display: block;padding: 0px 0px 0px 12px;overflow: visible;} #rn_SearchControls form fieldset{padding: 0px 0px 6px 0px;_margin-bottom:20px;} #rn_SearchControls form input[type="submit"], #rn_SearchControls form input[type="image"]{margin: 1.3em 0px 0px 1.3em;padding: 0.4em 1em;} #rn_SearchControls input{_margin:1.3em 0 0 1.3em;_padding:.4em 1em;} #rn_SearchControls .rn_SearchInput{position: relative;float: left;width: 50%;} #rn_SearchControls .rn_SearchInput a{display: block;float: right;margin-right: -8px;text-decoration: none;font-size: 0.917em;color:#FFFF00;} #rn_SearchControls .rn_SearchInput label{position: absolute;bottom: 0px;} #rn_SearchControls .rn_SearchInput input{_margin: 0px;padding: 4px 4px 3px;width: 100%;height: 1.3em;font-weight: bold;} #rn_PageTitle{border-bottom: 1px solid #E2E2E0;padding: 16px 0px 0px;overflow: hidden;color: #25383C;} #rn_PageTitle.rn_Home, #rn_PageTitle.rn_QuestionList, #rn_PageTitle.rn_AnswerList{border-bottom: 0px;overflow: visible;} #rn_PageTitle.rn_Home{margin-bottom: 10px;} #rn_PageContent{clear: both;} #rn_PageContent form h2, .rn_HeadingBar{clear: both;margin: 20px 0px 10px 0px;border: 1px solid #CCC;padding: 4px;background: #F9F9F9 none;letter-spacing: -0.03em;color: #414142;} form .rn_Column{margin-bottom: 10px;} .rn_HintBox{border: 1px solid #DBDBDB;-webkit-border-top-right-radius: 10px;-webkit-border-bottom-right-radius: 10px;-moz-border-radius-bottomright: 10px;-moz-border-radius-topright: 10px;padding: 4px 16px 2px;background-color: #F2F2F2;color: #222;opacity: 0.7;} .rn_Required, .rn_ErrorLabel{color: #C10000;} .rn_ErrorField{background-color: #FEFDA0 !important;} .rn_MessageBox{margin: 10px 0px;border: 1px solid #808080;padding: 6px;background-color: #FFFFE0;color: #900;font-size:13px;} .rn_ErrorMessage{padding: 8px 6px 8px 40px !important;background: #FFFFE0 url('/euf/rightnow/optimized/1316468885/themes/standard/images/layout/important.png') no-repeat 0px 0px;} .rn_ErrorMessage a{color: #900;} .rn_InfoMessage{padding: 6px 6px 11px 40px !important;background: #FFFFE0 url('/euf/rightnow/optimized/1316468885/themes/standard/images/layout/info.png') no-repeat 0px 0px;} .rn_Dialog{overflow: visible;} .rn_Dialog ol, .rn_Dialog ul{padding: 0.4em 0px 0px 1.8em;} .rn_Dialog ol li{list-style: decimal outside none;} .rn_Dialog ul li{list-style: disc outside none;} .rn_Module{clear: both;margin-bottom: 12px;border: 1px solid #CCC;overflow: hidden;background: #F7F7F7 none;padding-bottom: 8px;} .rn_Module h3, .rn_Module h2{margin-bottom: 8px;border-bottom: 1px solid #CCC;padding: 4px;background: #EBEFF5 url('/euf/rightnow/optimized/1316468885/themes/standard/images/layout/whitePixel.png') repeat-x scroll 0px 0px;font-family: 'Lucida Sans Unicode', 'Lucida Grande', 'Garuda', sans-serif;font-weight: normal;} .rn_Module button{margin:4px;} .rn_FloatRight{float: right;} .rn_FloatLeft{float: left;} .rn_Padding{display: inline-block;} .rn_Padding{display: block;padding: 10px;overflow: auto;} .rn_ClearBoth{clear: both;} .rn_Hidden{display: none;} .rn_Highlight{text-decoration: inherit;font-style: normal;font-weight: bold;} .rn_ColumnContainer{display: inline-block;} .rn_ColumnContainer{display: block;overflow: auto;} .rn_Column{width: 48%;} .rn_LeftColumn{float: left;padding: 0px 4px 0px 0px;} .rn_RightColumn{float: right;padding: 0px 0px 0px 4px;} #rn_Summary{padding: 7px 0px 0px 0px;line-height: 1em;letter-spacing: -0.01em;} #rn_AnswerInfo{margin: 6px 0px 20px 0px;color: #888;} #rn_AnswerInfo div{display: inline;} #rn_AnswerText{clear: both;padding: 5px 0px 15px 0px;line-height: 1.4em;} #rn_FileAttach{padding-bottom: 1em;} .rn_QuestionDetail ol, .rn_QuestionDetail ul, .rn_AnswerDetail ol, .rn_AnswerDetail ul{clear: both;margin-bottom: 1em;padding-left: 2em;} .rn_QuestionDetail li, .rn_AnswerDetail li{margin: 4px;line-height: 1.4em;} .rn_QuestionDetail ol ol, .rn_QuestionDetail ol ul, .rn_QuestionDetail ul ol, .rn_QuestionDetail ul ul, .rn_AnswerDetail ol ol, .rn_AnswerDetail ol ul, .rn_AnswerDetail ul ol, .rn_AnswerDetail ul ul{margin-bottom: 0px;} .rn_QuestionDetail ol li, .rn_QuestionDetail ul li ol li, .rn_AnswerDetail ol li, .rn_AnswerDetail ul li ol li{list-style: decimal outside;} .rn_QuestionDetail ol li ol li, .rn_AnswerDetail ol li ol li{list-style: lower-alpha outside;} .rn_QuestionDetail ul li, .rn_AnswerDetail ul li{list-style: disc outside;} .rn_QuestionDetail ul li ul li, .rn_QuestionDetail ol li ul li, .rn_AnswerDetail ul li ul li, .rn_AnswerDetail ol li ul li{list-style: circle outside;} #rn_UpdateQuestion textarea{width: 98%;margin-top:4px;} #rn_QuestionThread{margin: 4px;} #rn_AdditionalInfo, #rn_DetailTools{border: 1px solid #BBB;background: #EEE url('/euf/rightnow/optimized/1316468885/themes/standard/images/layout/whitePixel.png') repeat-x 0px 0px;} #rn_AdditionalInfo{margin: 1em;padding: 12px;width: 560px;overflow: hidden;} #rn_DetailTools{margin-top: 2em;padding: 8px 0px;line-height: 1em;text-align: right;} #rn_PageContent.rn_Home ol{display: inline;} #rn_PageContent.rn_Home ol{display: block;overflow: hidden;} #rn_PageContent.rn_Home ol li{float: left;margin: 0px;padding: 0px;width: 48%;} #rn_PageContent.rn_Home ol li img{display:none;} #rn_PageContent.rn_Home ol li a{font-size: 0.8em;} #rn_PageContent.rn_Home .rn_AnswersLink{display: inline-block;margin: 10px 0px 10px 16px;font-size: 120%;font-weight: bold;} .rn_Overview{padding: 12px 10px 2px;} .rn_Overview h2{margin-top: 10px;border: 1px solid #DDD;background-color: #F9F9F9;} .rn_Overview h2 a, .rn_Overview h2 b{display: block;margin: 4px;padding: 8px 0px 0px 40px;height: 26px;background: url('/euf/rightnow/optimized/1316468885/themes/standard/images/layout/accountOverview.png') no-repeat 0px 0px;outline: none;text-decoration: none;color: #505050;} .rn_Overview a:focus, .rn_Overview a:hover{text-decoration: underline;} .rn_Overview a.rn_Questions{background-position: 0px 2px;} .rn_Overview a.rn_Profile{background-position: 2px -38px;} .rn_Overview a.rn_Notifs{background-position: 0px -74px;} .rn_Overview b.rn_Contracts{background-position: 0px -114px;} .rn_Overview div.rn_Questions, .rn_Overview div.rn_Notifs, .rn_Overview div.rn_Profile, .rn_Overview div.rn_Contracts{margin: 10px 0px 40px 40px;} .rn_QuestionList caption{line-height: 1.4em;font-size: 1.333em;font-weight: bold;} .rn_CreateAccountInfo{border: 1px solid #ECECEC;padding: 8px;background: #FAF9F5 none;color: #454545;} .rn_CreateAccountInfo h2{text-align: center;} .rn_CreateAccountInfo button{display: block;margin: auto;width: 60%;} .rn_CreateAccountInfo ul{margin-top: 10px;} .rn_CreateAccountInfo li{margin: 4px 0px 16px;padding: 4px 0px 4px 40px;height: 32px;background: url('/euf/rightnow/optimized/1316468885/themes/standard/images/layout/createAccount.png') no-repeat 0px 0px;list-style-type: none;} .rn_CreateAccountInfo li.rn_Communicate{background-position: 0px 0px;} .rn_CreateAccountInfo li.rn_Feedback{background-position: 0px -46px;} .rn_CreateAccountInfo li.rn_Customize{background-position: 0px -96px;} #rn_SkipNav{position: absolute;left: 0px;top: -500px;overflow: hidden;background-color: #FFF;} @media print{body{font-size: 1em;} #rn_ChatDialogHeaderContainer, #rn_InChatButtonContainer, #rn_PreChatButtonContainer, #rn_ChatQueueSearchContainer, #rn_ChatLogo{display: none;} #rn_ChatContainer{border: none;} #rn_Navigation, #rn_DetailTools{display: none;} .rn_AnswerDocId{float: none !important;} } #rn_ChatContainer{margin: 0px auto;height: 100%;overflow: visible;text-align: left;} #rn_ChatDialogContainer{position: relative;border: 1px solid #555;height: auto;_height:445px;min-height: 440px;overflow: hidden;_overflow-y: auto;background-color: #EBEFF5;} #rn_ChatDialogContainer[id="RN_CHATDIALOGCONTAINER"]{height: 445px;overflow-y: auto;} #rn_ChatDialogHeaderContainer{padding: 4px;height: 30px;overflow: visible;vertical-align: middle;} #rn_ChatDialogTitle{margin-top: 8px;} #rn_ChatDialogHeaderButtonContainer button{margin-right: 0.25em;border-color: transparent;-moz-box-shadow: 0px 0px 0px transparent;-webkit-box-shadow: 0px 0px 0px transparent;padding: 2px;background: transparent none;color: #555;} #rn_ChatDialogHeaderButtonContainer button:hover, #rn_ChatDialogHeaderButtonContainer button:focus{border-color: #CCC #555 #555 #CCC;background-color: #F8F8F8;color: #000;} #rn_InChatButtonContainer{overflow: visible;} #rn_PreChatButtonContainer{overflow: visible;} #rn_ChatQueueSearchContainer{position: absolute;bottom: 0px;width: 100%;} #rn_ChatLogo{position: absolute;right: 10px;top: 10px;width: 135px;height: 100px;} #rn_accountOverview_leftcol{display:inline-block;*display:inline;zoom:1;width:150px;vertical-align:top;} #rn_accountOverview_rightcol{display:inline-block;*display:inline;zoom:1;width:620px;vertical-align:top;margin-left:20px;} .rn_account_right{display:inline-block;*display:inline;zoom:1;width:700px;vertical-align:top;margin-left:20px;} #rn_profileLeftCol{width: 300px;display: inline-block;vertical-align: top;} #rn_profileRightCol{width: 300px;display: inline-block;vertical-align: top;} #rn_CreateAccount_left{width:400px;display:inline-block;zoom: 1;*display: inline;vertical-align:top;} #rn_CreateAccount_right{width:400px;display:inline-block;zoom: 1;*display: inline;vertical-align:top;} #rn_accountOverview_left_options{display:inline-block;*display:inline;zoom:1;width:300px;vertical-align:top;border-right:1px solid #CCCCCC;margin-right:5px;} #rn_accountOverview_right_options{display:inline-block;*display:inline;zoom:1;width:280px;vertical-align:top;margin-left:5px;} .yui-overlay,.yui-panel-container{visibility:hidden;position:absolute;z-index:2;} .yui-panel{position:relative;} .yui-panel-container form{margin:0;} .mask{z-index:1;display:none;position:absolute;top:0;left:0;right:0;bottom:0;} .mask.block-scrollbars{overflow:auto;} .masked select,.drag select,.hide-select select{_visibility:hidden;} .yui-panel-container select{_visibility:inherit;} .hide-scrollbars,.hide-scrollbars *{overflow:hidden;} .hide-scrollbars select{display:none;} .show-scrollbars{overflow:auto;} .yui-panel-container.show-scrollbars,.yui-tt.show-scrollbars{overflow:visible;} .yui-panel-container.show-scrollbars .underlay,.yui-tt.show-scrollbars .yui-tt-shadow{overflow:auto;} .yui-panel-container.shadow .underlay.yui-force-redraw{padding-bottom:1px;} .yui-effect-fade .underlay,.yui-effect-fade .yui-tt-shadow{display:none;} .yui-tt-shadow{position:absolute;} .yui-override-padding{padding:0!important;} .yui-panel-container .container-close{overflow:hidden;text-indent:-10000em;text-decoration:none;} .yui-overlay.yui-force-redraw,.yui-panel-container.yui-force-redraw{margin-bottom:1px;} .yui-skin-sam .mask{background-color:#000;opacity:.25;filter:alpha(opacity=25);} .yui-skin-sam .yui-panel-container{padding:0 1px;*padding:2px;} .yui-skin-sam .yui-panel{position:relative;left:0;top:0;border-style:solid;border-width:1px 0;border-color:#808080;z-index:1;*border-width:1px;*zoom:1;_zoom:normal;} .yui-skin-sam .yui-panel .hd,.yui-skin-sam .yui-panel .bd,.yui-skin-sam .yui-panel .ft{border-style:solid;border-width:0 1px;border-color:#808080;margin:0 -1px;*margin:0;*border:0;} .yui-skin-sam .yui-panel .hd{border-bottom:solid 1px #ccc;} .yui-skin-sam .yui-panel .bd,.yui-skin-sam .yui-panel .ft{background-color:#F2F2F2;} .yui-skin-sam .yui-panel .hd{padding:0 10px;font-size:93%;line-height:2;*line-height:1.9;font-weight:bold;color:#000;background:url(/rnt/rnw/yui_2.7/assets/skins/sam/sprite.png) repeat-x 0 -200px;} .yui-skin-sam .yui-panel .bd{padding:10px;} .yui-skin-sam .yui-panel .ft{border-top:solid 1px #808080;padding:5px 10px;font-size:77%;} .yui-skin-sam .container-close{position:absolute;top:5px;right:6px;width:25px;height:15px;background:url(/rnt/rnw/yui_2.7/assets/skins/sam/sprite.png) no-repeat 0 -300px;cursor:pointer;} .yui-skin-sam .yui-panel-container .underlay{right:-1px;left:-1px;} .yui-skin-sam .yui-panel-container.matte{padding:9px 10px;background-color:#fff;} .yui-skin-sam .yui-panel-container.shadow{_padding:2px 4px 0 2px;} .yui-skin-sam .yui-panel-container.shadow .underlay{position:absolute;top:2px;left:-3px;right:-3px;bottom:-3px;*top:4px;*left:-1px;*right:-1px;*bottom:-1px;_top:0;_left:0;_right:0;_bottom:0;_margin-top:3px;_margin-left:-1px;background-color:#000;opacity:.12;filter:alpha(opacity=12);} .yui-skin-sam .yui-dialog .ft{border-top:none;padding:0 10px 10px 10px;font-size:100%;} .yui-skin-sam .yui-dialog .ft .button-group{display:block;text-align:right;} .yui-skin-sam .yui-dialog .ft button.default{font-weight:bold;} .yui-skin-sam .yui-dialog .ft span.default{border-color:#304369;background-position:0 -1400px;} .yui-skin-sam .yui-dialog .ft span.default .first-child{border-color:#304369;} .yui-skin-sam .yui-dialog .ft span.default button{color:#fff;} .yui-skin-sam .yui-dialog .ft span.yui-button-disabled{background-position:0 -1500px;border-color:#ccc;} .yui-skin-sam .yui-dialog .ft span.yui-button-disabled .first-child{border-color:#ccc;} .yui-skin-sam .yui-dialog .ft span.yui-button-disabled button{color:#a6a6a6;} .yui-skin-sam .yui-simple-dialog .bd .yui-icon{background:url(/rnt/rnw/yui_2.7/assets/skins/sam/sprite.png) no-repeat 0 0;width:16px;height:16px;margin-right:10px;float:left;} .yui-skin-sam .yui-simple-dialog .bd span.blckicon{background-position:0 -1100px;} .yui-skin-sam .yui-simple-dialog .bd span.alrticon{background-position:0 -1050px;} .yui-skin-sam .yui-simple-dialog .bd span.hlpicon{background-position:0 -1150px;} .yui-skin-sam .yui-simple-dialog .bd span.infoicon{background-position:0 -1200px;} .yui-skin-sam .yui-simple-dialog .bd span.warnicon{background-position:0 -1900px;} .yui-skin-sam .yui-simple-dialog .bd span.tipicon{background-position:0 -1250px;} .yui-skin-sam .yui-tt .bd{position:relative;top:0;left:0;z-index:1;color:#000;padding:2px 5px;border-color:#D4C237 #A6982B #A6982B #A6982B;border-width:1px;border-style:solid;background-color:#FFEE69;} .yui-skin-sam .yui-tt.show-scrollbars .bd{overflow:auto;} .yui-skin-sam .yui-tt-shadow{top:2px;right:-3px;left:-3px;bottom:-3px;background-color:#000;} .yui-skin-sam .yui-tt-shadow-visible{opacity:.12;filter:alpha(opacity=12);} ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=standard1316468885.themes.standard.css Content-Type: text/css; charset=UTF-8; name=standard1316468885.themes.standard.css Content-Location: http://acer--uk.custhelp.com/euf/rightnow/optimized/templates/standard1316468885.themes.standard.css Content-Transfer-Encoding: 8bit .rn_LoginDialog2{width: 710px;height: 120px;text-align: left;} .rn_LoginDialog2.rn_ContentLoading{background:url(/euf/rightnow/optimized/1316468885/themes/standard/images/loading.gif) no-repeat center center;} .rn_LoginDialog2 input{margin-bottom:5px;} .rn_LoginDialog2 input[type="text"], .rn_LoginDialog2 input[type="password"]{width:200px;} .rn_LoginDialog2 label{margin-bottom:5px;display:block;} .rn_LoginDialog2 div{margin-bottom: 5px;} .yui-skin-sam .yui-dialog .ft .button-group{display: block;text-align: left;} #rn_account_create{float: right;width: 320px;} .existing_account .rn_ErrorMessage a{text-decoration:none;} .rn_NavigationTab2{display:inline-block;} .rn_NavigationTab2 a{cursor:pointer;float:left;font-size:1em;font-weight:bold;height:20px;_height:18px;margin-right:4px;padding:5px 20px;position:relative;} .rn_NavigationTab2 .rn_DropDown{padding-right:28px;} .rn_NavigationTab2 a em{display:block;font-size:xx-small;height:18px;margin:3px 4px 0 0;position:absolute;right:0;top:0;width:20px;} .rn_NavigationTab2 .rn_SubNavigation{display:block;float:none;position:absolute;z-index:1;width:150px;} .rn_NavigationTab2 .rn_SubNavigation.rn_Hidden, .rn_NavigationTab2.rn_Hidden{display:none;} .rn_NavigationTab2 .rn_SubNavigation a{display:block;float:none;margin:0;padding:5px 0 0 10px;width:140px;} .rn_NavigationTab2 a{background:#EEEEEE url(/euf/rightnow/optimized/1316468885/themes/standard/images/tabBackground.png) repeat-x scroll 0 -22px;border-top:1px solid #FFF;color:#202020;text-decoration:none;margin-right:0px;} .rn_NavigationTab2 a:hover, .rn_NavigationTab2 a:focus{background-color: #F8F8F8;background-position:0 -18px;color:#000;} .rn_NavigationTab2 a:focus{outline:thin dotted #FFF;} .rn_NavigationTab2 a.rn_SelectedTab{background:#FFF none repeat scroll 0 0;color:#000;} .rn_NavigationTab2 a em{background:url(/euf/rightnow/optimized/1316468885/themes/standard/images/tabBackground.png) no-repeat 0 0;color:#000;font-size:0em;} .rn_NavigationTab2 a:hover em, .rn_NavigationTab2 a:focus em{background-position:-20px 0;} .rn_NavigationTab2 .rn_SubNavigation{background:#FFF none repeat scroll 0 0;border:1px solid #CCC;padding:10px 0 0;top:100px;} .rn_NavigationTab2 .rn_SubNavigation a{background:#FFF;border:none;color:#404040;height:auto !important;height:23px;margin-bottom:1px;min-height:23px;text-transform: none;} .rn_NavigationTab2 .rn_SubNavigation a:hover{background:#EEE;} .rn_NavigationTab2 .rn_SubNavigation a:focus{outline:thin dotted #777;} .rn_NavigationTab2 a{background:#EEEEEE url(/euf/rightnow/optimized/1316468885/themes/standard/images/tabBackground.png) repeat-x scroll 0 -22px;border-top:1px solid #FFF;color:#202020;text-decoration:none;margin-right:0px;} .rn_NavigationTab2 a:hover, .rn_NavigationTab2 a:focus{background-color: #F8F8F8;background-position:0 -18px;color:#000;} .rn_NavigationTab2 a:focus{outline:thin dotted #FFF;} .rn_NavigationTab2 a.rn_SelectedTab{background:#FFF none repeat scroll 0 0;color:#000;} .rn_NavigationTab2 a em{background:url(/euf/rightnow/optimized/1316468885/themes/standard/images/tabBackground.png) no-repeat 0 0;color:#000;font-size:0em;} .rn_NavigationTab2 a:hover em, .rn_NavigationTab2 a:focus em{background-position:-20px 0;} .rn_NavigationTab2 .rn_SubNavigation{background:#FFF none repeat scroll 0 0;border:1px solid #CCC;padding:10px 0 0;top:100px;} .rn_NavigationTab2 .rn_SubNavigation a{background:#FFF;border:none;color:#404040;height:auto !important;height:23px;margin-bottom:1px;min-height:23px;text-transform: none;} .rn_NavigationTab2 .rn_SubNavigation a:hover{background:#EEE;} .rn_NavigationTab2 .rn_SubNavigation a:focus{outline:thin dotted #777;} .rn_NavigationTab2{display:inline-block;} .rn_NavigationTab2 a{cursor:pointer;float:left;font-size:1em;font-weight:bold;height:20px;_height:18px;margin-right:4px;padding:5px 20px;position:relative;} .rn_NavigationTab2 .rn_DropDown{padding-right:28px;} .rn_NavigationTab2 a em{display:block;font-size:xx-small;height:18px;margin:3px 4px 0 0;position:absolute;right:0;top:0;width:20px;} .rn_NavigationTab2 .rn_SubNavigation{display:block;float:none;position:absolute;z-index:1;width:150px;} .rn_NavigationTab2 .rn_SubNavigation.rn_Hidden, .rn_NavigationTab2.rn_Hidden{display:none;} .rn_NavigationTab2 .rn_SubNavigation a{display:block;float:none;margin:0;padding:5px 0 0 10px;width:140px;} .rn_NavigationTab2 a{background:#EEEEEE url(/euf/rightnow/optimized/1316468885/themes/standard/images/tabBackground.png) repeat-x scroll 0 -22px;border-top:1px solid #FFF;color:#202020;text-decoration:none;margin-right:0px;} .rn_NavigationTab2 a:hover, .rn_NavigationTab2 a:focus{background-color: #F8F8F8;background-position:0 -18px;color:#000;} .rn_NavigationTab2 a:focus{outline:thin dotted #FFF;} .rn_NavigationTab2 a.rn_SelectedTab{background:#FFF none repeat scroll 0 0;color:#000;} .rn_NavigationTab2 a em{background:url(/euf/rightnow/optimized/1316468885/themes/standard/images/tabBackground.png) no-repeat 0 0;color:#000;font-size:0em;} .rn_NavigationTab2 a:hover em, .rn_NavigationTab2 a:focus em{background-position:-20px 0;} .rn_NavigationTab2 .rn_SubNavigation{background:#FFF none repeat scroll 0 0;border:1px solid #CCC;padding:10px 0 0;top:100px;} .rn_NavigationTab2 .rn_SubNavigation a{background:#FFF;border:none;color:#404040;height:auto !important;height:23px;margin-bottom:1px;min-height:23px;text-transform: none;} .rn_NavigationTab2 .rn_SubNavigation a:hover{background:#EEE;} .rn_NavigationTab2 .rn_SubNavigation a:focus{outline:thin dotted #777;} .rn_SimpleSearch{position:relative;} .rn_SimpleSearch .rn_SearchField{width:97%;} .rn_SimpleSearch .rn_SearchImage{border:none;padding:0;position:absolute;right:0.2em;top:0.46em;*right:0.28em;*top:0.6em;} .rn_SimpleSearch{margin:auto;max-width:400px;width:180px;} .rn_SimpleSearch form{background-color:#FFF;border:1px solid #B1B1B1;} .rn_SimpleSearch .rn_SearchField{border:0px none;color:#222;font-weight:bold;height:1.8em;max-width:200px;padding:4px 4px 0px;width:85%;} .yui-panel.rn_Dialog.rn_FeedbackDialog{width:375px;} .rn_SiteFeedback2Form label{clear:left;display:block;} .rn_SiteFeedback2Form .rn_EmailField{clear:left;display:block;margin-bottom:1em;width:200px;} .rn_SiteFeedback2Form .rn_Textarea{clear:left;display:block;margin-bottom:1em;width:340px;} .rn_RightNowLogo a{background:url(/euf/rightnow/images/RightNowLogo.png) no-repeat scroll 0 0 !important;display:block !important;height:22px !important;width:134px !important;} .rn_RightNowLogo a:focus, .rn_RightNowLogo a:hover{background-position:0 -22px !important;} ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=detail1316468885.themes.standard.css Content-Type: text/css; charset=UTF-8; name=detail1316468885.themes.standard.css Content-Location: http://acer--uk.custhelp.com/euf/rightnow/optimized/pages//answers/detail1316468885.themes.standard.css Content-Transfer-Encoding: 8bit .rn_link1{text-decoration:underline;margin-right:7px;margin-left:7px;} .rn_link2{margin-right:7px;margin-left:7px;} .rn_SocialBookmarkLink{display:inline;margin-right:10px;} .rn_SocialBookmarkLink img{vertical-align:middle;} .rn_SocialBookmarkLink .rn_Panel{overflow:hidden;_position:absolute;} .rn_SocialBookmarkLink ul{padding:0;margin:0;} .rn_SocialBookmarkLink ul li{display:inline;float:left;list-style-type:none;} .rn_SocialBookmarkLink a{color:#222;text-decoration:none;} .rn_SocialBookmarkLink a:hover{white-space:normal;} .rn_SocialBookmarkLink a:hover span{text-decoration:underline;} .rn_SocialBookmarkLink .rn_Panel{background-color:#FFF;padding:6px;} .rn_SocialBookmarkLink .rn_Panel .hd{border:none !important;} .rn_SocialBookmarkLink .rn_Panel li{background:url(/euf/rightnow/optimized/1316468885/themes/standard/images/icons/socialBookmark.png) no-repeat;height:16px;line-height:1.4em;margin:4px;padding-left:20px;} .rn_SocialBookmarkLink li.rn_Link1{background-position:0 0;} .rn_SocialBookmarkLink li.rn_Link2{background-position:0 -16px;} .rn_SocialBookmarkLink li.rn_Link3{background-position:0 -32px;} .rn_SocialBookmarkLink li.rn_Link4{background-position:0 -48px;} .rn_SocialBookmarkLink li.rn_Link5{background-position:0 -64px;} .rn_SocialBookmarkLink li.rn_Link6{background-position:0 -80px;} .rn_PrintPageLink{margin-right:10px;} .rn_PrintPageLink a img{border:none;vertical-align:middle;} .rn_PrintPageLink a{color:#222;text-decoration:underline;} .rn_PrintPageLink a:hover{white-space:normal;} .rn_PrintPageLink a:hover span{text-decoration:underline;} .rn_PrintPageLink a img{} .rn_EmailAnswerLink{display:inline;margin-right:10px;} .rn_EmailAnswerLink a img{cursor:pointer;vertical-align:middle;} .rn_EmailAnswerLink a{color:#222222;cursor:pointer;text-decoration:underline;} .rn_EmailAnswerLink a:hover{white-space:normal;} .rn_EmailAnswerLink a:hover span{cursor:pointer;text-decoration:underline;} .rn_EmailAnswerLinkForm label{clear:left;display:block;} .rn_EmailAnswerLinkForm input{clear:left;display:block;margin-bottom:1em;width:200px;} .rn_AnswerNotificationIcon3{display:inline;} .rn_AnswerNotificationIcon3 img{vertical-align:middle;} .rn_AnswerNotificationIcon3{margin-right:10px;} .rn_AnswerNotificationIcon3 a{color:#222;text-decoration:underline;} .rn_AnswerNotificationIcon3 a:hover{white-space:normal;} .rn_AnswerNotificationIcon3 a:hover span{text-decoration:underline;} .rn_AnswerNotificationIcon3 img{} .rn_IncidentThreadDisplay .rn_ThreadContent{word-wrap:break-word;} .rn_IncidentThreadDisplay .rn_ThreadHeader{background-color:#EEE;border: 1px solid #CCC;text-shadow: 0px 1px 1px #FFF;font-size:1.083em;font-weight:bold;padding:0.25em;position:relative;} .rn_IncidentThreadDisplay .rn_ThreadHeader .rn_ThreadTime{position:absolute;right:1em;} .rn_IncidentThreadDisplay .rn_ThreadHeader.rn_Customer{background-color:#CCC;} .rn_IncidentThreadDisplay .rn_ThreadContent{background-color:#FFF;border:1px solid #DDD;border-width:0 1px 1px;color:#404040;font-size:1em;margin-bottom:0px;overflow:hidden;padding:1em 10px;} .rn_ProductCategoryDisplay .rn_DataLabel{float:left;font-weight:bold;} .rn_ProductCategoryDisplay .rn_DataValue{margin-left:180px;} .rn_ProductCategoryDisplay .rn_DataValue ul{clear:none;} .rn_ProductCategoryDisplay .rn_DataValue.rn_LeftJustify{clear:left;margin-left:0;padding-bottom:.5em;} .rn_FileListDisplay .rn_DataLabel{float:left;font-weight:bold;} .rn_FileListDisplay .rn_DataValue{margin-left:180px;} .rn_FileListDisplay .rn_DataValue ul{clear:none;} .rn_FileListDisplay .rn_DataValue.rn_LeftJustify{clear:left;margin-left:0;padding-bottom:.5em;} .rn_FileListDisplay .rn_FileSize{font-style:italic;padding-left:4px;} .rn_FieldDisplay .rn_DataLabel{float:left;font-weight:bold;} .rn_FieldDisplay .rn_DataValue{margin-left:180px;word-wrap:break-word;} .rn_FieldDisplay .rn_DataValue.rn_LeftJustify{clear:left;margin-left:0;padding-bottom:.5em;} .rn_AnswerFeedback2 .rn_ThanksLabel{margin-left:3em;overflow:hidden;} .yui-panel.rn_Dialog.rn_FeedbackDialog{width:375px;} .rn_AnswerFeedback2 .rn_Title{border-bottom:1px solid #BBB;margin-bottom:10px;padding-bottom:2px;font-size:1.333em;font-weight:bold;line-height:1.4em;} .rn_AnswerFeedback2 .rn_RatingMeter a.rn_RatingCell{background:url(/euf/rightnow/optimized/1316468885/themes/standard/images/RatingStars.png) 0 0 no-repeat;display: -moz-inline-box;display: inline-block;height:18px;margin:4px 0;text-decoration:none;width:20px;} .rn_AnswerFeedback2 .rn_RatingMeter a.rn_RatingCellOver{background-position:0px -18px;cursor:pointer;} .rn_AnswerFeedback2Form .rn_DialogSubtitle{margin-bottom:6px;text-align:left;} .rn_AnswerFeedback2Form label{clear:left;display:block;} .rn_AnswerFeedback2Form .rn_EmailField{clear:left;display:block;margin-bottom:1em;width:200px;} .rn_AnswerFeedback2Form .rn_Textarea{clear:left;display:block;margin-bottom:1em;width:340px;} @media print{.rn_AnswerFeedback2{display:none;} } .rn_RelatedAnswers2{padding:10px 0;} .rn_RelatedAnswers2 h2{border-bottom:1px solid #BBB;margin-bottom:10px;padding-bottom:2px;} @media print{.rn_RelatedAnswers2{display:none;} } .rn_PreviousAnswers2{padding:10px 0;} .rn_PreviousAnswers2 h2{border-bottom:1px solid #BBB;margin-bottom:10px;padding-bottom:2px;} @media print{.rn_PreviousAnswers2{display:none;} } ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=favicon.ico Content-Type: image/x-icon; name=favicon.ico Content-Location: http://acer--uk.custhelp.com/euf/assets/favicon.ico Content-Transfer-Encoding: Base64 AAABAAEAEBAAAAEACABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAA AAAAAAAAAAEAAAABAAAAAAAARU0AAEdQAwBJUQYATVUNAFBYDwBQWBEAVFwVAFVe GABYYB0AW2MgAFtkIQBcZCIAYWkpAGVsLgBmbTAAanAzAGtyNgBtdDkAcnk/AHR7 QgB3fkYAc3hUAHV5VwB7gUsAfYNNAH+GUgB9gWEAg4lXAIWLWgCGjFoAjZB3AJid cwCip4IApKiDAKWnlgCuspIAs7eXALS4mgC8wKUAwMKpAMPGrgDFyLEAzM67AM/S vgDQ0sAA1dfGANze0ADf4dQA4ePXAOLj2ADl59wAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ACoZDAkNEiYAAAAAAAAAKwYBCSgAAAAoEiYAAAAAMgMBBgAAAAAAAAAmIQAAABkB ASQAAAAAAAAAAAAAAAAGAQExAAAAAAAAAAAAAAAACAIBMAAAAAAAAAAAAAAAABQB ASAAAAAAAAAAAAAAAAAuAQEEHRMPCAYMDR4oAAAAAA0CAjEAAAAAAC4cBAMiAAAA BgEQAAAAAAAAAAAGASAAAC8GARoAAAAAAAAAJwEEAAAAABABFAAAAAAAACwBDAAA AAAAJw0GJDIAAC4IDAAAAAAAAAAAAB8bFhYbIwAAAAAAAAAAAAAAAAAAAAAAAP// AADgPwAAg48AAA/nAAAP/wAAD/8AAA//AAAP/wAAAAcAAIfBAADH+AAAw/gAAPH4 AAD4MQAA/wMAAP//AAA= ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=upgrades.css Content-Type: text/css; charset=UTF-8; name=upgrades.css Content-Location: http://acer--uk.custhelp.com/euf/assets/themes/standard/upgrades.css Content-Transfer-Encoding: 8bit .yui-skin-sam .yui-panel .hd { background: none; background-color: #F2F2F2; border-bottom: none; font-size: 1.333em; } .yui-skin-sam .yui-panel .bd { padding: 20px; } ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline Content-Type: image/png Content-Location: http://acer--uk.custhelp.com/euf/assets/themes/standard/images/titleBackground.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABQAAAB4CAMAAADFYSIeAAAAAXNSR0IArs4c6QAA AARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAA OpgAABdwnLpRPAAAAwBQTFRFwMDAwcHBwsLCw8PDxMTExcXFxsbGx8fHyMjIycnJ ysrKy8vLzMzMzc3Nzs7Oz8/P0NDQ0dHR0tLS09PT1NTU1dXV1tbW19fX2NjY2dnZ 2tra29vb3Nzc3d3d3t7e39/f4ODg4eHh4uLi4+Pj5OTk5eXl5ubm5+fn6Ojo6enp 6urq6+vr7Ozs7e3t7u7u7+/v8PDw8fHx8vLy8/Pz9PT09fX19vb29/f3+Pj4+fn5 +vr6+/v7/Pz8/f39/v7+////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAArsZdoAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVU IHYzLjUuND6NzHYAAAD9SURBVEhLxcrXVsJQFAbhsRfEHnvvCoklKiio7/9WkhU8 CTlz73e11+yf7+AnoIrVxZfwOBRoHAg0fgo0fgj6wmNPoPFdoPFNoPFVkP+pPasY vnnOi/D4LND4JND4KNCYCdJIlklMU7rCY0eg8UGg8V6g8U6g8Vag8UZw3VBsolhs uBIeLwUaLwQazwVnhcajjA2cCo8nAo3HAo1HAo2HgoMJ5aIRywX7wuOeQOOuQOOO IEmSKBcx4nFboHFLsFk3HkzG8YAN4XFdoHFNoHFV0G7HdRRjrAiPLYHGZYHGJYHG RcFCJbzrMbyZFx7nBBpnBRpnBBqnBVPCI//pF4/4GmegrvoUAAAAAElFTkSuQmCC ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=acer.css Content-Type: text/css; charset=UTF-8; name=acer.css Content-Location: http://acer--uk.custhelp.com/euf/assets/themes/standard/acer/acer.css Content-Transfer-Encoding: 8bit /** * Global Style * * Index: * 01. Reset * 02. Font multiplier table * 03. Global Settings for Common HTML elements * 04. Template Structure * 05. Text Colors * 06. Navigation Bar * 07. Shared/General Components * 08. Answer & Question Detail Pages * 09. Home Page * 10. Account Pages * 11. General Accessiblity * 12. Print Style * 13. Chat Related */ @charset "utf-8"; /** * 01. Reset */ /** * 02. Font multiplier table * * Pixels EMs Percent Points * (9px is absolute minimum) * 9px 0.750 75.00% 7pt * 10px 0.833 83.30% 8pt * 11px 0.917 91.70% 8pt * (12px is our body default) * 12px 1.000 100.0% 9pt * 13px 1.083 108.3% 10pt * 14px 1.167 116.7% 11pt * 15px 1.250 125.0% 11pt * 16px 1.333 133.3% 12pt * 17px 1.417 141.7% 13pt * 18px 1.500 150.0% 14pt * 19px 1.583 158.3% 14pt * 20px 1.667 166.7% 15pt * 21px 1.750 175.0% 16pt * 22px 1.833 183.3% 17pt * 23px 1.917 191.7% 17pt * 24px 2.000 200.0% 18pt */ /** * 03. Global Settings for Common HTML elements */ body { background: #F4F4F4 none; font-family: 'Verdana', 'Arial', 'Garamond', sans-serif; text-align: left; font-size: 11px; color: #555; } a { color: #555; } a:link { text-decoration: none; color: #0059FF; } a:visited { text-decoration: none; color: #3C0D68; } a:focus, a:active, a:hover { text-decoration: underline; color: #0E53A7; } input[type="text"]:focus, input[type="password"]:focus, textarea:focus, select:focus { background-color: #F8F8F8; border-color: #AAA; } input[type="submit"], input[type="reset"], input[type="button"], button, .rn_SearchButton2 .rn_SubmitButton { /*background:url("../images/bg_greenbutton.gif") repeat-x scroll left center #6A6B6E;*/ background:#267d74; color: #fff; } input[type="submit"]:focus, input[type="submit"]:hover, input[type="reset"]:focus, input[type="reset"]:hover, input[type="button"]:focus, input[type="button"]:hover, button:focus, button:hover { background: #FFF; color: #000; } input[type="submit"][disabled], input[type="reset"][disabled], input[type="button"][disabled], button[disabled] { background-color: #064d44; border-color: #ccc; color: #999; } /* Start CSS for standard/page_header */ #bar #menu { padding-left: 4px; } #bar #menu, #bar #menu * { line-height: 1.2em; } #bar #menu li { display: block; } #bar #menu li { float: left; display: block !important; margin: 0px !important; padding: 6px 0px 0px 0px !important; } #bar #menu li.first_item img, #bar #menu li.first_item_current img { padding-right: 8px !important; } #bar #menu li a, #bar #menu li img { display: inline-block; } #bar #menu li a { display: inline; border-left: 1px solid #666; padding: 0px 10px; color: #555; text-decoration: none; } #bar #menu a:hover { text-decoration: underline; } /* End CSS for standard/page_header */ /* Begin CSS for standard/navigation */ #rn_Navigation { position: relative; margin: 6px 0px 0px 0px; border-bottom: 1px solid #CCC; height: 45px; overflow: visible; background: none; } #rn_Navigation .rn_MainTitle { float: none; display: block; padding: 10px 15px; font-family: 'Arial', 'Helvetica', sans-serif; font-size: 15pt; font-weight: bold; color: #267D74; } #rn_Navigation .rn_MainTitle a { color: #267D74; } #rn_Logo { display: none; /* 95% of the time we will not need the logo */ } #rn_Header { height: auto; min-height: 0px; } #rn_Header, #rn_Header a { color: #000; } /* End CSS for standard/navigation */ /* Begin CSS for custom/Level1ProductSelector */ #rn_level1productlist{ width:100%; } #rn_level1productlist li a { display: -moz-inline-block; display: inline-block; } #rn_level1productlist li a:hover { -moz-border-radius: 5px; background: #ddd none; } #rn_level1productsel h2 { margin: 0px; padding-left: 12px; } /* End CSS for custom/Level1ProductSelector */ /* Begin CSS for standard/navigation/NavigationBar(s) */ #rn_NavigationBar { position: absolute; right: 20px; bottom: 0px; height: 20px; } #rn_NavigationBar2 { float: none !important; margin: 10px 20px 0px 20px; border-bottom: 1px solid #ccc; padding: 0px 20px; } #rn_NavigationBar ul, #rn_NavigationBar2 ul { height: 20px; } #rn_NavigationBar ul li, #rn_NavigationBar2 ul li { float: left; font-size: 11px; } #rn_NavigationBar a, #rn_NavigationBar2 a { position: relative; float: none; display: block; margin: 0px; border: solid #aaa; border-width: 1px 1px 0px 1px; padding: 3px 10px 0px 10px; height: 16px; _height: 16px; background: #efefef none; font-weight: bold; font-size: 11px; } #rn_NavigationBar a:link, #rn_NavigationBar a:visited, #rn_NavigationBar2 a:link, #rn_NavigationBar2 a:visited { text-decoration: none; color: #555; } #rn_NavigationBar a:focus, #rn_NavigationBar a:active, #rn_NavigationBar a:hover, #rn_NavigationBar2 a:focus, #rn_NavigationBar2 a:active, #rn_NavigationBar2 a:hover { background: #fff none; color: #555; } #rn_NavigationBar a:focus, #rn_NavigationBar2 a:focus { outline: thin dotted #FFF; } #rn_NavigationBar a.rn_SelectedTab, #rn_NavigationBar2 a.rn_SelectedTab { margin-bottom: -1px; height: 17px; background: #FFF none; color: #267D74; } /* Begin CSS for standard/navigation/NavigationBar(s) */ /* Begin CSS for standard/navigation/NavigationTab2 OVERRIDE!!! */ .rn_NavigationTab2 { display: inline; } .rn_NavigationTab2 .rn_ButtonOff { display: none; } .rn_NavigationTab2 .rn_SubNavigation { display: none; } /* End CSS for standard/navigation/NavigationTab2 OVERRIDE!!! */ #page_footer { margin: 0px !important; padding: 10px 0px !important; margin-top:15px; } #rn_Footer, #rn_Body { border: none; -moz-box-shadow: none; -webkit-box-shadow: none; margin: 0px; padding: 0px; width: 100%; } #rn_Footer { border-bottom: 1px solid #E2E2E2; } .rn_Module h3, .rn_Module h2, #rn_SearchControls { background: transparent none; } /** * Updates quick styles, uncomment a style to quickly edit */ .rn_Hidden, #page_content .rn_Hidden { display: none; } #rn_MainColumn { margin: 0px; padding: 0px; width: 100%; height: auto; min-height: 0px; overflow: visible; } .rn_Padding { display: inline-block; /* trigger IE hasLayout */ } .rn_Padding { display: block; /* set mode */ padding: 10px 20px; overflow: hidden; /* contain floats */ } .rn_Padding .rn_FormSubmit{ padding-left:0px; } #rn_QuestionSubmit .rn_Padding .rn_FormSubmit{ padding-left:0px; } #page_main { float: none !important; } #rn_Container { width: 100%; } #rn_SideBar { display: none; } .rn_Multiline2 { overflow: visible; } .rn_Multiline2 li { margin-bottom: 12px; } .rn_Multiline2 .rn_Element1, .rn_Multiline2 .rn_Element2, .rn_Multiline2 .rn_Element3, .rn_Multiline2 .rn_ElementsHeader, .rn_Multiline2 .rn_ElementsData { font-weight: normal; } #rn_PageTitle { display: inline-block; /* trigger IE hasLayout */ } #rn_PageTitle { display: block; /* set mode */ border-bottom: 1px solid #E2E2E0; padding: 20px 20px; overflow: hidden !important; /* contain floats */ background: #EEE url('../images/titleBackground.png') repeat-x 0px 0px; color: #666; } .rn_KeywordText2 #rn_KeywordText2_10_Text{ } #rn_PageTitle .rn_mastheadintro { float: right; width: 500px; } #rn_PageTitle.rn_Home { padding: 20px 20px 0px 20px; color: #000; } #rn_PageTitle.rn_Home #rn_productselector_serial { font-size: 14px; /*color: #3F8C82;*/ } #rn_PageContent.rn_Home .rn_Module { border: none; padding:0px 20px 20px; background: none; } #rn_PageContent.rn_Home .rn_Module h2 { border: none; } #rn_PageContent.rn_Home .rn_Module ol { margin: 0px; } #rn_PageContent.rn_Home .rn_Module ol li { padding: 0px 4px; } #rn_PageContent.rn_Home .rn_Module ol li a { margin: 4px 0px; } #rn_SearchControls { border: none; } .rn_Home #rn_SearchControls { border-top: 1px solid #CCC; padding-bottom: 25px; } #rn_SearchControls .rn_SearchInput a { color: #FFF; } #rn_SearchControls .rn_SearchInput label { position: relative; top: 0px !important; left: 0px !important; font-weight: bold; color: #333; } #rn_SearchControls .rn_SearchInput input { margin: 0px; width: 160px; font-weight: normal; margin-top:0px; } #rn_SearchControls .rn_SearchInput { width: 285px; } #rn_SearchControls .rn_QuestionsSearchInput { width: 360px; } #rn_PageContent.rn_Home ol li{ width: 49%; } .rn_SearchForm .rn_ProductCategorySearchFilter{ padding-top: 10px; width: 150px; } .rn_DialogContent label { padding-right: 10px; } .rn_DialogContent div{ padding-bottom:5px; } #rn_SearchControls form input[type="submit"], #rn_SearchControls form input[type="image"] { margin: 0px; } #rn_SearchControls .rn_SearchForm { float: left; width: 98%; vertical-align:bottom; } #rn_SearchControls .rn_ProductCategorySearchFilter { display: inline; vertical-align:bottom; padding-top:10px; } #rn_SearchControls .rn_ProductCategorySearchFilter .rn_Label { float: none; } #rn_SearchControls .rn_SearchButton2 .rn_SubmitButton { margin-top:0px; vertical-align:bottom; } .rn_QuestionList #rn_SearchControls .rn_SearchButton2 .rn_SubmitButton { margin-top:0px; vertical-align:middle; margin-left:6px; } #rn_SearchControls .rn_BrowseAnswerFor { margin-bottom: 10px; border-bottom: 1px solid #BBB; padding-bottom: 10px; } .rn_BrowseAnswerFor a { font-size: 1.1em; font-weight: bold; } .rn_Home #rn_SearchControls { border: solid #BBB; border-width: 1px 0px 0px 0px; padding-top: 15px; } .rn_ProductCategorySearchFilter button.rn_DisplayButton { margin-top: 0px; } #rn_SearchControls .rn_BrowseAnswerForLabel { font-size: 1.3em; font-weight: bold; color: #333; } #rn_SearchControls .rn_BrowseAnswerForOr { font-size: 1em; font-weight: bold; color: #333; } #rn_PageTitle.rn_AnswerDetail { padding: 20px 20px 0px 20px; min-height: 40px; } #rn_PageContent.rn_AnswerDetail { padding: 5px 20px; } #rn_PageContent.rn_AnswerDetail .rn_AnswerDocId { float: left; padding: 8px 0px; width: 150px; text-align: left; } #rn_Summary{ padding-bottom:10px; } #rn_AnswerText { line-height:18px; } #rn_AnswerText p a{ font-size:0.9em; } .rn_ChatStatus2 { color: #091B59; } .aspire_one_logo { float: left; display: -moz-inline-block; display: inline-block; padding-top: 20px; } .rn_Paging { display: inline-block; /* trigger IE hasLayout */ } .rn_Paging { display: block; /* set mode */ margin: 0px 10px 10px 00px; /*border-bottom: 1px solid #DDD;*/ padding-left: 00px; overflow: auto; /* contain floats */ } .rn_ResultInfo2 { padding-top: 5px; } .rn_ResultInfo2 .rn_Results { float: right; } .rn_Padding .rn_ResultInfo2{ } .rn_Grid2 { clear:both; } .rn_Paginator { clear: none; padding-top: 5px; padding-right:0px; text-align:right; width:480px; } .rn_Paginator a { display: inline-block; border: 1px solid #ddd; padding: 0px 4px; } .rn_Paginator input, .rn_Paginator select { vertical-align: middle; } .rn_AnswerDetail #rn_AdditionalInfo, #rn_DetailTools { margin-top: 0px; border: none; background: none; } #rn_PageTitle.rn_AskQuestion { margin-left: 130px; border: none; background: none; color: #000; } #rn_PageContent.rn_AskQuestion { margin-left: 150px; margin-bottom:35px; border: 1px solid #DDD; width: 570px; background: #EEE url('../images/contentBackground.png') repeat-x 0px 0px; } .rn_AskQuestion h1 { /*font-size: 1.3em; font-weight: bold;*/ line-height: 1.8em; font-size: 2.083em; color:#267D74; } .rn_AskQuestion .rn_Padding { padding: 8px 35px 15px; } .rn_AskQuestion .rn_AskYourProduct { margin-top: 10px; margin-bottom: 20px; border-bottom: 1px solid #DDD; padding-bottom: 10px; font-size: 1.3em; font-weight:700; } .rn_AskQuestion .rn_AskCategory { margin-top: 10px; margin-bottom: 20px; border-bottom: 1px solid #DDD; padding-bottom: 10px; } .rn_AskQuestion .rn_TextInput .rn_TextArea { width: 100%; } .rn_AskQuestion .rn_Serial { display: inline; width: 600px; } .rn_AskQuestion .rn_Text { width: 245px; } .rn_AskQuestion .rn_Serial .rn_TextInput { float: left; } .rn_AskQuestion .rn_Serial .rn_SerialHelp { float: left; margin-top: 12px; margin-left: 8px; width:240px; /*width: 170px;*/ } .rn_AskQuestion .rn_Serial .rn_AutoDetect { float: left; margin-left: 8px; /*width: 170px;*/ } .rn_AskQuestion .rn_Serial .rn_Text { width:245px; } .rn_AskQuestion .rn_AskYourProductName { padding-bottom: 10px; font-size: 1.3em; font-weight: bold; } #rn_PageTitle.rn_LiveHelp { display: none; } .rn_Live .rn_LiveLeftCol { float: left; padding: 20px; width: 45%; } .rn_Live .rn_LiveLeftCol h2{ color:#267D74; font:20px 'Trebuchet MS','Arial','Helvetica',sans-serif; margin:0 0 10px; } .rn_Live .rn_LiveRightCol { float: left; border: 1px solid #DDD; padding: 20px; width: 43%; } .rn_Live .rn_LiveLine { margin-top: 10px; margin-bottom: 20px; border-bottom: 1px solid #DDD; padding-bottom: 10px; } .rn_Live p, .rn_Live p img { vertical-align: top; } .overlay_alphacube { background-color: #FFF; filter: alpha(opacity=0); -moz-opacity: 0; opacity: 0; } .img_banner_home { float: left; border: none; width: 60px; } .text_banner_home { margin-left: 70px; } #banner { height: 95px; background: #FFF url('../images/acer/bar_bg_bottom.gif') repeat-x left bottom; } #acerHomePublic #banner { height: 315px; background: #FFF url('../images/acer/bar_bg_bottom.gif') repeat-x left bottom; } #acerHomePublic #float_menu { display: none; } #acerHomePublic #grid { width: 100%; } #productpage #float_menu { display: none; } #productpage #grid { width: 100%; border-left: none; } #product_intro #grid { width: 100%; border-left: none; } #country_list #float_menu { display: none; } #product_intro #banner { height: 80px; } #productpage #banner { height: 80px; } #country_list #banner { height: 15px; } #acer_product_menu { width: 100%; z-index: 10; filter: alpha(opacity=100); -moz-opacity: 1; opacity: 1; } #acer_product_menu_t { width: 100%; padding-top: 5px; background-color: #E4E4E4; } #acer_product_menu table { width: 100%; background-color: #E4E4E4; } #acer_product_menu #tab { height: 35px; background: url('../images/acer/bar_bg_bottom.gif') repeat-x left top; } #acer_product_menu #tab ul { float: left; margin: 0px; padding: 0px 0px 0px 280px; width: auto !important; list-style: none; } #acer_product_menu #tab li { margin: 0px; padding: 0px 0px 0px 20px; height: 35px; cursor: pointer; } #acer_product_menu #tab span { display: block; padding: 5px 20px 0px 0px; width: auto !important; height: 35px; text-align: center; } .product_menu_tab { font-weight: bold; } #product_intro #acer_product_menu #tab ul { display: none; } .ie_product_menu_bg { background-color: #E4E4E4; } #float_menu td { white-space: normal; } div.homecustomlinks { padding: 0px 0px 4px 18px; background: url('../images/acer/bullet_pixel.gif') no-repeat left center; } #productSKUs { float: left; margin: 0px; padding: 0px; width: 920px; list-style: none; } #productSKUs li { float: left; display: block; margin: 0px; border: 1px solid #AAA; padding: 2px 5px 0px; height: 20px; background-color: #EBEBEB; cursor: pointer; } #productSKUs li.currentTab { border-bottom: 1px solid #FFF; background-color: #FFF; color: #F60; } #productSKUs li.currentTab a { color: #F60; } div.SKUs a, table.techSpec a { text-decoration: underline; } div.SKUs #part_number { margin-top: 5px; float: right; } div.SKUs span.part_number_label { color:#F60; margin-right: 5px; } div.SKUs a.part_number_link { text-decoration: none; color:#F60; } div.SKUs a.part_number_link:hover { text-decoration: underline; color:#F60; } table.techSpec { width: 100%; } table.techSpec td.header { border-bottom: 1px dotted #AAA; padding-top: 25px; font-size: 12px; } table.techSpec td.label { width: 30%; text-align: right; vertical-align: top; font-weight: bold; } table.techSpec td.value { padding-left: 10px; width: 70%; text-align: justify; vertical-align: top; } table.techSpec td.value p { margin: 0px; padding: 0px; } table.techSpec td.value ul { margin: 0px 0px 0px 17px; padding: 0px; } table.techSpec td.value li { margin: 0px; padding-left: 17px; background: url('../images/acer/bullet_pixel.gif') no-repeat left center; list-style-type: none; } table.techSpec td.value ul li { margin: 0px; padding: 0px; background-image: none; list-style-image: url('../images/acer/bullet_pixel.gif'); } .benefit_description { padding-bottom: 10px; text-align: justify; } .tagline { display: block; margin: 0px 20px 10px; padding: 14px 0px 0px; font-family: 'Verdana', 'Arial', 'Helvetica', sans-serif; line-height: 18px; font-size: 12px; text-decoration: none; font-weight: bold; color: #000; } .tagline2 { float: right; margin: 0px 20px; padding: 0px 0px 14px; width: 600px; font-family: 'Verdana', 'Arial', 'Helvetica', sans-serif; line-height: 18px; text-align: right; font-size: 12px; text-decoration: none; font-weight: bold; color: #000; } div.product_family_links { text-align: right; } div.product_family_links ul { float: right; margin: 0px; padding: 0px; list-style: none; } div.product_family_links ul li { float: left; padding: 0px 5px; line-height: 24px; } div.product_family_links ul li a { float: left; padding-left: 28px; line-height: 24px; font-weight: bold; } div.product_family_links ul li a:hover { float: left; padding-left: 28px; line-height: 24px; color: #005046; } .product_name { display: block; margin-bottom: 5px; font-size: 16px; font-weight: bold; color: #F60; } .product_image { margin-right: 10px; } .product_descr { margin-right: 3px; } div#list_award ul { float: left; margin: 0px; padding: 0px; width: 100%; list-style: none; } #productpage div#list_award ul li.single_award { float: left; padding: 0px 0px 30px; width: 33%; } #productpage .award_logo { float: left; margin-right: 5px; } div#printable_sku ul { float: left; margin: 0px; padding: 0px; width: 800px; list-style: none; } #printable_sku .single_sku { float: left; padding-bottom: 15px; } #printable_sku .sku_model { float: left; display: block; color: #F60; } #printable_sku .sku_pn { float: right; display: block; color: #F60; } #printable_sku .sku_descr { clear: both; display: block; text-align: justify; } .intel { float: left; line-height: 24px; font-weight: bold; } .intel a { padding-bottom: 14px; padding-top: 14px; font-family: 'Verdana', 'Arial', 'Helvetica', sans-serif; font-size: 11px; text-decoration: underline; font-weight: bold; color: #000; } .intel a:hover { color: #005046; } div.infochunk_headline { font-size: 14px; font-weight: bold; color: #005046; } div.infochunk_subheadline { margin: 3px 0px 8px 0px; font-style: italic; } div.infochunk_text { text-align: justify; } div.infochunk_image_right { float: right; margin-left: 10px; } div.infochunk_image_left { float: left; margin-right: 10px; } div.infochunk_image_center { text-align: center; } div.infochunk_separator { clear: both; } .infochunk_text a, .infochunk_subheadline a { text-decoration: underline; color: #F60; } ul.infochunk_links { float: left; margin: 0px; padding: 0px; list-style: none; } ul.infochunk_links li { float: left; padding: 0px 5px; line-height: 16px; } ul.infochunk_links li a { float: left; padding-left: 20px; line-height: 16px; font-weight: bold; } ul.infochunk_links li a:hover { float: left; padding-left: 20px; line-height: 16px; color: #005046; } #float_menu ul.menu_links { margin: 0px; padding: 0px; width: 230px; list-style: none; } #float_menu ul.menu_links li { padding: 2px 5px; line-height: 18px; } #float_menu ul.menu_links li.firstlevel { padding: 2px 5px 2px 18px; background: url('../images/acer/bullet_pixel_green.gif') no-repeat left center; } #float_menu ul.menu_links li.secondlevel { margin-left: 15px; padding: 2px 5px 2px 18px; background: url('../images/acer/bullet_pixel.gif') no-repeat left center; } #float_menu ul.menu_links li a:hover { color: #005046; } #float_menu table.page_links { text-align: left; } #float_menu table.page_links tr td ul { margin: 0px; padding: 0px 0px 0px 3px; width: 230px; list-style: none; } #float_menu table.page_links tr td ul li { padding: 2px 5px 2px 18px; background: url('../images/acer/bullet_pixel_green.gif') no-repeat left center; } #float_menu table.page_links a:hover { color: #005046; } #float_menu .orange a { color: #F60; } #float_menu ul.menu_links li.link_RSS_left { padding: 2px 5px 2px 18px; } #wheretobuy #resultTable ul { margin: 0px; padding: 0px; width: 100%; list-style: none; } #wheretobuy #resultTable ul li { float: left; padding:0px 0px 10px 0px; width: 50%; height: 50px; } #wheretobuy .geo_company { display: block; font-weight: bold; } #wheretobuy .geo_zip { float: left; display: block; padding-right: 10px; } #wheretobuy .geo_city { display: block; } #wheretobuy .geo_fax { clear: both; display: block; } #wheretobuy .geo_phone { clear: both; display: block; } #wheretobuy .label { font-style: italic; } div.noresult { margin: 10px 0px 0px 0px; text-align: center; } #wheretobuy #multipleResult_empty { display: none; padding: 10px 0px; text-align: center; } #wheretobuy #multipleResult_message { display: none; padding: 10px 0px; text-align: center; } #wheretobuy #multipleResult .geolocator_select { display: block; padding: 1px 0px 1px 15px; } #wheretobuy #multipleResult .geolocator_select:hover { color: #F60; } #wheretobuy div.singlerow { clear: both; float: left; display: block; padding: 0px 0px 50px 0px; width: 100%; } #wheretobuy div.singlerow ul { margin: 0px; padding: 5px 0px 0px 0px; width: 100%; list-style: none; } #wheretobuy div.singlerow ul li { float: left; margin: 0px 0px 5px 0px; padding: 0px 0px 10px 0px; width: 50%; height: 50px; } #wheretobuy .geo_program { display: block; border-bottom: 1px solid #AAA; padding: 0px 0px 5px 0px; font-size: 14px; font-weight: bold; } #news div.scrollable { margin: 0px 0px 10px 0px; border-bottom: 1px solid #E4E4E4; padding: 10px 0px; text-align: right; } #news div#list_news ul { float: left; margin: 0px; padding: 0px; width: 100%; list-style: none; } #news div#list_news ul li.single_news { float: left; padding: 0px 0px 30px 0px; } #news div#list_news ul li ul li { padding: 0px 0px 2px 0px; } #news .news_date { display: inline; font-style: italic; font-weight: bold; } #news .news_headline { font-weight: bold; color: #005046; } #news .news_headline_big { font-size: 14px; font-weight: bold; color: #005046; } #news .news_headline a { color: #005046; } #news .news_headline a:hover { text-decoration: underline; } #news .news_summary { display: inline; text-align: justify; } #news .news_summary p { display: inline; margin: 0px; padding: 0px; } #news .news_content { float: left; margin: 0px; padding: 0px; width: 100%; list-style: none; } #news .news_body { padding: 15px 0px; text-align: justify; } #news .news_image { float: right; margin: 0px 0px 0px 10px; } #news .news_file a { padding-left: 20px; line-height: 16px; font-weight: bold; } a.download_link { float: left; padding-left: 20px; line-height: 16px; font-weight: bold; } a.download_link:hover { color: #004056; } div#list_flyer ul { float: left; margin: 0px; padding: 0px; width: 100%; list-style: none; } #flyer div#list_flyer ul li.single_flyer { float: left; padding: 0px 0px 30px 0px; width: 50%; } #flyer div#list_flyer ul li ul li { padding: 0px 0px 2px 0px; } #flyer .flyer_date { float: left; display: block; margin-right: 10px; width: 70px; background: url('../images/acer/bullet_pixel.gif') no-repeat right center; line-height: 20px; font-weight: normal; } #flyer .flyer_headline { float: left; font-size: 14px; line-height: 20px; font-weight: bold; color: #005046; } #flyer .flyer_description { clear: both; float: left; display: inline; text-align: justify; } #flyer .flyer_file { clear: both; float: left; margin-top: 10px; } #technology_list, #technology_list ul { float: left; margin: 0px; padding: 0px; width: 100%; list-style: none; } #technology_list li { clear: both; } #technology_list li ul { clear: both; float: left; padding: 5px 0px; } #technology_list li ul li { clear: none; padding: 0px; } #technology_list .technology_groupname { clear: both; font-size: 13px; font-weight: bold; cursor: pointer; } #technology_list .technology_name a { color: #F60; cursor: pointer; } #technology_list .technology_icon { float: left; margin: 0px 10px 0px 0px; width: 80px; cursor: pointer; } #technology_list .technology_summary { text-align: justify; cursor: pointer; } #technology_list li.single_technology { float: left; margin: 0px 20px 0px 0px; width: 47%; } .adobe_download { position: absolute; left: 10px; bottom: 20px; display: block; width: 158px; height: 40px; } #genuineTooltip { text-align: left; } #genuineTooltip a, div.SKUs a, table.techSpec a { text-decoration: underline; color: #00C; } .rn_Overview ul li{ line-height:18px; font-size:12px; } #rn_account_create ul li{ list-style-type: none; line-height:18px; } .rn_CreateAccountInfo1{ background:#fff8ec; border:1px solid gray; padding:3px; } .rn_CreateAccountInfo1 ul{ margin-top:10px; } .rn_CreateAccountInfo1 li{ background:url(../images/createAccount.png) no-repeat; height:32px; list-style-type: none; list-style:none; margin:4px 0 16px; padding:4px 0px 4px 40px; } .rn_CreateAccountInfo1 li.rn_Communicate{background-position: 0px 0px;} .rn_CreateAccountInfo1 li.rn_Feedback{background-position: 0px -46px;} .rn_CreateAccountInfo1 li.rn_Customize{background-position: 0px -96px;} .contentHgt{ height:450px; } .rn_QuestionList caption { padding-bottom:10px; margin-top:10px; font-family:Arial, Helvetica, sans-serif; font-weight:normal; font-size:16px; font-weight:bold; } #rn_SearchButton2_11{ padding-top:5px; } .rn_AdvancedSearchDialog{ } .yui-skin-sam .yui-panel .hd { color:#267D74; } #rn_ProductCategorySearchFilter_15_Tree{ border-width:1px; border-color:#f2f2f2; background:#fff; } #rn_ProductCategoryInput_16_Tree{ background:#fff; } .rn_Dialog { border-color:#000000 !important; border-width:3px !important; overflow:visible; } .yui-skin-sam .yui-panel{ background:#F2F2F2; } .yui-skin-sam .yui-panel .bd{ padding:10px 20px 10px 20px; } .yui-skin-sam .yui-panel .ft{ height:130px; padding-left:20px; padding-top:40px; background:none; } #rn_LoginDialog2_3_Form{ padding:30px 0px 0px 0px; } input[type="submit"], button { /*background:url("../images/bg_greenbutton.gif") repeat-x scroll left center #6A6B6E;*/ } input[type="submit"]:hover, input[type="submit"]:focus, button:hover, button:focus { /* background:url("../images/bg_greenbutton_hover.gif") repeat-x scroll left center;*/ color:#000000; } #yui-gen0-button input[type="submit"]:hover, #yui-gen0-button input[type="submit"]:focus{ color:#000000; } .yui-skin-sam .yui-dialog .ft span.first-child button:focus, .yui-skin-sam .yui-dialog .ft span.first-child button:hover { color:#000000; } /*-------------------------------------------*/ #rn_product_sel_error{ font-size:12px; font-weight:bold; margin-bottom:5px; } #rn_product_sel_label{ font-size:12px; font-weight:bold; padding-bottom:10px; } .rn_DialogContent p{ font-weight:normal; font-size:11px;d padding:2px 6px 3px; } /*----------------------------------------------*/ #rn_accountOverview_rightcol #rn_PageTitle { display: block; /* set mode */ border-bottom: 0px solid #E2E2E0; padding: 0px 0px 0px; overflow: hidden !important; /* contain floats */ background: #fdfdfd; color: #666; } #rn_accountOverview_rightcol h2{ font-size:1.8em; line-height:1.5em; padding:2px 0px 10px 0px; font-weight:normal; color:#267D74; } #rn_accountOverview_rightcol h3{ font-size:1.1em; line-height:1.3em; padding:2px 0px 5px 0px; font-weight:normal; color:#666666; font-size:15px; } .rn_AnswerNotificationManager, .rn_ProdCatNotificationManager { background:#f5fffe; } #rn_accountOverview_rightcol .rn_Account h2{ font-size:1.4em; line-height:1.5em; padding:2px 0px 10px 0px; font-weight:normal; } #rn_accountOverview_rightcol h2{ color:#267D74; } #rn_accountOverview_rightcol h1{ font-size:25px; line-height:1.5em; padding:2px 0px 5px 0px; font-weight:normal; color:#267D74; } #rn_accountOverview_rightcol h3 a{ /*color:#267D74;*/ } #rn_accountOverview_rightcol h3{ padding-bottom:6px; } #rn_accountOverview_leftnav .rn_leftNav a{ /*color:#267D74;*/ } /*------------------------------------------------*/ .rn_TextInput .rn_Text, .rn_TextInput .rn_Password, .rn_TextInput .rn_TextArea{ width:160px; } #rn_level1productlist li{ padding:0px 0px; width:12.4%; } .rn_TextInput .rn_HintBox { opacity:1; width:210px; line-height:16px; padding-bottom:6px; } /*-----------------------------------------------*/ .rn_Module h2 { font:20px 'Trebuchet MS','Arial','Helvetica',sans-serif normal; margin:0 0 10px; color:#267D74; } h1#rn_Summary{ color:#267D74; } /*---------------------*/ #rn_Container .loginStatus { padding:2px 25px; position:absolute; right:0; top:0; z-index:10; } ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=units.css Content-Type: text/css; charset=UTF-8; name=units.css Content-Location: http://acer--uk.custhelp.com/euf/assets/themes/standard/acer/units.css Content-Transfer-Encoding: 8bit /***************************************************************/ /* GENERAL */ /* The classes determine the behaviour of all WebRatio Units */ /***************************************************************/ /* The css class used to render WebRatio css classes divs*/ .plain { display:inline; clear:none; } /* Fix for Internet Explorer for input with background image */ input[type="submit"] { border: 1px outset } /* Fix for Internet Explorer for input with background image */ input[type="button"] { border: 1px outset } /* The css classes used to align numbers right */ .integer, .float, .decimal{ text-align:right } /* The css class used to render headers and attribute names */ .header {} /* The css class used to render headers and attribute names of current elements */ .headerCurrent {} /* The alternate css class used to render headers and attribute names */ .headerAlternate {} /* The alternate css class used to render headers and attribute names of current elements */ .headerCurrentAlternate {} /* The css class used to render attribute values */ .value {} /* The css class used to render attribute values of current elements */ .valueCurrent {} /* The alternate css class used to render attribute values */ .valueAlternate {} /* The alternate css class used to render attribute values of current elements */ .valueCurrentAlternate {} /* The css class used to render bullets */ .bullet {} /* The css class used to render bullets of current elements */ .bulletCurrent{} /* The alternate css class used to render bullets */ .bulletAlternate {} /* The alternate css class used to render bullets of current elements */ .bulletCurrentAlternate{} /* The css class used to render rows */ .row {} /* The css class used to render rows of current elements*/ .rowCurrent {} /* The alternate css class used to render rows */ .rowAlternate {} /* The alternate css class used to render rows of current elements */ .rowCurrentAlternate {} /* The css class used to render links */ .button {} /* The css class used to render links */ .link {} /* The css class used to render links of current elements */ .linkCurrent {} /* The alternate css class used to render links */ .linkAlternate {} /* The alternate css class used to render links of current elements */ .linkCurrentAlternate {} /* The css class used to render scroll links */ .scroll {} /* The css class used to render the text between scroll links (i.e. 1-10 of 20) */ .scrollText {} /* The css class used to render jump bundles */ .jump {} /* The css class used to render sorting links */ .sort {} /* The css class used to render ascending sort links */ .sortAscending {} /* The css class used to render descending sort links */ .sortDescending {} /* The css class used to render the selectAll link */ .selectAll {} /* The css class used to render the unSelectAll link */ .unSelectAll {} /* The css class used to render fields */ .field {} /* The css class used to render selection fields and selects */ .selectionfield{} /* The css class used to render multi selection fields */ .multiselectionfield {} /* The css class used to render error messages */ .error {} /* The css class used to render checkboxes */ .checkBox {} /* The css class used to render the days of calendars */ .day{} /* The css class used to render the month names of calendars */ .month{} /* The css class used to render the previous year link of calendars */ .previousYear{} /* The css class used to render the next year link of calendars */ .nextYear{} /* The css class used to render horizontal spacing */ .horizontalSpacer {} /* The css class used to render vertical spacing */ .verticalSpacer {} /*********************************************************************************/ /* This classes determine the behaviour of units accordigly to their unit type */ /*********************************************************************************/ /*******************/ /* ALPHABET UNIT */ /*******************/ /* The css class used to render Alphabet Units values */ .AlphabetUnit .value {} /* The css class used to render Alphabet Units links */ .AlphabetUnit .link {} /***************/ /* DATA UNIT */ /***************/ /* The css class used to render Data Units headers and attribute names */ .DataUnit .header {} /* The css class used to render Data Units attribute values */ .DataUnit .value {} /* The css class used to render Data Units rows */ .DataUnit .row {} /* The alternate css class used to render Data Units rows */ .DataUnit .rowAlternate {} /* The css class used to render Data Units links */ .DataUnit .link {} /****************/ /* ENTRY UNIT */ /****************/ /* The css class used to render Entry Units headers and field names */ .EntryUnit .header {} /* The css class used to render Entry Units fields */ .EntryUnit .value {} /* The css class used to render Entry Units rows */ .EntryUnit .row {} /* The alternate css class used to render Entry Units rows */ .EntryUnit .rowAlternate {} /* The css class used to render Entry Units links */ .EntryUnit .button {} /* The css class used to render Entry Units fields */ .EntryUnit .field {} /* The css class used to render Entry Units selection fields and selects */ .EntryUnit .selectionfield{} /* The css class used to render Entry Units multi selection fields */ .EntryUnit .multiselectionfield {} /* The css class used to render Entry Units error messages */ .EntryUnit .error {} /*************************/ /* EVENT CALENDAR UNIT */ /*************************/ /* The css class used to render Event Calendar Units values */ .EventCalendarUnit .value {} /* The css class used to render Event Calendar Units values of the current element*/ .EventCalendarUnit .valueCurrent {} /* The css class used to render Event Calendar Units links */ .EventCalendarUnit .button {} /* The css class used to render Event Calendar Units links */ .EventCalendarUnit .link {} /* The css class used to render Event Calendar Units links of current elements */ .EventCalendarUnit .linkCurrent {} /* The css class used to render the days of Event Calendar Units */ .EventCalendatUnit .day{} /* The css class used to render the month names of Event Calendar Units */ .EventCalendatUnit .month{} /* The css class used to render the previous year link of Event Calendar Units */ .EventCalendatUnit .previousYear{} /* The css class used to render the next year link of Event Calendar Units */ .EventCalendatUnit .nextYear{} /* The css class used to render Event Calendar Units horizontal spacing */ .EventCalendatUnit .horizontalSpacer {} /* The css class used to render Event Calendar Units vertical spacing */ .EventCalendatUnit .verticalSpacer {} /*****************************/ /* HIERARCHICAL INDEX UNIT */ /*****************************/ /* The css class used to render Hierarchical Index Units headers and attribute names */ .HierarchicalIndexUnit .header {} /* The css class used to render Hierarchical Index Units attribute values */ .HierarchicalIndexUnit .value {} /* The css class used to render Hierarchical Index Units bullets */ .HierarchicalIndexUnit .bullet {} /* The css class used to render Hierarchical Index Units rows */ .HierarchicalIndexUnit .row {} /* The alternate css class used to render Hierarchical Index Units rows */ .HierarchicalIndexUnit .rowAlternate {} /* The css class used to render Hierarchical Index Units links */ .HierarchicalIndexUnit .link {} /****************/ /* INDEX UNIT */ /****************/ /* The css class used to render Index Units headers and attribute names */ .IndexUnit .header {} /* The css class used to render Index Units headers and attribute names of current elements */ .IndexUnit .headerCurrent {} /* The alternate css class used to render Index Units headers and attribute names */ .IndexUnit .headerAlternate {} /* The alternate css class used to render Index Units headers and attribute names of current elements */ .IndexUnit .headerCurrentAlternate {} /* The css class used to render Index Units attribute values */ .IndexUnit .informal {} /* The css class used to render Index Units attribute values */ .IndexUnit .value {} /* The css class used to render Index Units attribute values of current elements */ .IndexUnit .valueCurrent {} /* The alternate css class used to render Index Units attribute values */ .IndexUnit .valueAlternate {} /* The alternate css class used to render Index Units attribute values of current elements */ .IndexUnit .valueCurrentAlternate {} /* The css class used to render Index Units attribute values in dropdown*/ .IndexUnit .selectionfield {} /* The css class used to render Index Units bullets */ .IndexUnit .bullet {} /* The css class used to render Index Units bullets of current elements */ .IndexUnit .bulletCurrent{} /* The alternate css class used to Index Units render bullets */ .IndexUnit .bulletAlternate {} /* The alternate css class used to render Index Units bullets of current elements */ .IndexUnit .bulletCurrentAlternate{} /* The css class used to render Index Units rows */ .IndexUnit .row {} /* The css class used to render Index Units rows of current elements*/ .IndexUnit .rowCurrent {} /* The alternate css class used to render Index Units rows */ .IndexUnit .rowAlternate {} /* The alternate css class used to render Index Units rows of current elements */ .IndexUnit .rowCurrentAlternate {} /* The css class used to render Index Units links */ .IndexUnit .link {} /* The css class used to render Index Units links of current elements */ .IndexUnit .linkCurrent {} /* The alternate css class used to render Index Units links */ .IndexUnit .linkAlternate {} /* The alternate css class used to render Index Units links of current elements */ .IndexUnit .linkCurrentAlternate {} /*****************************/ /* MULTI CHOICE INDEX UNIT */ /*****************************/ /* The css class used to render Multi Choice Index Units headers and attribute names */ .MultiChoiceIndexUnit .header {} /* The css class used to render Multi Choice Index Units attribute values */ .MultiChoiceIndexUnit .value {} /* The css class used to render Multi Choice Index Units rows */ .MultiChoiceIndexUnit .row {} /* The alternate css class used to render Multi Choice Index Units rows */ .MultiChoiceIndexUnit .rowAlternate {} /* The css class used to render Multi Choice Index Units links */ .MultiChoiceIndexUnit .button {} /* The css class used to render the Multi Choice Index Units errors */ .MultiChoiceIndexUnit .error {} /* The css class used to render the Multi Choice Index Units checkboxes */ .MultiChoiceIndexUnit .checkBox {} /* The css class used to render the Multi Choice Index Units selectAll link */ .MultiChoiceIndexUnit .selectAll {} /*********************/ /* MULTI DATA UNIT */ /*********************/ /* The css class used to render Multi Data Units headers and attribute names */ .MultiDataUnit .header {} /* The css class used to render Multi Data Units attribute values */ .MultiDataUnit .value {} /* The css class used to render Multi Data Units bullets */ .IndexUnit .bullet {} /* The css class used to render Multi Data Units links */ .MultiDataUnit .link {} /**********************/ /* MULTI ENTRY UNIT */ /**********************/ /* The css class used to render Multi Entry Units headers and field names */ .MultiEntryUnit .header {} /* The css class used to render Multi Entry Units links */ .MultiEntryUnit .button {} /* The css class used to render Multi Entry Units fields */ .MultiEntryUnit .field {} /* The css class used to render Multi Entry Units selection fields and selects */ .MultiEntryUnit .selectionfield{} /* The css class used to render the Multi Entry Units selectAll link */ .selectAll {} /* The css class used to render Multi Entry Units error messages */ .MultiEntryUnit .error {} /************************/ /* MULTI MESSAGE UNIT */ /************************/ /* The css class used to render Multi Message Units values */ .MultiMessageUnit .value {} /*******************************/ /* NO OPERATION CONTENT UNIT */ /*******************************/ /* The css class used to render No Operation Content Units links */ .NoOpContentUnit .link {} /**********************/ /* POWER INDEX UNIT */ /**********************/ /* The css class used to render Power Index Units headers and attribute names */ .PowerIndexUnit .header {} /* The css class used to render Power Index Units headers and attribute names of current elements */ .PowerIndexUnit .headerCurrent {} /* The alternate css class used to render Power Index Units headers and attribute names */ .PowerIndexUnit .headerAlternate {} /* The alternate css class used to render Power Index Units headers and attribute names of current elements */ .PowerIndexUnit .headerCurrentAlternate {} /* The css class used to render Power Index Units attribute values */ .PowerIndexUnit .value {} /* The css class used to render Power Index Units attribute values of current elements */ .PowerIndexUnit .valueCurrent {} /* The alternate css class used to render Power Index Units attribute values */ .PowerIndexUnit .valueAlternate {} /* The alternate css class used to render Power Index Units attribute values of current elements */ .PowerIndexUnit .valueCurrentAlternate {} /* The css class used to render Power Index Units bullets */ .PowerIndexUnit .bullet {} /* The css class used to render Power Index Units bullets of current elements */ .PowerIndexUnit .bulletCurrent{} /* The alternate css class used to Power Index Units render bullets */ .PowerIndexUnit .bulletAlternate {} /* The alternate css class used to render Power Index Units bullets of current elements */ .PowerIndexUnit .bulletCurrentAlternate{} /* The css class used to render Power Index Units rows */ .PowerIndexUnit .row {} /* The css class used to render Power Index Units rows of current elements*/ .PowerIndexUnit .rowCurrent {} /* The alternate css class used to render Power Index Units rows */ .PowerIndexUnit .rowAlternate {} /* The alternate css class used to render Power Index Units rows of current elements */ .PowerIndexUnit .rowCurrentAlternate {} /* The css class used to render Power Index Units links */ .PowerIndexUnit .link {} /* The css class used to render Power Index Units links of current elements */ .PowerIndexUnit .linkCurrent {} /* The alternate css class used to render Power Index Units links */ .PowerIndexUnit .linkAlternate {} /* The alternate css class used to render Power Index Units links of current elements */ .PowerIndexUnit .linkCurrentAlternate {} /* The css class used to render Power Index Units scroll links */ .PowerIndexUnit .scroll {} /* The css class used to render the text between Power Index Units scroll links (i.e. 1-10 of 20) */ .PowerIndexUnit .scrollText {} /* The css class used to render Power Index Units jump bundles */ .PowerIndexUnit .jump {} /* The css class used to render Power Index Units sorting links */ .PowerIndexUnit .sort {} /***************************************/ /* RECURSIVE HIERARCHICAL INDEX UNIT */ /***************************************/ /* The css class used to render Recursive Hierarchical Index Units headers and attribute names */ .RecursiveHierarchicalIndexUnit .header {} /* The css class used to render Recursive Hierarchical Index Units attribute values */ .RecursiveHierarchicalIndexUnit .value {} /* The css class used to render Recursive Hierarchical Index Units attribute values of current elements */ .RecursiveHierarchicalIndexUnit .valueCurrent {} /* The css class used to render Recursive Hierarchical Index Units links */ .RecursiveHierarchicalIndexUnit .link {} /*****************/ /* SCRIPT UNIT */ /*****************/ /* The css class used to render Script Units results */ .ScriptUnit .value {} /*******************/ /* SCROLLER UNIT */ /*******************/ /* The css class used to render Scroller Units links */ .ScrollerUnit .link {} /* The css class used to render Scroller Units scroll links */ .ScrollerUnit .scroll {} /* The css class used to render the text between Scroller Units scroll links (i.e. 1-10 of 20) */ .ScrollerUnit .scrollText {} /* The css class used to render Scroller Units jump bundles */ .ScrollerUnit .jump {} ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline Content-Type: text/css; charset=UTF-8 Content-Location: http://acer--uk.custhelp.com/euf/assets/themes/standard/acer/default.css Content-Transfer-Encoding: 8bit /* NO FIREFOX FOCUS ON LINK */ :-moz-any-link:focus { OUTLINE: none; } a {outline: none;} /* FONT SIZE */ .f09 { FONT-SIZE: 9px; } .f10 { FONT-SIZE: 10px; } .f11 { FONT-SIZE: 11px; } .f12 { FONT-SIZE: 12px; } .f13 { FONT-SIZE: 13px; } .f14 { FONT-SIZE: 14px; } .f16 { FONT-SIZE: 16px; } .f18 { FONT-SIZE: 18px; } .f20 { FONT-SIZE: 20px; } .f22 { FONT-SIZE: 22px; } .f24 { FONT-SIZE: 24px; } .f26 { FONT-SIZE: 26px; } /* FONT COLOR */ .acerColor { COLOR: #005046; } .gray { COLOR: #AAAAAA; } .default_gray { COLOR: #555555; } .orange { COLOR: #FF6600; } .green { COLOR: #26994F; } .blue { COLOR: #5693B9; } .red { COLOR: #FF0000; } .white { COLOR: #FFFFFF; } /* FONT STYLE */ .bold { FONT-WEIGHT:bold; } .italic { FONT-STYLE:italic; } .underline { TEXT-DECORATION:underline; } /* TEXT ALIGN */ .valign_top, .top { VERTICAL-ALIGN:top; } .valign_middle, .middle { VERTICAL-ALIGN:middle; } .valign_bottom, .bottom { VERTICAL-ALIGN:bottom; } .align_left, .left { TEXT-ALIGN:left; } .align_center, .center { TEXT-ALIGN:center; } .align_right, .right { TEXT-ALIGN:right; } .nowrap { WHITE-SPACE: pre; } /* TEXT TRANSFORMATIONS */ .capitalize { TEXT-TRANSFORM: capitalize; } .uppercase { TEXT-TRANSFORM: uppercase; } .lowercase { TEXT-TRANSFORM: lowercase; } .justify { TEXT-ALIGN:justify; } /* FONT STYLE */ .arial { FONT-FAMILY: Arial, Garamond, sans-serif; } .verdana { FONT-FAMILY: Verdana, Arial, Garamond, sans-serif; } /* CURSORS */ .pointer { CURSOR:pointer; } /* VISIBILITY */ /* .hidden { VISIBILITY: hidden; } */ .visible { VISIBILITY: visible; } .none { DISPLAY:none; } .block { DISPLAY:block; } .full { WIDTH:100%; clear:both; } ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=global.css Content-Type: text/css; charset=UTF-8; name=global.css Content-Location: http://acer--uk.custhelp.com/euf/assets/themes/standard/acer/global.css Content-Transfer-Encoding: 8bit @import "default.css"; /* BODY */ BODY {FONT-FAMILY: Verdana, Arial, Garamond, sans-serif; FONT-SIZE: 11px; COLOR:#555555; MARGIN:0px; /* TEXT-ALIGN:center; */ BACKGROUND-COLOR: #ffffff; } .basic_font { FONT-FAMILY: Verdana, Arial, Garamond, sans-serif; FONT-SIZE: 11px; COLOR:#555555; } a { COLOR:#555555; TEXT-DECORATION:none; } a:hover table { cursor:pointer; } /* FORM */ form { margin:0; padding:0; } INPUT { FONT-FAMILY: Verdana, Arial, Garamond, sans-serif; FONT-SIZE: 11px; COLOR:#555555; } SELECT { FONT-FAMILY: Verdana, Arial, Garamond, sans-serif; FONT-SIZE: 11px; COLOR:#555555; } /* PAGE */ #page_content { BORDER-LEFT: 1px solid #e4e4e4; BORDER-RIGHT: 1px solid #e4e4e4; WIDTH:850px; MARGIN:0px auto; /* POSITION:relative; */ BACKGROUND-COLOR: #fff;} #page_main { /* POSITION:relative; */ float:left; width:100%; } #float_menu { FLOAT:left; width:249px; } #grid { FLOAT:left; width:620px; BORDER-LEFT: 1px solid #E4E4E4; } /* HEADER */ #page_header { POSITION:relative; WIDTH:100%; HEIGHT:60px; BACKGROUND: url(../images/acer/header_bg.gif) repeat-x left bottom; display:none; } #page_header #logo { WIDTH: 250px; HEIGHT: 60px; BACKGROUND: url(../images/acer/header_logo.jpg) no-repeat left bottom; FLOAT: left; MARGIN-LEFT: 25px;} #page_header #slogan { COLOR: #FFF; FONT-FAMILY: Verdana, Arial, Garamond, sans-serif; FONT-SIZE: 14px; FONT-STYLE: italic; POSITION: absolute; LEFT: 200px; TOP: 0px; LINE-HEIGHT:60px; } #page_header #header_sub { WIDTH: 400px; HEIGHT: 60px; POSITION: absolute; RIGHT: 25px; TOP: 0px;} #page_header #header_sub span { POSITION:absolute; right:0px; width:400px; text-align:right; } #page_header #header_sub a { FONT-WEIGHT:bold; COLOR: #FFF; FONT-SIZE: 13px; LINE-HEIGHT:60px; background:url(../images/acer/change.gif) no-repeat right center; padding-right:15px; } #bar { COLOR: #555; POSITION: relative; HEIGHT: 25px; WIDTH:100%; BACKGROUND: url(../images/acer/bar_bg.jpg) repeat-x center center; display:none; } #bar #bar_sub { position:absolute; TOP: 0px; RIGHT: 25px; WIDTH: 150px; HEIGHT: 25px; LINE-HEIGHT:25px; TEXT-ALIGN:right; } #bar #menu { POSITION: absolute; TOP: 0px; LEFT: 25px; HEIGHT: 25px; LINE-HEIGHT:25px; TEXT-ALIGN:left; } #bar #menu UL { list-style-type: none; margin: 0; padding: 0; display:inline; } #bar #menu LI { background: url(../images/acer/pipe.gif) no-repeat 0 center; display:inline; padding: 0 3px 0 8px; margin: 0;} #bar #menu LI.first_item {background: none; padding: 0 3px 0 0;} #bar #menu LI.first_item_current {background: none; padding: 0 3px 0 0; font-weight: bold; } #bar #menu LI.item_current { font-weight: bold; background: url(../images/acer/pipe.gif) no-repeat 0 center; display:inline; padding: 0 3px 0 8px; margin: 0;} #bar #menu A { COLOR: #555; TEXT-DECORATION: none; } #bar #menu A:hover { TEXT-DECORATION: underline; } #bar #bar_sub A { COLOR: #555; TEXT-DECORATION: none; } #bar #bar_sub A:hover { TEXT-DECORATION: underline; } #page_footer { color: #AAAAAA; clear:both; margin:10px 0px 20px 0px; padding:10px 0 10px 0; text-align:center; display:none; } #page_footer UL { list-style-type: none; margin: 0; padding: 0; display:inline; } #page_footer LI { background: url(../images/acer/pipe_light.gif) no-repeat 0 center; display:inline; padding: 0 3px 0 8px; margin: 0;} #page_footer LI.first_item { background: none; padding: 0 3px 0 0;} #page_footer A { COLOR: #AAA; TEXT-DECORATION: none; } #page_footer A:hover { TEXT-DECORATION: underline; } #page_footer #copyright { margin:10px 0px 0px 0px; } #banner { DISPLAY: block; position:relative; } .banner_image { width:950px; height:300px; border:0; } .banner_productname { POSITION:absolute; top:35px; left:30px; COLOR:#005046; font-size:13px; font-weight:bold; } .frame { border-bottom:1px solid #AAA; } .frame_title { width:100%; } .frame_button_opened { cursor:pointer; padding:2px 2px 0px 2px; width:18px; height:18px; background:url(../images/acer/frame_open.gif) no-repeat center center; } .frame_button_closed { cursor:pointer; padding:2px 2px 0px 2px; width:18px; height:18px; background:url(../images/acer/frame_close.gif) no-repeat center center; } .frame_baseline { padding:0 0 10px 0; background:url(../images/acer/frame_baseline.gif) no-repeat center bottom; } select { FONT-FAMILY: Verdana, Arial, Garamond, sans-serif; FONT-SIZE: 11px; COLOR:#555555; PADDING:2px; } input { FONT-FAMILY: Verdana, Arial, Garamond, sans-serif; FONT-SIZE: 11px; COLOR:#555555; } ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=RightNow.js Content-Type: application/x-javascript; charset=UTF-8; name=RightNow.js Content-Location: http://acer--uk.custhelp.com/euf/rightnow/js/10.2.0.1.6.140/min/RightNow.js Content-Transfer-Encoding: Base64 LyoKQ29weXJpZ2h0IChjKSAyMDA5LCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJl c2VydmVkLgpDb2RlIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0QgTGljZW5zZToKaHR0 cDovL2RldmVsb3Blci55YWhvby5uZXQveXVpL2xpY2Vuc2UudHh0CnZlcnNpb246 IDIuNy4wCiovCmlmKHR5cGVvZiBZQUhPTz09InVuZGVmaW5lZCJ8fCFZQUhPTyl7 dmFyIFlBSE9PPXt9O31ZQUhPTy5uYW1lc3BhY2U9ZnVuY3Rpb24oKXt2YXIgQT1h cmd1bWVudHMsRT1udWxsLEMsQixEO2ZvcihDPTA7QzxBLmxlbmd0aDtDPUMrMSl7 RD0oIiIrQVtDXSkuc3BsaXQoIi4iKTtFPVlBSE9PO2ZvcihCPShEWzBdPT0iWUFI T08iKT8xOjA7QjxELmxlbmd0aDtCPUIrMSl7RVtEW0JdXT1FW0RbQl1dfHx7fTtF PUVbRFtCXV07fX1yZXR1cm4gRTt9O1lBSE9PLmxvZz1mdW5jdGlvbihELEEsQyl7 dmFyIEI9WUFIT08ud2lkZ2V0LkxvZ2dlcjtpZihCJiZCLmxvZyl7cmV0dXJuIEIu bG9nKEQsQSxDKTt9ZWxzZXtyZXR1cm4gZmFsc2U7fX07WUFIT08ucmVnaXN0ZXI9 ZnVuY3Rpb24oQSxFLEQpe3ZhciBJPVlBSE9PLmVudi5tb2R1bGVzLEIsSCxHLEYs QztpZighSVtBXSl7SVtBXT17dmVyc2lvbnM6W10sYnVpbGRzOltdfTt9Qj1JW0Fd O0g9RC52ZXJzaW9uO0c9RC5idWlsZDtGPVlBSE9PLmVudi5saXN0ZW5lcnM7Qi5u YW1lPUE7Qi52ZXJzaW9uPUg7Qi5idWlsZD1HO0IudmVyc2lvbnMucHVzaChIKTtC LmJ1aWxkcy5wdXNoKEcpO0IubWFpbkNsYXNzPUU7Zm9yKEM9MDtDPEYubGVuZ3Ro O0M9QysxKXtGW0NdKEIpO31pZihFKXtFLlZFUlNJT049SDtFLkJVSUxEPUc7fWVs c2V7WUFIT08ubG9nKCJtYWluQ2xhc3MgaXMgdW5kZWZpbmVkIGZvciBtb2R1bGUg IitBLCJ3YXJuIik7fX07WUFIT08uZW52PVlBSE9PLmVudnx8e21vZHVsZXM6W10s bGlzdGVuZXJzOltdfTtZQUhPTy5lbnYuZ2V0VmVyc2lvbj1mdW5jdGlvbihBKXty ZXR1cm4gWUFIT08uZW52Lm1vZHVsZXNbQV18fG51bGw7fTtZQUhPTy5lbnYudWE9 ZnVuY3Rpb24oKXt2YXIgQz17aWU6MCxvcGVyYTowLGdlY2tvOjAsd2Via2l0OjAs bW9iaWxlOm51bGwsYWlyOjAsY2FqYTowfSxCPW5hdmlnYXRvci51c2VyQWdlbnQs QTtpZigoL0tIVE1MLykudGVzdChCKSl7Qy53ZWJraXQ9MTt9QT1CLm1hdGNoKC9B cHBsZVdlYktpdFwvKFteXHNdKikvKTtpZihBJiZBWzFdKXtDLndlYmtpdD1wYXJz ZUZsb2F0KEFbMV0pO2lmKC8gTW9iaWxlXC8vLnRlc3QoQikpe0MubW9iaWxlPSJB cHBsZSI7fWVsc2V7QT1CLm1hdGNoKC9Ob2tpYU5bXlwvXSovKTtpZihBKXtDLm1v YmlsZT1BWzBdO319QT1CLm1hdGNoKC9BZG9iZUFJUlwvKFteXHNdKikvKTtpZihB KXtDLmFpcj1BWzBdO319aWYoIUMud2Via2l0KXtBPUIubWF0Y2goL09wZXJhW1xz XC9dKFteXHNdKikvKTtpZihBJiZBWzFdKXtDLm9wZXJhPXBhcnNlRmxvYXQoQVsx XSk7QT1CLm1hdGNoKC9PcGVyYSBNaW5pW147XSovKTtpZihBKXtDLm1vYmlsZT1B WzBdO319ZWxzZXtBPUIubWF0Y2goL01TSUVccyhbXjtdKikvKTtpZihBJiZBWzFd KXtDLmllPXBhcnNlRmxvYXQoQVsxXSk7fWVsc2V7QT1CLm1hdGNoKC9HZWNrb1wv KFteXHNdKikvKTtpZihBKXtDLmdlY2tvPTE7QT1CLm1hdGNoKC9ydjooW15cc1wp XSopLyk7aWYoQSYmQVsxXSl7Qy5nZWNrbz1wYXJzZUZsb2F0KEFbMV0pO319fX19 QT1CLm1hdGNoKC9DYWphXC8oW15cc10qKS8pO2lmKEEmJkFbMV0pe0MuY2FqYT1w YXJzZUZsb2F0KEFbMV0pO31yZXR1cm4gQzt9KCk7KGZ1bmN0aW9uKCl7WUFIT08u bmFtZXNwYWNlKCJ1dGlsIiwid2lkZ2V0IiwiZXhhbXBsZSIpO2lmKCJ1bmRlZmlu ZWQiIT09dHlwZW9mIFlBSE9PX2NvbmZpZyl7dmFyIEI9WUFIT09fY29uZmlnLmxp c3RlbmVyLEE9WUFIT08uZW52Lmxpc3RlbmVycyxEPXRydWUsQztpZihCKXtmb3Io Qz0wO0M8QS5sZW5ndGg7Qz1DKzEpe2lmKEFbQ109PUIpe0Q9ZmFsc2U7YnJlYWs7 fX1pZihEKXtBLnB1c2goQik7fX19fSkoKTtZQUhPTy5sYW5nPVlBSE9PLmxhbmd8 fHt9OyhmdW5jdGlvbigpe3ZhciBCPVlBSE9PLmxhbmcsRj0iW29iamVjdCBBcnJh eV0iLEM9IltvYmplY3QgRnVuY3Rpb25dIixBPU9iamVjdC5wcm90b3R5cGUsRT1b InRvU3RyaW5nIiwidmFsdWVPZiJdLEQ9e2lzQXJyYXk6ZnVuY3Rpb24oRyl7cmV0 dXJuIEEudG9TdHJpbmcuYXBwbHkoRyk9PT1GO30saXNCb29sZWFuOmZ1bmN0aW9u KEcpe3JldHVybiB0eXBlb2YgRz09PSJib29sZWFuIjt9LGlzRnVuY3Rpb246ZnVu Y3Rpb24oRyl7cmV0dXJuIEEudG9TdHJpbmcuYXBwbHkoRyk9PT1DO30saXNOdWxs OmZ1bmN0aW9uKEcpe3JldHVybiBHPT09bnVsbDt9LGlzTnVtYmVyOmZ1bmN0aW9u KEcpe3JldHVybiB0eXBlb2YgRz09PSJudW1iZXIiJiZpc0Zpbml0ZShHKTt9LGlz T2JqZWN0OmZ1bmN0aW9uKEcpe3JldHVybihHJiYodHlwZW9mIEc9PT0ib2JqZWN0 Inx8Qi5pc0Z1bmN0aW9uKEcpKSl8fGZhbHNlO30saXNTdHJpbmc6ZnVuY3Rpb24o Ryl7cmV0dXJuIHR5cGVvZiBHPT09InN0cmluZyI7fSxpc1VuZGVmaW5lZDpmdW5j dGlvbihHKXtyZXR1cm4gdHlwZW9mIEc9PT0idW5kZWZpbmVkIjt9LF9JRUVudW1G aXg6KFlBSE9PLmVudi51YS5pZSk/ZnVuY3Rpb24oSSxIKXt2YXIgRyxLLEo7Zm9y KEc9MDtHPEUubGVuZ3RoO0c9RysxKXtLPUVbR107Sj1IW0tdO2lmKEIuaXNGdW5j dGlvbihKKSYmSiE9QVtLXSl7SVtLXT1KO319fTpmdW5jdGlvbigpe30sZXh0ZW5k OmZ1bmN0aW9uKEosSyxJKXtpZighS3x8IUope3Rocm93IG5ldyBFcnJvcigiZXh0 ZW5kIGZhaWxlZCwgcGxlYXNlIGNoZWNrIHRoYXQgIisiYWxsIGRlcGVuZGVuY2ll cyBhcmUgaW5jbHVkZWQuIik7fXZhciBIPWZ1bmN0aW9uKCl7fSxHO0gucHJvdG90 eXBlPUsucHJvdG90eXBlO0oucHJvdG90eXBlPW5ldyBIKCk7Si5wcm90b3R5cGUu Y29uc3RydWN0b3I9SjtKLnN1cGVyY2xhc3M9Sy5wcm90b3R5cGU7aWYoSy5wcm90 b3R5cGUuY29uc3RydWN0b3I9PUEuY29uc3RydWN0b3Ipe0sucHJvdG90eXBlLmNv bnN0cnVjdG9yPUs7fWlmKEkpe2ZvcihHIGluIEkpe2lmKEIuaGFzT3duUHJvcGVy dHkoSSxHKSl7Si5wcm90b3R5cGVbR109SVtHXTt9fUIuX0lFRW51bUZpeChKLnBy b3RvdHlwZSxJKTt9fSxhdWdtZW50T2JqZWN0OmZ1bmN0aW9uKEssSil7aWYoIUp8 fCFLKXt0aHJvdyBuZXcgRXJyb3IoIkFic29yYiBmYWlsZWQsIHZlcmlmeSBkZXBl bmRlbmNpZXMuIik7fXZhciBHPWFyZ3VtZW50cyxJLEwsSD1HWzJdO2lmKEgmJkgh PT10cnVlKXtmb3IoST0yO0k8Ry5sZW5ndGg7ST1JKzEpe0tbR1tJXV09SltHW0ld XTt9fWVsc2V7Zm9yKEwgaW4gSil7aWYoSHx8IShMIGluIEspKXtLW0xdPUpbTF07 fX1CLl9JRUVudW1GaXgoSyxKKTt9fSxhdWdtZW50UHJvdG86ZnVuY3Rpb24oSixJ KXtpZighSXx8IUope3Rocm93IG5ldyBFcnJvcigiQXVnbWVudCBmYWlsZWQsIHZl cmlmeSBkZXBlbmRlbmNpZXMuIik7fXZhciBHPVtKLnByb3RvdHlwZSxJLnByb3Rv dHlwZV0sSDtmb3IoSD0yO0g8YXJndW1lbnRzLmxlbmd0aDtIPUgrMSl7Ry5wdXNo KGFyZ3VtZW50c1tIXSk7fUIuYXVnbWVudE9iamVjdC5hcHBseSh0aGlzLEcpO30s ZHVtcDpmdW5jdGlvbihHLEwpe3ZhciBJLEssTj1bXSxPPSJ7Li4ufSIsSD0iZigp ey4uLn0iLE09IiwgIixKPSIgPT4gIjtpZighQi5pc09iamVjdChHKSl7cmV0dXJu IEcrIiI7fWVsc2V7aWYoRyBpbnN0YW5jZW9mIERhdGV8fCgibm9kZVR5cGUiIGlu IEcmJiJ0YWdOYW1lIiBpbiBHKSl7cmV0dXJuIEc7fWVsc2V7aWYoQi5pc0Z1bmN0 aW9uKEcpKXtyZXR1cm4gSDt9fX1MPShCLmlzTnVtYmVyKEwpKT9MOjM7aWYoQi5p c0FycmF5KEcpKXtOLnB1c2goIlsiKTtmb3IoST0wLEs9Ry5sZW5ndGg7STxLO0k9 SSsxKXtpZihCLmlzT2JqZWN0KEdbSV0pKXtOLnB1c2goKEw+MCk/Qi5kdW1wKEdb SV0sTC0xKTpPKTt9ZWxzZXtOLnB1c2goR1tJXSk7fU4ucHVzaChNKTt9aWYoTi5s ZW5ndGg+MSl7Ti5wb3AoKTt9Ti5wdXNoKCJdIik7fWVsc2V7Ti5wdXNoKCJ7Iik7 Zm9yKEkgaW4gRyl7aWYoQi5oYXNPd25Qcm9wZXJ0eShHLEkpKXtOLnB1c2goSStK KTtpZihCLmlzT2JqZWN0KEdbSV0pKXtOLnB1c2goKEw+MCk/Qi5kdW1wKEdbSV0s TC0xKTpPKTt9ZWxzZXtOLnB1c2goR1tJXSk7fU4ucHVzaChNKTt9fWlmKE4ubGVu Z3RoPjEpe04ucG9wKCk7fU4ucHVzaCgifSIpO31yZXR1cm4gTi5qb2luKCIiKTt9 LHN1YnN0aXR1dGU6ZnVuY3Rpb24oVixILE8pe3ZhciBMLEssSixSLFMsVSxRPVtd LEksTT0iZHVtcCIsUD0iICIsRz0ieyIsVD0ifSIsTjtmb3IoOzspe0w9Vi5sYXN0 SW5kZXhPZihHKTtpZihMPDApe2JyZWFrO31LPVYuaW5kZXhPZihULEwpO2lmKEwr MT49Syl7YnJlYWs7fUk9Vi5zdWJzdHJpbmcoTCsxLEspO1I9STtVPW51bGw7Sj1S LmluZGV4T2YoUCk7aWYoSj4tMSl7VT1SLnN1YnN0cmluZyhKKzEpO1I9Ui5zdWJz dHJpbmcoMCxKKTt9Uz1IW1JdO2lmKE8pe1M9TyhSLFMsVSk7fWlmKEIuaXNPYmpl Y3QoUykpe2lmKEIuaXNBcnJheShTKSl7Uz1CLmR1bXAoUyxwYXJzZUludChVLDEw KSk7fWVsc2V7VT1VfHwiIjtOPVUuaW5kZXhPZihNKTtpZihOPi0xKXtVPVUuc3Vi c3RyaW5nKDQpO31pZihTLnRvU3RyaW5nPT09QS50b1N0cmluZ3x8Tj4tMSl7Uz1C LmR1bXAoUyxwYXJzZUludChVLDEwKSk7fWVsc2V7Uz1TLnRvU3RyaW5nKCk7fX19 ZWxzZXtpZighQi5pc1N0cmluZyhTKSYmIUIuaXNOdW1iZXIoUykpe1M9In4tIitR Lmxlbmd0aCsiLX4iO1FbUS5sZW5ndGhdPUk7fX1WPVYuc3Vic3RyaW5nKDAsTCkr UytWLnN1YnN0cmluZyhLKzEpO31mb3IoTD1RLmxlbmd0aC0xO0w+PTA7TD1MLTEp e1Y9Vi5yZXBsYWNlKG5ldyBSZWdFeHAoIn4tIitMKyItfiIpLCJ7IitRW0xdKyJ9 IiwiZyIpO31yZXR1cm4gVjt9LHRyaW06ZnVuY3Rpb24oRyl7dHJ5e3JldHVybiBH LnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKTt9Y2F0Y2goSCl7cmV0dXJuIEc7fX0s bWVyZ2U6ZnVuY3Rpb24oKXt2YXIgSj17fSxIPWFyZ3VtZW50cyxHPUgubGVuZ3Ro LEk7Zm9yKEk9MDtJPEc7ST1JKzEpe0IuYXVnbWVudE9iamVjdChKLEhbSV0sdHJ1 ZSk7fXJldHVybiBKO30sbGF0ZXI6ZnVuY3Rpb24oTixILE8sSixLKXtOPU58fDA7 SD1IfHx7fTt2YXIgST1PLE09SixMLEc7aWYoQi5pc1N0cmluZyhPKSl7ST1IW09d O31pZighSSl7dGhyb3cgbmV3IFR5cGVFcnJvcigibWV0aG9kIHVuZGVmaW5lZCIp O31pZighQi5pc0FycmF5KE0pKXtNPVtKXTt9TD1mdW5jdGlvbigpe0kuYXBwbHko SCxNKTt9O0c9KEspP3NldEludGVydmFsKEwsTik6c2V0VGltZW91dChMLE4pO3Jl dHVybntpbnRlcnZhbDpLLGNhbmNlbDpmdW5jdGlvbigpe2lmKHRoaXMuaW50ZXJ2 YWwpe2NsZWFySW50ZXJ2YWwoRyk7fWVsc2V7Y2xlYXJUaW1lb3V0KEcpO319fTt9 LGlzVmFsdWU6ZnVuY3Rpb24oRyl7cmV0dXJuKEIuaXNPYmplY3QoRyl8fEIuaXNT dHJpbmcoRyl8fEIuaXNOdW1iZXIoRyl8fEIuaXNCb29sZWFuKEcpKTt9fTtCLmhh c093blByb3BlcnR5PShBLmhhc093blByb3BlcnR5KT9mdW5jdGlvbihHLEgpe3Jl dHVybiBHJiZHLmhhc093blByb3BlcnR5KEgpO306ZnVuY3Rpb24oRyxIKXtyZXR1 cm4gIUIuaXNVbmRlZmluZWQoR1tIXSkmJkcuY29uc3RydWN0b3IucHJvdG90eXBl W0hdIT09R1tIXTt9O0QuYXVnbWVudE9iamVjdChCLEQsdHJ1ZSk7WUFIT08udXRp bC5MYW5nPUI7Qi5hdWdtZW50PUIuYXVnbWVudFByb3RvO1lBSE9PLmF1Z21lbnQ9 Qi5hdWdtZW50UHJvdG87WUFIT08uZXh0ZW5kPUIuZXh0ZW5kO30pKCk7WUFIT08u cmVnaXN0ZXIoInlhaG9vIixZQUhPTyx7dmVyc2lvbjoiMi43LjAiLGJ1aWxkOiIx Nzk5In0pOyhmdW5jdGlvbigpe1lBSE9PLmVudi5faWRfY291bnRlcj1ZQUhPTy5l bnYuX2lkX2NvdW50ZXJ8fDA7dmFyIEU9WUFIT08udXRpbCxMPVlBSE9PLmxhbmcs bT1ZQUhPTy5lbnYudWEsQT1ZQUhPTy5sYW5nLnRyaW0sZD17fSxoPXt9LE49L150 KD86YWJsZXxkfGgpJC9pLFg9L2NvbG9yJC9pLEs9d2luZG93LmRvY3VtZW50LFc9 Sy5kb2N1bWVudEVsZW1lbnQsZT0ib3duZXJEb2N1bWVudCIsbj0iZGVmYXVsdFZp ZXciLHY9ImRvY3VtZW50RWxlbWVudCIsdD0iY29tcGF0TW9kZSIsYj0ib2Zmc2V0 TGVmdCIsUD0ib2Zmc2V0VG9wIix1PSJvZmZzZXRQYXJlbnQiLFo9InBhcmVudE5v ZGUiLGw9Im5vZGVUeXBlIixDPSJ0YWdOYW1lIixPPSJzY3JvbGxMZWZ0IixpPSJz Y3JvbGxUb3AiLFE9ImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsdz0iZ2V0Q29tcHV0 ZWRTdHlsZSIsYT0iY3VycmVudFN0eWxlIixNPSJDU1MxQ29tcGF0IixjPSJCYWNr Q29tcGF0IixnPSJjbGFzcyIsRj0iY2xhc3NOYW1lIixKPSIiLEI9IiAiLHM9Iig/ Ol58XFxzKSIsaz0iKD89IHwkKSIsVT0iZyIscD0icG9zaXRpb24iLGY9ImZpeGVk IixWPSJyZWxhdGl2ZSIsaj0ibGVmdCIsbz0idG9wIixyPSJtZWRpdW0iLHE9ImJv cmRlckxlZnRXaWR0aCIsUj0iYm9yZGVyVG9wV2lkdGgiLEQ9bS5vcGVyYSxJPW0u d2Via2l0LEg9bS5nZWNrbyxUPW0uaWU7RS5Eb209e0NVU1RPTV9BVFRSSUJVVEVT OighVy5oYXNBdHRyaWJ1dGUpP3siZm9yIjoiaHRtbEZvciIsImNsYXNzIjpGfTp7 Imh0bWxGb3IiOiJmb3IiLCJjbGFzc05hbWUiOmd9LGdldDpmdW5jdGlvbih5KXt2 YXIgQUEsWSx6LHgsRztpZih5KXtpZih5W2xdfHx5Lml0ZW0pe3JldHVybiB5O31p Zih0eXBlb2YgeT09PSJzdHJpbmciKXtBQT15O3k9Sy5nZXRFbGVtZW50QnlJZCh5 KTtpZih5JiZ5LmlkPT09QUEpe3JldHVybiB5O31lbHNle2lmKHkmJksuYWxsKXt5 PW51bGw7WT1LLmFsbFtBQV07Zm9yKHg9MCxHPVkubGVuZ3RoO3g8RzsrK3gpe2lm KFlbeF0uaWQ9PT1BQSl7cmV0dXJuIFlbeF07fX19fXJldHVybiB5O31pZih5LkRP TV9FVkVOVFMpe3k9eS5nZXQoImVsZW1lbnQiKTt9aWYoImxlbmd0aCIgaW4geSl7 ej1bXTtmb3IoeD0wLEc9eS5sZW5ndGg7eDxHOysreCl7elt6Lmxlbmd0aF09RS5E b20uZ2V0KHlbeF0pO31yZXR1cm4gejt9cmV0dXJuIHk7fXJldHVybiBudWxsO30s Z2V0Q29tcHV0ZWRTdHlsZTpmdW5jdGlvbihHLFkpe2lmKHdpbmRvd1t3XSl7cmV0 dXJuIEdbZV1bbl1bd10oRyxudWxsKVtZXTt9ZWxzZXtpZihHW2FdKXtyZXR1cm4g RS5Eb20uSUVfQ29tcHV0ZWRTdHlsZS5nZXQoRyxZKTt9fX0sZ2V0U3R5bGU6ZnVu Y3Rpb24oRyxZKXtyZXR1cm4gRS5Eb20uYmF0Y2goRyxFLkRvbS5fZ2V0U3R5bGUs WSk7fSxfZ2V0U3R5bGU6ZnVuY3Rpb24oKXtpZih3aW5kb3dbd10pe3JldHVybiBm dW5jdGlvbihHLHkpe3k9KHk9PT0iZmxvYXQiKT95PSJjc3NGbG9hdCI6RS5Eb20u X3RvQ2FtZWwoeSk7dmFyIHg9Ry5zdHlsZVt5XSxZO2lmKCF4KXtZPUdbZV1bbl1b d10oRyxudWxsKTtpZihZKXt4PVlbeV07fX1yZXR1cm4geDt9O31lbHNle2lmKFdb YV0pe3JldHVybiBmdW5jdGlvbihHLHkpe3ZhciB4O3N3aXRjaCh5KXtjYXNlIm9w YWNpdHkiOng9MTAwO3RyeXt4PUcuZmlsdGVyc1siRFhJbWFnZVRyYW5zZm9ybS5N aWNyb3NvZnQuQWxwaGEiXS5vcGFjaXR5O31jYXRjaCh6KXt0cnl7eD1HLmZpbHRl cnMoImFscGhhIikub3BhY2l0eTt9Y2F0Y2goWSl7fX1yZXR1cm4geC8xMDA7Y2Fz ZSJmbG9hdCI6eT0ic3R5bGVGbG9hdCI7ZGVmYXVsdDp5PUUuRG9tLl90b0NhbWVs KHkpO3g9R1thXT9HW2FdW3ldOm51bGw7cmV0dXJuKEcuc3R5bGVbeV18fHgpO319 O319fSgpLHNldFN0eWxlOmZ1bmN0aW9uKEcsWSx4KXtFLkRvbS5iYXRjaChHLEUu RG9tLl9zZXRTdHlsZSx7cHJvcDpZLHZhbDp4fSk7fSxfc2V0U3R5bGU6ZnVuY3Rp b24oKXtpZihUKXtyZXR1cm4gZnVuY3Rpb24oWSxHKXt2YXIgeD1FLkRvbS5fdG9D YW1lbChHLnByb3ApLHk9Ry52YWw7aWYoWSl7c3dpdGNoKHgpe2Nhc2Uib3BhY2l0 eSI6aWYoTC5pc1N0cmluZyhZLnN0eWxlLmZpbHRlcikpe1kuc3R5bGUuZmlsdGVy PSJhbHBoYShvcGFjaXR5PSIreSoxMDArIikiO2lmKCFZW2FdfHwhWVthXS5oYXNM YXlvdXQpe1kuc3R5bGUuem9vbT0xO319YnJlYWs7Y2FzZSJmbG9hdCI6eD0ic3R5 bGVGbG9hdCI7ZGVmYXVsdDpZLnN0eWxlW3hdPXk7fX1lbHNle319O31lbHNle3Jl dHVybiBmdW5jdGlvbihZLEcpe3ZhciB4PUUuRG9tLl90b0NhbWVsKEcucHJvcCks eT1HLnZhbDtpZihZKXtpZih4PT0iZmxvYXQiKXt4PSJjc3NGbG9hdCI7fVkuc3R5 bGVbeF09eTt9ZWxzZXt9fTt9fSgpLGdldFhZOmZ1bmN0aW9uKEcpe3JldHVybiBF LkRvbS5iYXRjaChHLEUuRG9tLl9nZXRYWSk7fSxfY2FuUG9zaXRpb246ZnVuY3Rp b24oRyl7cmV0dXJuKEUuRG9tLl9nZXRTdHlsZShHLCJkaXNwbGF5IikhPT0ibm9u ZSImJkUuRG9tLl9pbkRvYyhHKSk7fSxfZ2V0WFk6ZnVuY3Rpb24oKXtpZihLW3Zd W1FdKXtyZXR1cm4gZnVuY3Rpb24oeSl7dmFyIHosWSxBQSxBRixBRSxBRCxBQyxH LHgsQUI9TWF0aC5mbG9vcixBRz1mYWxzZTtpZihFLkRvbS5fY2FuUG9zaXRpb24o eSkpe0FBPXlbUV0oKTtBRj15W2VdO3o9RS5Eb20uZ2V0RG9jdW1lbnRTY3JvbGxM ZWZ0KEFGKTtZPUUuRG9tLmdldERvY3VtZW50U2Nyb2xsVG9wKEFGKTtBRz1bQUIo QUFbal0pLEFCKEFBW29dKV07aWYoVCYmbS5pZTw4KXtBRT0yO0FEPTI7QUM9QUZb dF07Rz1TKEFGW3ZdLHEpO3g9UyhBRlt2XSxSKTtpZihtLmllPT09Nil7aWYoQUMh PT1jKXtBRT0wO0FEPTA7fX1pZigoQUM9PWMpKXtpZihHIT09cil7QUU9cGFyc2VJ bnQoRywxMCk7fWlmKHghPT1yKXtBRD1wYXJzZUludCh4LDEwKTt9fUFHWzBdLT1B RTtBR1sxXS09QUQ7fWlmKChZfHx6KSl7QUdbMF0rPXo7QUdbMV0rPVk7fUFHWzBd PUFCKEFHWzBdKTtBR1sxXT1BQihBR1sxXSk7fWVsc2V7fXJldHVybiBBRzt9O31l bHNle3JldHVybiBmdW5jdGlvbih5KXt2YXIgeCxZLEFBLEFCLEFDLHo9ZmFsc2Us Rz15O2lmKEUuRG9tLl9jYW5Qb3NpdGlvbih5KSl7ej1beVtiXSx5W1BdXTt4PUUu RG9tLmdldERvY3VtZW50U2Nyb2xsTGVmdCh5W2VdKTtZPUUuRG9tLmdldERvY3Vt ZW50U2Nyb2xsVG9wKHlbZV0pO0FDPSgoSHx8bS53ZWJraXQ+NTE5KT90cnVlOmZh bHNlKTt3aGlsZSgoRz1HW3VdKSl7elswXSs9R1tiXTt6WzFdKz1HW1BdO2lmKEFD KXt6PUUuRG9tLl9jYWxjQm9yZGVycyhHLHopO319aWYoRS5Eb20uX2dldFN0eWxl KHkscCkhPT1mKXtHPXk7d2hpbGUoKEc9R1taXSkmJkdbQ10pe0FBPUdbaV07QUI9 R1tPXTtpZihIJiYoRS5Eb20uX2dldFN0eWxlKEcsIm92ZXJmbG93IikhPT0idmlz aWJsZSIpKXt6PUUuRG9tLl9jYWxjQm9yZGVycyhHLHopO31pZihBQXx8QUIpe3pb MF0tPUFCO3pbMV0tPUFBO319elswXSs9eDt6WzFdKz1ZO31lbHNle2lmKEQpe3pb MF0tPXg7elsxXS09WTt9ZWxzZXtpZihJfHxIKXt6WzBdKz14O3pbMV0rPVk7fX19 elswXT1NYXRoLmZsb29yKHpbMF0pO3pbMV09TWF0aC5mbG9vcih6WzFdKTt9ZWxz ZXt9cmV0dXJuIHo7fTt9fSgpLGdldFg6ZnVuY3Rpb24oRyl7dmFyIFk9ZnVuY3Rp b24oeCl7cmV0dXJuIEUuRG9tLmdldFhZKHgpWzBdO307cmV0dXJuIEUuRG9tLmJh dGNoKEcsWSxFLkRvbSx0cnVlKTt9LGdldFk6ZnVuY3Rpb24oRyl7dmFyIFk9ZnVu Y3Rpb24oeCl7cmV0dXJuIEUuRG9tLmdldFhZKHgpWzFdO307cmV0dXJuIEUuRG9t LmJhdGNoKEcsWSxFLkRvbSx0cnVlKTt9LHNldFhZOmZ1bmN0aW9uKEcseCxZKXtF LkRvbS5iYXRjaChHLEUuRG9tLl9zZXRYWSx7cG9zOngsbm9SZXRyeTpZfSk7fSxf c2V0WFk6ZnVuY3Rpb24oRyx6KXt2YXIgQUE9RS5Eb20uX2dldFN0eWxlKEcscCks eT1FLkRvbS5zZXRTdHlsZSxBRD16LnBvcyxZPXoubm9SZXRyeSxBQj1bcGFyc2VJ bnQoRS5Eb20uZ2V0Q29tcHV0ZWRTdHlsZShHLGopLDEwKSxwYXJzZUludChFLkRv bS5nZXRDb21wdXRlZFN0eWxlKEcsbyksMTApXSxBQyx4O2lmKEFBPT0ic3RhdGlj Iil7QUE9Vjt5KEcscCxBQSk7fUFDPUUuRG9tLl9nZXRYWShHKTtpZighQUR8fEFD PT09ZmFsc2Upe3JldHVybiBmYWxzZTt9aWYoaXNOYU4oQUJbMF0pKXtBQlswXT0o QUE9PVYpPzA6R1tiXTt9aWYoaXNOYU4oQUJbMV0pKXtBQlsxXT0oQUE9PVYpPzA6 R1tQXTt9aWYoQURbMF0hPT1udWxsKXt5KEcsaixBRFswXS1BQ1swXStBQlswXSsi cHgiKTt9aWYoQURbMV0hPT1udWxsKXt5KEcsbyxBRFsxXS1BQ1sxXStBQlsxXSsi cHgiKTt9aWYoIVkpe3g9RS5Eb20uX2dldFhZKEcpO2lmKChBRFswXSE9PW51bGwm JnhbMF0hPUFEWzBdKXx8KEFEWzFdIT09bnVsbCYmeFsxXSE9QURbMV0pKXtFLkRv bS5fc2V0WFkoRyx7cG9zOkFELG5vUmV0cnk6dHJ1ZX0pO319fSxzZXRYOmZ1bmN0 aW9uKFksRyl7RS5Eb20uc2V0WFkoWSxbRyxudWxsXSk7fSxzZXRZOmZ1bmN0aW9u KEcsWSl7RS5Eb20uc2V0WFkoRyxbbnVsbCxZXSk7fSxnZXRSZWdpb246ZnVuY3Rp b24oRyl7dmFyIFk9ZnVuY3Rpb24oeCl7dmFyIHk9ZmFsc2U7aWYoRS5Eb20uX2Nh blBvc2l0aW9uKHgpKXt5PUUuUmVnaW9uLmdldFJlZ2lvbih4KTt9ZWxzZXt9cmV0 dXJuIHk7fTtyZXR1cm4gRS5Eb20uYmF0Y2goRyxZLEUuRG9tLHRydWUpO30sZ2V0 Q2xpZW50V2lkdGg6ZnVuY3Rpb24oKXtyZXR1cm4gRS5Eb20uZ2V0Vmlld3BvcnRX aWR0aCgpO30sZ2V0Q2xpZW50SGVpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIEUuRG9t LmdldFZpZXdwb3J0SGVpZ2h0KCk7fSxnZXRFbGVtZW50c0J5Q2xhc3NOYW1lOmZ1 bmN0aW9uKEFCLEFGLEFDLEFFLHgsQUQpe0FCPUwudHJpbShBQik7QUY9QUZ8fCIq IjtBQz0oQUMpP0UuRG9tLmdldChBQyk6bnVsbHx8SztpZighQUMpe3JldHVybltd O312YXIgWT1bXSxHPUFDLmdldEVsZW1lbnRzQnlUYWdOYW1lKEFGKSx6PUUuRG9t Lmhhc0NsYXNzO2Zvcih2YXIgeT0wLEFBPUcubGVuZ3RoO3k8QUE7Kyt5KXtpZih6 KEdbeV0sQUIpKXtZW1kubGVuZ3RoXT1HW3ldO319aWYoQUUpe0UuRG9tLmJhdGNo KFksQUUseCxBRCk7fXJldHVybiBZO30saGFzQ2xhc3M6ZnVuY3Rpb24oWSxHKXty ZXR1cm4gRS5Eb20uYmF0Y2goWSxFLkRvbS5faGFzQ2xhc3MsRyk7fSxfaGFzQ2xh c3M6ZnVuY3Rpb24oeCxZKXt2YXIgRz1mYWxzZSx5O2lmKHgmJlkpe3k9RS5Eb20u Z2V0QXR0cmlidXRlKHgsRil8fEo7aWYoWS5leGVjKXtHPVkudGVzdCh5KTt9ZWxz ZXtHPVkmJihCK3krQikuaW5kZXhPZihCK1krQik+LTE7fX1lbHNle31yZXR1cm4g Rzt9LGFkZENsYXNzOmZ1bmN0aW9uKFksRyl7cmV0dXJuIEUuRG9tLmJhdGNoKFks RS5Eb20uX2FkZENsYXNzLEcpO30sX2FkZENsYXNzOmZ1bmN0aW9uKHgsWSl7dmFy IEc9ZmFsc2UseTtpZih4JiZZKXt5PUUuRG9tLmdldEF0dHJpYnV0ZSh4LEYpfHxK O2lmKCFFLkRvbS5faGFzQ2xhc3MoeCxZKSl7RS5Eb20uc2V0QXR0cmlidXRlKHgs RixBKHkrQitZKSk7Rz10cnVlO319ZWxzZXt9cmV0dXJuIEc7fSxyZW1vdmVDbGFz czpmdW5jdGlvbihZLEcpe3JldHVybiBFLkRvbS5iYXRjaChZLEUuRG9tLl9yZW1v dmVDbGFzcyxHKTt9LF9yZW1vdmVDbGFzczpmdW5jdGlvbih5LHgpe3ZhciBZPWZh bHNlLEFBLHosRztpZih5JiZ4KXtBQT1FLkRvbS5nZXRBdHRyaWJ1dGUoeSxGKXx8 SjtFLkRvbS5zZXRBdHRyaWJ1dGUoeSxGLEFBLnJlcGxhY2UoRS5Eb20uX2dldENs YXNzUmVnZXgoeCksSikpO3o9RS5Eb20uZ2V0QXR0cmlidXRlKHksRik7aWYoQUEh PT16KXtFLkRvbS5zZXRBdHRyaWJ1dGUoeSxGLEEoeikpO1k9dHJ1ZTtpZihFLkRv bS5nZXRBdHRyaWJ1dGUoeSxGKT09PSIiKXtHPSh5Lmhhc0F0dHJpYnV0ZSYmeS5o YXNBdHRyaWJ1dGUoZykpP2c6Rjt5LnJlbW92ZUF0dHJpYnV0ZShHKTt9fX1lbHNl e31yZXR1cm4gWTt9LHJlcGxhY2VDbGFzczpmdW5jdGlvbih4LFksRyl7cmV0dXJu IEUuRG9tLmJhdGNoKHgsRS5Eb20uX3JlcGxhY2VDbGFzcyx7ZnJvbTpZLHRvOkd9 KTsKfSxfcmVwbGFjZUNsYXNzOmZ1bmN0aW9uKHkseCl7dmFyIFksQUIsQUEsRz1m YWxzZSx6O2lmKHkmJngpe0FCPXguZnJvbTtBQT14LnRvO2lmKCFBQSl7Rz1mYWxz ZTt9ZWxzZXtpZighQUIpe0c9RS5Eb20uX2FkZENsYXNzKHkseC50byk7fWVsc2V7 aWYoQUIhPT1BQSl7ej1FLkRvbS5nZXRBdHRyaWJ1dGUoeSxGKXx8SjtZPShCK3ou cmVwbGFjZShFLkRvbS5fZ2V0Q2xhc3NSZWdleChBQiksQitBQSkpLnNwbGl0KEUu RG9tLl9nZXRDbGFzc1JlZ2V4KEFBKSk7WS5zcGxpY2UoMSwwLEIrQUEpO0UuRG9t LnNldEF0dHJpYnV0ZSh5LEYsQShZLmpvaW4oSikpKTtHPXRydWU7fX19fWVsc2V7 fXJldHVybiBHO30sZ2VuZXJhdGVJZDpmdW5jdGlvbihHLHgpe3g9eHx8Inl1aS1n ZW4iO3ZhciBZPWZ1bmN0aW9uKHkpe2lmKHkmJnkuaWQpe3JldHVybiB5LmlkO312 YXIgej14K1lBSE9PLmVudi5faWRfY291bnRlcisrO2lmKHkpe2lmKHlbZV0uZ2V0 RWxlbWVudEJ5SWQoeikpe3JldHVybiBFLkRvbS5nZW5lcmF0ZUlkKHkseit4KTt9 eS5pZD16O31yZXR1cm4gejt9O3JldHVybiBFLkRvbS5iYXRjaChHLFksRS5Eb20s dHJ1ZSl8fFkuYXBwbHkoRS5Eb20sYXJndW1lbnRzKTt9LGlzQW5jZXN0b3I6ZnVu Y3Rpb24oWSx4KXtZPUUuRG9tLmdldChZKTt4PUUuRG9tLmdldCh4KTt2YXIgRz1m YWxzZTtpZigoWSYmeCkmJihZW2xdJiZ4W2xdKSl7aWYoWS5jb250YWlucyYmWSE9 PXgpe0c9WS5jb250YWlucyh4KTt9ZWxzZXtpZihZLmNvbXBhcmVEb2N1bWVudFBv c2l0aW9uKXtHPSEhKFkuY29tcGFyZURvY3VtZW50UG9zaXRpb24oeCkmMTYpO319 fWVsc2V7fXJldHVybiBHO30saW5Eb2N1bWVudDpmdW5jdGlvbihHLFkpe3JldHVy biBFLkRvbS5faW5Eb2MoRS5Eb20uZ2V0KEcpLFkpO30sX2luRG9jOmZ1bmN0aW9u KFkseCl7dmFyIEc9ZmFsc2U7aWYoWSYmWVtDXSl7eD14fHxZW2VdO0c9RS5Eb20u aXNBbmNlc3Rvcih4W3ZdLFkpO31lbHNle31yZXR1cm4gRzt9LGdldEVsZW1lbnRz Qnk6ZnVuY3Rpb24oWSxBRixBQixBRCx5LEFDLEFFKXtBRj1BRnx8IioiO0FCPShB Qik/RS5Eb20uZ2V0KEFCKTpudWxsfHxLO2lmKCFBQil7cmV0dXJuW107fXZhciB4 PVtdLEc9QUIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoQUYpO2Zvcih2YXIgej0wLEFB PUcubGVuZ3RoO3o8QUE7Kyt6KXtpZihZKEdbel0pKXtpZihBRSl7eD1HW3pdO2Jy ZWFrO31lbHNle3hbeC5sZW5ndGhdPUdbel07fX19aWYoQUQpe0UuRG9tLmJhdGNo KHgsQUQseSxBQyk7fXJldHVybiB4O30sZ2V0RWxlbWVudEJ5OmZ1bmN0aW9uKHgs RyxZKXtyZXR1cm4gRS5Eb20uZ2V0RWxlbWVudHNCeSh4LEcsWSxudWxsLG51bGws bnVsbCx0cnVlKTt9LGJhdGNoOmZ1bmN0aW9uKHgsQUIsQUEseil7dmFyIHk9W10s WT0oeik/QUE6d2luZG93O3g9KHgmJih4W0NdfHx4Lml0ZW0pKT94OkUuRG9tLmdl dCh4KTtpZih4JiZBQil7aWYoeFtDXXx8eC5sZW5ndGg9PT11bmRlZmluZWQpe3Jl dHVybiBBQi5jYWxsKFkseCxBQSk7fWZvcih2YXIgRz0wO0c8eC5sZW5ndGg7KytH KXt5W3kubGVuZ3RoXT1BQi5jYWxsKFkseFtHXSxBQSk7fX1lbHNle3JldHVybiBm YWxzZTt9cmV0dXJuIHk7fSxnZXREb2N1bWVudEhlaWdodDpmdW5jdGlvbigpe3Zh ciBZPShLW3RdIT1NfHxJKT9LLmJvZHkuc2Nyb2xsSGVpZ2h0Olcuc2Nyb2xsSGVp Z2h0LEc9TWF0aC5tYXgoWSxFLkRvbS5nZXRWaWV3cG9ydEhlaWdodCgpKTtyZXR1 cm4gRzt9LGdldERvY3VtZW50V2lkdGg6ZnVuY3Rpb24oKXt2YXIgWT0oS1t0XSE9 TXx8SSk/Sy5ib2R5LnNjcm9sbFdpZHRoOlcuc2Nyb2xsV2lkdGgsRz1NYXRoLm1h eChZLEUuRG9tLmdldFZpZXdwb3J0V2lkdGgoKSk7cmV0dXJuIEc7fSxnZXRWaWV3 cG9ydEhlaWdodDpmdW5jdGlvbigpe3ZhciBHPXNlbGYuaW5uZXJIZWlnaHQsWT1L W3RdO2lmKChZfHxUKSYmIUQpe0c9KFk9PU0pP1cuY2xpZW50SGVpZ2h0OksuYm9k eS5jbGllbnRIZWlnaHQ7fXJldHVybiBHO30sZ2V0Vmlld3BvcnRXaWR0aDpmdW5j dGlvbigpe3ZhciBHPXNlbGYuaW5uZXJXaWR0aCxZPUtbdF07aWYoWXx8VCl7Rz0o WT09TSk/Vy5jbGllbnRXaWR0aDpLLmJvZHkuY2xpZW50V2lkdGg7fXJldHVybiBH O30sZ2V0QW5jZXN0b3JCeTpmdW5jdGlvbihHLFkpe3doaWxlKChHPUdbWl0pKXtp ZihFLkRvbS5fdGVzdEVsZW1lbnQoRyxZKSl7cmV0dXJuIEc7fX1yZXR1cm4gbnVs bDt9LGdldEFuY2VzdG9yQnlDbGFzc05hbWU6ZnVuY3Rpb24oWSxHKXtZPUUuRG9t LmdldChZKTtpZighWSl7cmV0dXJuIG51bGw7fXZhciB4PWZ1bmN0aW9uKHkpe3Jl dHVybiBFLkRvbS5oYXNDbGFzcyh5LEcpO307cmV0dXJuIEUuRG9tLmdldEFuY2Vz dG9yQnkoWSx4KTt9LGdldEFuY2VzdG9yQnlUYWdOYW1lOmZ1bmN0aW9uKFksRyl7 WT1FLkRvbS5nZXQoWSk7aWYoIVkpe3JldHVybiBudWxsO312YXIgeD1mdW5jdGlv bih5KXtyZXR1cm4geVtDXSYmeVtDXS50b1VwcGVyQ2FzZSgpPT1HLnRvVXBwZXJD YXNlKCk7fTtyZXR1cm4gRS5Eb20uZ2V0QW5jZXN0b3JCeShZLHgpO30sZ2V0UHJl dmlvdXNTaWJsaW5nQnk6ZnVuY3Rpb24oRyxZKXt3aGlsZShHKXtHPUcucHJldmlv dXNTaWJsaW5nO2lmKEUuRG9tLl90ZXN0RWxlbWVudChHLFkpKXtyZXR1cm4gRzt9 fXJldHVybiBudWxsO30sZ2V0UHJldmlvdXNTaWJsaW5nOmZ1bmN0aW9uKEcpe0c9 RS5Eb20uZ2V0KEcpO2lmKCFHKXtyZXR1cm4gbnVsbDt9cmV0dXJuIEUuRG9tLmdl dFByZXZpb3VzU2libGluZ0J5KEcpO30sZ2V0TmV4dFNpYmxpbmdCeTpmdW5jdGlv bihHLFkpe3doaWxlKEcpe0c9Ry5uZXh0U2libGluZztpZihFLkRvbS5fdGVzdEVs ZW1lbnQoRyxZKSl7cmV0dXJuIEc7fX1yZXR1cm4gbnVsbDt9LGdldE5leHRTaWJs aW5nOmZ1bmN0aW9uKEcpe0c9RS5Eb20uZ2V0KEcpO2lmKCFHKXtyZXR1cm4gbnVs bDt9cmV0dXJuIEUuRG9tLmdldE5leHRTaWJsaW5nQnkoRyk7fSxnZXRGaXJzdENo aWxkQnk6ZnVuY3Rpb24oRyx4KXt2YXIgWT0oRS5Eb20uX3Rlc3RFbGVtZW50KEcu Zmlyc3RDaGlsZCx4KSk/Ry5maXJzdENoaWxkOm51bGw7cmV0dXJuIFl8fEUuRG9t LmdldE5leHRTaWJsaW5nQnkoRy5maXJzdENoaWxkLHgpO30sZ2V0Rmlyc3RDaGls ZDpmdW5jdGlvbihHLFkpe0c9RS5Eb20uZ2V0KEcpO2lmKCFHKXtyZXR1cm4gbnVs bDt9cmV0dXJuIEUuRG9tLmdldEZpcnN0Q2hpbGRCeShHKTt9LGdldExhc3RDaGls ZEJ5OmZ1bmN0aW9uKEcseCl7aWYoIUcpe3JldHVybiBudWxsO312YXIgWT0oRS5E b20uX3Rlc3RFbGVtZW50KEcubGFzdENoaWxkLHgpKT9HLmxhc3RDaGlsZDpudWxs O3JldHVybiBZfHxFLkRvbS5nZXRQcmV2aW91c1NpYmxpbmdCeShHLmxhc3RDaGls ZCx4KTt9LGdldExhc3RDaGlsZDpmdW5jdGlvbihHKXtHPUUuRG9tLmdldChHKTty ZXR1cm4gRS5Eb20uZ2V0TGFzdENoaWxkQnkoRyk7fSxnZXRDaGlsZHJlbkJ5OmZ1 bmN0aW9uKFkseSl7dmFyIHg9RS5Eb20uZ2V0Rmlyc3RDaGlsZEJ5KFkseSksRz14 P1t4XTpbXTtFLkRvbS5nZXROZXh0U2libGluZ0J5KHgsZnVuY3Rpb24oeil7aWYo IXl8fHkoeikpe0dbRy5sZW5ndGhdPXo7fXJldHVybiBmYWxzZTt9KTtyZXR1cm4g Rzt9LGdldENoaWxkcmVuOmZ1bmN0aW9uKEcpe0c9RS5Eb20uZ2V0KEcpO2lmKCFH KXt9cmV0dXJuIEUuRG9tLmdldENoaWxkcmVuQnkoRyk7fSxnZXREb2N1bWVudFNj cm9sbExlZnQ6ZnVuY3Rpb24oRyl7Rz1HfHxLO3JldHVybiBNYXRoLm1heChHW3Zd LnNjcm9sbExlZnQsRy5ib2R5LnNjcm9sbExlZnQpO30sZ2V0RG9jdW1lbnRTY3Jv bGxUb3A6ZnVuY3Rpb24oRyl7Rz1HfHxLO3JldHVybiBNYXRoLm1heChHW3ZdLnNj cm9sbFRvcCxHLmJvZHkuc2Nyb2xsVG9wKTt9LGluc2VydEJlZm9yZTpmdW5jdGlv bihZLEcpe1k9RS5Eb20uZ2V0KFkpO0c9RS5Eb20uZ2V0KEcpO2lmKCFZfHwhR3x8 IUdbWl0pe3JldHVybiBudWxsO31yZXR1cm4gR1taXS5pbnNlcnRCZWZvcmUoWSxH KTt9LGluc2VydEFmdGVyOmZ1bmN0aW9uKFksRyl7WT1FLkRvbS5nZXQoWSk7Rz1F LkRvbS5nZXQoRyk7aWYoIVl8fCFHfHwhR1taXSl7cmV0dXJuIG51bGw7fWlmKEcu bmV4dFNpYmxpbmcpe3JldHVybiBHW1pdLmluc2VydEJlZm9yZShZLEcubmV4dFNp YmxpbmcpO31lbHNle3JldHVybiBHW1pdLmFwcGVuZENoaWxkKFkpO319LGdldENs aWVudFJlZ2lvbjpmdW5jdGlvbigpe3ZhciB4PUUuRG9tLmdldERvY3VtZW50U2Ny b2xsVG9wKCksWT1FLkRvbS5nZXREb2N1bWVudFNjcm9sbExlZnQoKSx5PUUuRG9t LmdldFZpZXdwb3J0V2lkdGgoKStZLEc9RS5Eb20uZ2V0Vmlld3BvcnRIZWlnaHQo KSt4O3JldHVybiBuZXcgRS5SZWdpb24oeCx5LEcsWSk7fSxzZXRBdHRyaWJ1dGU6 ZnVuY3Rpb24oWSxHLHgpe0c9RS5Eb20uQ1VTVE9NX0FUVFJJQlVURVNbR118fEc7 WS5zZXRBdHRyaWJ1dGUoRyx4KTt9LGdldEF0dHJpYnV0ZTpmdW5jdGlvbihZLEcp e0c9RS5Eb20uQ1VTVE9NX0FUVFJJQlVURVNbR118fEc7cmV0dXJuIFkuZ2V0QXR0 cmlidXRlKEcpO30sX3RvQ2FtZWw6ZnVuY3Rpb24oWSl7dmFyIHg9ZDtmdW5jdGlv biBHKHkseil7cmV0dXJuIHoudG9VcHBlckNhc2UoKTt9cmV0dXJuIHhbWV18fCh4 W1ldPVkuaW5kZXhPZigiLSIpPT09LTE/WTpZLnJlcGxhY2UoLy0oW2Etel0pL2dp LEcpKTt9LF9nZXRDbGFzc1JlZ2V4OmZ1bmN0aW9uKFkpe3ZhciBHO2lmKFkhPT11 bmRlZmluZWQpe2lmKFkuZXhlYyl7Rz1ZO31lbHNle0c9aFtZXTtpZighRyl7WT1Z LnJlcGxhY2UoRS5Eb20uX3BhdHRlcm5zLkNMQVNTX1JFX1RPS0VOUywiXFwkMSIp O0c9aFtZXT1uZXcgUmVnRXhwKHMrWStrLFUpO319fXJldHVybiBHO30sX3BhdHRl cm5zOntST09UX1RBRzovXmJvZHl8aHRtbCQvaSxDTEFTU19SRV9UT0tFTlM6Lyhb XC5cKFwpXF5cJFwqXCtcP1x8XFtcXVx7XH1dKS9nfSxfdGVzdEVsZW1lbnQ6ZnVu Y3Rpb24oRyxZKXtyZXR1cm4gRyYmR1tsXT09MSYmKCFZfHxZKEcpKTt9LF9jYWxj Qm9yZGVyczpmdW5jdGlvbih4LHkpe3ZhciBZPXBhcnNlSW50KEUuRG9tW3ddKHgs UiksMTApfHwwLEc9cGFyc2VJbnQoRS5Eb21bd10oeCxxKSwxMCl8fDA7aWYoSCl7 aWYoTi50ZXN0KHhbQ10pKXtZPTA7Rz0wO319eVswXSs9Rzt5WzFdKz1ZO3JldHVy biB5O319O3ZhciBTPUUuRG9tW3ddO2lmKG0ub3BlcmEpe0UuRG9tW3ddPWZ1bmN0 aW9uKFksRyl7dmFyIHg9UyhZLEcpO2lmKFgudGVzdChHKSl7eD1FLkRvbS5Db2xv ci50b1JHQih4KTt9cmV0dXJuIHg7fTt9aWYobS53ZWJraXQpe0UuRG9tW3ddPWZ1 bmN0aW9uKFksRyl7dmFyIHg9UyhZLEcpO2lmKHg9PT0icmdiYSgwLCAwLCAwLCAw KSIpe3g9InRyYW5zcGFyZW50Ijt9cmV0dXJuIHg7fTt9fSkoKTtZQUhPTy51dGls LlJlZ2lvbj1mdW5jdGlvbihDLEQsQSxCKXt0aGlzLnRvcD1DO3RoaXMueT1DO3Ro aXNbMV09Qzt0aGlzLnJpZ2h0PUQ7dGhpcy5ib3R0b209QTt0aGlzLmxlZnQ9Qjt0 aGlzLng9Qjt0aGlzWzBdPUI7dGhpcy53aWR0aD10aGlzLnJpZ2h0LXRoaXMubGVm dDt0aGlzLmhlaWdodD10aGlzLmJvdHRvbS10aGlzLnRvcDt9O1lBSE9PLnV0aWwu UmVnaW9uLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbihBKXtyZXR1cm4oQS5s ZWZ0Pj10aGlzLmxlZnQmJkEucmlnaHQ8PXRoaXMucmlnaHQmJkEudG9wPj10aGlz LnRvcCYmQS5ib3R0b208PXRoaXMuYm90dG9tKTt9O1lBSE9PLnV0aWwuUmVnaW9u LnByb3RvdHlwZS5nZXRBcmVhPWZ1bmN0aW9uKCl7cmV0dXJuKCh0aGlzLmJvdHRv bS10aGlzLnRvcCkqKHRoaXMucmlnaHQtdGhpcy5sZWZ0KSk7fTtZQUhPTy51dGls LlJlZ2lvbi5wcm90b3R5cGUuaW50ZXJzZWN0PWZ1bmN0aW9uKEUpe3ZhciBDPU1h dGgubWF4KHRoaXMudG9wLEUudG9wKSxEPU1hdGgubWluKHRoaXMucmlnaHQsRS5y aWdodCksQT1NYXRoLm1pbih0aGlzLmJvdHRvbSxFLmJvdHRvbSksQj1NYXRoLm1h eCh0aGlzLmxlZnQsRS5sZWZ0KTtpZihBPj1DJiZEPj1CKXtyZXR1cm4gbmV3IFlB SE9PLnV0aWwuUmVnaW9uKEMsRCxBLEIpOwp9ZWxzZXtyZXR1cm4gbnVsbDt9fTtZ QUhPTy51dGlsLlJlZ2lvbi5wcm90b3R5cGUudW5pb249ZnVuY3Rpb24oRSl7dmFy IEM9TWF0aC5taW4odGhpcy50b3AsRS50b3ApLEQ9TWF0aC5tYXgodGhpcy5yaWdo dCxFLnJpZ2h0KSxBPU1hdGgubWF4KHRoaXMuYm90dG9tLEUuYm90dG9tKSxCPU1h dGgubWluKHRoaXMubGVmdCxFLmxlZnQpO3JldHVybiBuZXcgWUFIT08udXRpbC5S ZWdpb24oQyxELEEsQik7fTtZQUhPTy51dGlsLlJlZ2lvbi5wcm90b3R5cGUudG9T dHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4oIlJlZ2lvbiB7IisidG9wOiAiK3RoaXMu dG9wKyIsIHJpZ2h0OiAiK3RoaXMucmlnaHQrIiwgYm90dG9tOiAiK3RoaXMuYm90 dG9tKyIsIGxlZnQ6ICIrdGhpcy5sZWZ0KyIsIGhlaWdodDogIit0aGlzLmhlaWdo dCsiLCB3aWR0aDogIit0aGlzLndpZHRoKyJ9Iik7fTtZQUhPTy51dGlsLlJlZ2lv bi5nZXRSZWdpb249ZnVuY3Rpb24oRCl7dmFyIEY9WUFIT08udXRpbC5Eb20uZ2V0 WFkoRCksQz1GWzFdLEU9RlswXStELm9mZnNldFdpZHRoLEE9RlsxXStELm9mZnNl dEhlaWdodCxCPUZbMF07cmV0dXJuIG5ldyBZQUhPTy51dGlsLlJlZ2lvbihDLEUs QSxCKTt9O1lBSE9PLnV0aWwuUG9pbnQ9ZnVuY3Rpb24oQSxCKXtpZihZQUhPTy5s YW5nLmlzQXJyYXkoQSkpe0I9QVsxXTtBPUFbMF07fVlBSE9PLnV0aWwuUG9pbnQu c3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsQixBLEIsQSk7fTtZQUhP Ty5leHRlbmQoWUFIT08udXRpbC5Qb2ludCxZQUhPTy51dGlsLlJlZ2lvbik7KGZ1 bmN0aW9uKCl7dmFyIEI9WUFIT08udXRpbCxBPSJjbGllbnRUb3AiLEY9ImNsaWVu dExlZnQiLEo9InBhcmVudE5vZGUiLEs9InJpZ2h0IixXPSJoYXNMYXlvdXQiLEk9 InB4IixVPSJvcGFjaXR5IixMPSJhdXRvIixEPSJib3JkZXJMZWZ0V2lkdGgiLEc9 ImJvcmRlclRvcFdpZHRoIixQPSJib3JkZXJSaWdodFdpZHRoIixWPSJib3JkZXJC b3R0b21XaWR0aCIsUz0idmlzaWJsZSIsUT0idHJhbnNwYXJlbnQiLE49ImhlaWdo dCIsRT0id2lkdGgiLEg9InN0eWxlIixUPSJjdXJyZW50U3R5bGUiLFI9L153aWR0 aHxoZWlnaHQkLyxPPS9eKFxkWy5cZF0qKSsoZW18ZXh8cHh8Z2R8cmVtfHZ3fHZo fHZtfGNofG1tfGNtfGlufHB0fHBjfGRlZ3xyYWR8bXN8c3xoenxraHp8JSl7MX0/ L2ksTT17Z2V0OmZ1bmN0aW9uKFgsWil7dmFyIFk9IiIsYT1YW1RdW1pdO2lmKFo9 PT1VKXtZPUIuRG9tLmdldFN0eWxlKFgsVSk7fWVsc2V7aWYoIWF8fChhLmluZGV4 T2YmJmEuaW5kZXhPZihJKT4tMSkpe1k9YTt9ZWxzZXtpZihCLkRvbS5JRV9DT01Q VVRFRFtaXSl7WT1CLkRvbS5JRV9DT01QVVRFRFtaXShYLFopO31lbHNle2lmKE8u dGVzdChhKSl7WT1CLkRvbS5JRS5Db21wdXRlZFN0eWxlLmdldFBpeGVsKFgsWik7 fWVsc2V7WT1hO319fX1yZXR1cm4gWTt9LGdldE9mZnNldDpmdW5jdGlvbihaLGUp e3ZhciBiPVpbVF1bZV0sWD1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc3Vi c3RyKDEpLGM9Im9mZnNldCIrWCxZPSJwaXhlbCIrWCxhPSIiLGQ7aWYoYj09TCl7 ZD1aW2NdO2lmKGQ9PT11bmRlZmluZWQpe2E9MDt9YT1kO2lmKFIudGVzdChlKSl7 WltIXVtlXT1kO2lmKFpbY10+ZCl7YT1kLShaW2NdLWQpO31aW0hdW2VdPUw7fX1l bHNle2lmKCFaW0hdW1ldJiYhWltIXVtlXSl7WltIXVtlXT1iO31hPVpbSF1bWV07 fXJldHVybiBhK0k7fSxnZXRCb3JkZXJXaWR0aDpmdW5jdGlvbihYLFope3ZhciBZ PW51bGw7aWYoIVhbVF1bV10pe1hbSF0uem9vbT0xO31zd2l0Y2goWil7Y2FzZSBH Olk9WFtBXTticmVhaztjYXNlIFY6WT1YLm9mZnNldEhlaWdodC1YLmNsaWVudEhl aWdodC1YW0FdO2JyZWFrO2Nhc2UgRDpZPVhbRl07YnJlYWs7Y2FzZSBQOlk9WC5v ZmZzZXRXaWR0aC1YLmNsaWVudFdpZHRoLVhbRl07YnJlYWs7fXJldHVybiBZK0k7 fSxnZXRQaXhlbDpmdW5jdGlvbihZLFgpe3ZhciBhPW51bGwsYj1ZW1RdW0tdLFo9 WVtUXVtYXTtZW0hdW0tdPVo7YT1ZW0hdLnBpeGVsUmlnaHQ7WVtIXVtLXT1iO3Jl dHVybiBhK0k7fSxnZXRNYXJnaW46ZnVuY3Rpb24oWSxYKXt2YXIgWjtpZihZW1Rd W1hdPT1MKXtaPTArSTt9ZWxzZXtaPUIuRG9tLklFLkNvbXB1dGVkU3R5bGUuZ2V0 UGl4ZWwoWSxYKTt9cmV0dXJuIFo7fSxnZXRWaXNpYmlsaXR5OmZ1bmN0aW9uKFks WCl7dmFyIFo7d2hpbGUoKFo9WVtUXSkmJlpbWF09PSJpbmhlcml0Iil7WT1ZW0pd O31yZXR1cm4oWik/WltYXTpTO30sZ2V0Q29sb3I6ZnVuY3Rpb24oWSxYKXtyZXR1 cm4gQi5Eb20uQ29sb3IudG9SR0IoWVtUXVtYXSl8fFE7fSxnZXRCb3JkZXJDb2xv cjpmdW5jdGlvbihZLFgpe3ZhciBaPVlbVF0sYT1aW1hdfHxaLmNvbG9yO3JldHVy biBCLkRvbS5Db2xvci50b1JHQihCLkRvbS5Db2xvci50b0hleChhKSk7fX0sQz17 fTtDLnRvcD1DLnJpZ2h0PUMuYm90dG9tPUMubGVmdD1DW0VdPUNbTl09TS5nZXRP ZmZzZXQ7Qy5jb2xvcj1NLmdldENvbG9yO0NbR109Q1tQXT1DW1ZdPUNbRF09TS5n ZXRCb3JkZXJXaWR0aDtDLm1hcmdpblRvcD1DLm1hcmdpblJpZ2h0PUMubWFyZ2lu Qm90dG9tPUMubWFyZ2luTGVmdD1NLmdldE1hcmdpbjtDLnZpc2liaWxpdHk9TS5n ZXRWaXNpYmlsaXR5O0MuYm9yZGVyQ29sb3I9Qy5ib3JkZXJUb3BDb2xvcj1DLmJv cmRlclJpZ2h0Q29sb3I9Qy5ib3JkZXJCb3R0b21Db2xvcj1DLmJvcmRlckxlZnRD b2xvcj1NLmdldEJvcmRlckNvbG9yO0IuRG9tLklFX0NPTVBVVEVEPUM7Qi5Eb20u SUVfQ29tcHV0ZWRTdHlsZT1NO30pKCk7KGZ1bmN0aW9uKCl7dmFyIEM9InRvU3Ry aW5nIixBPXBhcnNlSW50LEI9UmVnRXhwLEQ9WUFIT08udXRpbDtELkRvbS5Db2xv cj17S0VZV09SRFM6e2JsYWNrOiIwMDAiLHNpbHZlcjoiYzBjMGMwIixncmF5OiI4 MDgwODAiLHdoaXRlOiJmZmYiLG1hcm9vbjoiODAwMDAwIixyZWQ6ImYwMCIscHVy cGxlOiI4MDAwODAiLGZ1Y2hzaWE6ImYwZiIsZ3JlZW46IjAwODAwMCIsbGltZToi MGYwIixvbGl2ZToiODA4MDAwIix5ZWxsb3c6ImZmMCIsbmF2eToiMDAwMDgwIixi bHVlOiIwMGYiLHRlYWw6IjAwODA4MCIsYXF1YToiMGZmIn0scmVfUkdCOi9ecmdi XCgoWzAtOV0rKVxzKixccyooWzAtOV0rKVxzKixccyooWzAtOV0rKVwpJC9pLHJl X2hleDovXiM/KFswLTlBLUZdezJ9KShbMC05QS1GXXsyfSkoWzAtOUEtRl17Mn0p JC9pLHJlX2hleDM6LyhbMC05QS1GXSkvZ2ksdG9SR0I6ZnVuY3Rpb24oRSl7aWYo IUQuRG9tLkNvbG9yLnJlX1JHQi50ZXN0KEUpKXtFPUQuRG9tLkNvbG9yLnRvSGV4 KEUpO31pZihELkRvbS5Db2xvci5yZV9oZXguZXhlYyhFKSl7RT0icmdiKCIrW0Eo Qi4kMSwxNiksQShCLiQyLDE2KSxBKEIuJDMsMTYpXS5qb2luKCIsICIpKyIpIjt9 cmV0dXJuIEU7fSx0b0hleDpmdW5jdGlvbihIKXtIPUQuRG9tLkNvbG9yLktFWVdP UkRTW0hdfHxIO2lmKEQuRG9tLkNvbG9yLnJlX1JHQi5leGVjKEgpKXt2YXIgRz0o Qi4kMS5sZW5ndGg9PT0xKT8iMCIrQi4kMTpOdW1iZXIoQi4kMSksRj0oQi4kMi5s ZW5ndGg9PT0xKT8iMCIrQi4kMjpOdW1iZXIoQi4kMiksRT0oQi4kMy5sZW5ndGg9 PT0xKT8iMCIrQi4kMzpOdW1iZXIoQi4kMyk7SD1bR1tDXSgxNiksRltDXSgxNiks RVtDXSgxNildLmpvaW4oIiIpO31pZihILmxlbmd0aDw2KXtIPUgucmVwbGFjZShE LkRvbS5Db2xvci5yZV9oZXgzLCIkMSQxIik7fWlmKEghPT0idHJhbnNwYXJlbnQi JiZILmluZGV4T2YoIiMiKTwwKXtIPSIjIitIO31yZXR1cm4gSC50b0xvd2VyQ2Fz ZSgpO319O30oKSk7WUFIT08ucmVnaXN0ZXIoImRvbSIsWUFIT08udXRpbC5Eb20s e3ZlcnNpb246IjIuNy4wIixidWlsZDoiMTc5OSJ9KTtZQUhPTy51dGlsLkN1c3Rv bUV2ZW50PWZ1bmN0aW9uKEQsQyxCLEEpe3RoaXMudHlwZT1EO3RoaXMuc2NvcGU9 Q3x8d2luZG93O3RoaXMuc2lsZW50PUI7dGhpcy5zaWduYXR1cmU9QXx8WUFIT08u dXRpbC5DdXN0b21FdmVudC5MSVNUO3RoaXMuc3Vic2NyaWJlcnM9W107aWYoIXRo aXMuc2lsZW50KXt9dmFyIEU9Il9ZVUlDRU9uU3Vic2NyaWJlIjtpZihEIT09RSl7 dGhpcy5zdWJzY3JpYmVFdmVudD1uZXcgWUFIT08udXRpbC5DdXN0b21FdmVudChF LHRoaXMsdHJ1ZSk7fXRoaXMubGFzdEVycm9yPW51bGw7fTtZQUhPTy51dGlsLkN1 c3RvbUV2ZW50LkxJU1Q9MDtZQUhPTy51dGlsLkN1c3RvbUV2ZW50LkZMQVQ9MTtZ QUhPTy51dGlsLkN1c3RvbUV2ZW50LnByb3RvdHlwZT17c3Vic2NyaWJlOmZ1bmN0 aW9uKEEsQixDKXtpZighQSl7dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNhbGxi YWNrIGZvciBzdWJzY3JpYmVyIHRvICciK3RoaXMudHlwZSsiJyIpO31pZih0aGlz LnN1YnNjcmliZUV2ZW50KXt0aGlzLnN1YnNjcmliZUV2ZW50LmZpcmUoQSxCLEMp O310aGlzLnN1YnNjcmliZXJzLnB1c2gobmV3IFlBSE9PLnV0aWwuU3Vic2NyaWJl cihBLEIsQykpO30sdW5zdWJzY3JpYmU6ZnVuY3Rpb24oRCxGKXtpZighRCl7cmV0 dXJuIHRoaXMudW5zdWJzY3JpYmVBbGwoKTt9dmFyIEU9ZmFsc2U7Zm9yKHZhciBC PTAsQT10aGlzLnN1YnNjcmliZXJzLmxlbmd0aDtCPEE7KytCKXt2YXIgQz10aGlz LnN1YnNjcmliZXJzW0JdO2lmKEMmJkMuY29udGFpbnMoRCxGKSl7dGhpcy5fZGVs ZXRlKEIpO0U9dHJ1ZTt9fXJldHVybiBFO30sZmlyZTpmdW5jdGlvbigpe3RoaXMu bGFzdEVycm9yPW51bGw7dmFyIEs9W10sRT10aGlzLnN1YnNjcmliZXJzLmxlbmd0 aDtpZighRSYmdGhpcy5zaWxlbnQpe3JldHVybiB0cnVlO312YXIgST1bXS5zbGlj ZS5jYWxsKGFyZ3VtZW50cywwKSxHPXRydWUsRCxKPWZhbHNlO2lmKCF0aGlzLnNp bGVudCl7fXZhciBDPXRoaXMuc3Vic2NyaWJlcnMuc2xpY2UoKSxBPVlBSE9PLnV0 aWwuRXZlbnQudGhyb3dFcnJvcnM7Zm9yKEQ9MDtEPEU7KytEKXt2YXIgTT1DW0Rd O2lmKCFNKXtKPXRydWU7fWVsc2V7aWYoIXRoaXMuc2lsZW50KXt9dmFyIEw9TS5n ZXRTY29wZSh0aGlzLnNjb3BlKTtpZih0aGlzLnNpZ25hdHVyZT09WUFIT08udXRp bC5DdXN0b21FdmVudC5GTEFUKXt2YXIgQj1udWxsO2lmKEkubGVuZ3RoPjApe0I9 SVswXTt9dHJ5e0c9TS5mbi5jYWxsKEwsQixNLm9iaik7fWNhdGNoKEYpe3RoaXMu bGFzdEVycm9yPUY7aWYoQSl7dGhyb3cgRjt9fX1lbHNle3RyeXtHPU0uZm4uY2Fs bChMLHRoaXMudHlwZSxJLE0ub2JqKTt9Y2F0Y2goSCl7dGhpcy5sYXN0RXJyb3I9 SDtpZihBKXt0aHJvdyBIO319fWlmKGZhbHNlPT09Ryl7aWYoIXRoaXMuc2lsZW50 KXt9YnJlYWs7fX19cmV0dXJuKEchPT1mYWxzZSk7fSx1bnN1YnNjcmliZUFsbDpm dW5jdGlvbigpe3ZhciBBPXRoaXMuc3Vic2NyaWJlcnMubGVuZ3RoLEI7Zm9yKEI9 QS0xO0I+LTE7Qi0tKXt0aGlzLl9kZWxldGUoQik7fXRoaXMuc3Vic2NyaWJlcnM9 W107cmV0dXJuIEE7fSxfZGVsZXRlOmZ1bmN0aW9uKEEpe3ZhciBCPXRoaXMuc3Vi c2NyaWJlcnNbQV07aWYoQil7ZGVsZXRlIEIuZm47ZGVsZXRlIEIub2JqO310aGlz LnN1YnNjcmliZXJzLnNwbGljZShBLDEpO30sdG9TdHJpbmc6ZnVuY3Rpb24oKXty ZXR1cm4iQ3VzdG9tRXZlbnQ6ICIrIiciK3RoaXMudHlwZSsiJywgIisiY29udGV4 dDogIit0aGlzLnNjb3BlO319O1lBSE9PLnV0aWwuU3Vic2NyaWJlcj1mdW5jdGlv bihBLEIsQyl7dGhpcy5mbj1BO3RoaXMub2JqPVlBSE9PLmxhbmcuaXNVbmRlZmlu ZWQoQik/bnVsbDpCO3RoaXMub3ZlcnJpZGVDb250ZXh0PUM7fTtZQUhPTy51dGls LlN1YnNjcmliZXIucHJvdG90eXBlLmdldFNjb3BlPWZ1bmN0aW9uKEEpe2lmKHRo aXMub3ZlcnJpZGVDb250ZXh0KXtpZih0aGlzLm92ZXJyaWRlQ29udGV4dD09PXRy dWUpe3JldHVybiB0aGlzLm9iajt9ZWxzZXtyZXR1cm4gdGhpcy5vdmVycmlkZUNv bnRleHQ7fX1yZXR1cm4gQTt9O1lBSE9PLnV0aWwuU3Vic2NyaWJlci5wcm90b3R5 cGUuY29udGFpbnM9ZnVuY3Rpb24oQSxCKXtpZihCKXtyZXR1cm4odGhpcy5mbj09 QSYmdGhpcy5vYmo9PUIpO31lbHNle3JldHVybih0aGlzLmZuPT1BKTt9fTtZQUhP Ty51dGlsLlN1YnNjcmliZXIucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7 cmV0dXJuIlN1YnNjcmliZXIgeyBvYmo6ICIrdGhpcy5vYmorIiwgb3ZlcnJpZGVD b250ZXh0OiAiKyh0aGlzLm92ZXJyaWRlQ29udGV4dHx8Im5vIikrIiB9Ijt9O2lm KCFZQUhPTy51dGlsLkV2ZW50KXtZQUhPTy51dGlsLkV2ZW50PWZ1bmN0aW9uKCl7 dmFyIEg9ZmFsc2U7dmFyIEk9W107dmFyIEo9W107dmFyIEc9W107dmFyIEU9W107 dmFyIEM9MDt2YXIgRj1bXTt2YXIgQj1bXTt2YXIgQT0wO3ZhciBEPXs2MzIzMjoz OCw2MzIzMzo0MCw2MzIzNDozNyw2MzIzNTozOSw2MzI3NjozMyw2MzI3NzozNCwy NTo5fTt2YXIgSz1ZQUhPTy5lbnYudWEuaWU/ImZvY3VzaW4iOiJmb2N1cyI7dmFy IEw9WUFIT08uZW52LnVhLmllPyJmb2N1c291dCI6ImJsdXIiO3JldHVybntQT0xM X1JFVFJZUzoyMDAwLFBPTExfSU5URVJWQUw6MjAsRUw6MCxUWVBFOjEsRk46MixX Rk46MyxVTkxPQURfT0JKOjMsQURKX1NDT1BFOjQsT0JKOjUsT1ZFUlJJREU6Nixs YXN0RXJyb3I6bnVsbCxpc1NhZmFyaTpZQUhPTy5lbnYudWEud2Via2l0LHdlYmtp dDpZQUhPTy5lbnYudWEud2Via2l0LGlzSUU6WUFIT08uZW52LnVhLmllLF9pbnRl cnZhbDpudWxsLF9kcmk6bnVsbCxET01SZWFkeTpmYWxzZSx0aHJvd0Vycm9yczpm YWxzZSxzdGFydEludGVydmFsOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX2ludGVydmFs KXt2YXIgTT10aGlzO3ZhciBOPWZ1bmN0aW9uKCl7TS5fdHJ5UHJlbG9hZEF0dGFj aCgpO307dGhpcy5faW50ZXJ2YWw9c2V0SW50ZXJ2YWwoTix0aGlzLlBPTExfSU5U RVJWQUwpO319LG9uQXZhaWxhYmxlOmZ1bmN0aW9uKFMsTyxRLFIsUCl7dmFyIE09 KFlBSE9PLmxhbmcuaXNTdHJpbmcoUykpP1tTXTpTO2Zvcih2YXIgTj0wO048TS5s ZW5ndGg7Tj1OKzEpe0YucHVzaCh7aWQ6TVtOXSxmbjpPLG9iajpRLG92ZXJyaWRl Q29udGV4dDpSLGNoZWNrUmVhZHk6UH0pO31DPXRoaXMuUE9MTF9SRVRSWVM7dGhp cy5zdGFydEludGVydmFsKCk7fSxvbkNvbnRlbnRSZWFkeTpmdW5jdGlvbihQLE0s TixPKXt0aGlzLm9uQXZhaWxhYmxlKFAsTSxOLE8sdHJ1ZSk7fSxvbkRPTVJlYWR5 OmZ1bmN0aW9uKE0sTixPKXtpZih0aGlzLkRPTVJlYWR5KXtzZXRUaW1lb3V0KGZ1 bmN0aW9uKCl7dmFyIFA9d2luZG93O2lmKE8pe2lmKE89PT10cnVlKXtQPU47fWVs c2V7UD1PO319TS5jYWxsKFAsIkRPTVJlYWR5IixbXSxOKTt9LDApO31lbHNle3Ro aXMuRE9NUmVhZHlFdmVudC5zdWJzY3JpYmUoTSxOLE8pO319LF9hZGRMaXN0ZW5l cjpmdW5jdGlvbihPLE0sWSxTLFcsYil7aWYoIVl8fCFZLmNhbGwpe3JldHVybiBm YWxzZTt9aWYodGhpcy5faXNWYWxpZENvbGxlY3Rpb24oTykpe3ZhciBaPXRydWU7 Zm9yKHZhciBUPTAsVj1PLmxlbmd0aDtUPFY7KytUKXtaPXRoaXMub24oT1tUXSxN LFksUyxXKSYmWjt9cmV0dXJuIFo7fWVsc2V7aWYoWUFIT08ubGFuZy5pc1N0cmlu ZyhPKSl7dmFyIFI9dGhpcy5nZXRFbChPKTtpZihSKXtPPVI7fWVsc2V7dGhpcy5v bkF2YWlsYWJsZShPLGZ1bmN0aW9uKCl7WUFIT08udXRpbC5FdmVudC5vbihPLE0s WSxTLFcpO30pO3JldHVybiB0cnVlO319fWlmKCFPKXtyZXR1cm4gZmFsc2U7fWlm KCJ1bmxvYWQiPT1NJiZTIT09dGhpcyl7SltKLmxlbmd0aF09W08sTSxZLFMsV107 cmV0dXJuIHRydWU7fXZhciBOPU87aWYoVyl7aWYoVz09PXRydWUpe049Uzt9ZWxz ZXtOPVc7fX12YXIgUD1mdW5jdGlvbihjKXtyZXR1cm4gWS5jYWxsKE4sWUFIT08u dXRpbC5FdmVudC5nZXRFdmVudChjLE8pLFMpO307dmFyIGE9W08sTSxZLFAsTixT LFddO3ZhciBVPUkubGVuZ3RoO0lbVV09YTtpZih0aGlzLnVzZUxlZ2FjeUV2ZW50 KE8sTSkpe3ZhciBRPXRoaXMuZ2V0TGVnYWN5SW5kZXgoTyxNKTtpZihRPT0tMXx8 TyE9R1tRXVswXSl7UT1HLmxlbmd0aDtCW08uaWQrTV09UTtHW1FdPVtPLE0sT1si b24iK01dXTtFW1FdPVtdO09bIm9uIitNXT1mdW5jdGlvbihjKXtZQUhPTy51dGls LkV2ZW50LmZpcmVMZWdhY3lFdmVudChZQUhPTy51dGlsLkV2ZW50LmdldEV2ZW50 KGMpLFEpO307fUVbUV0ucHVzaChhKTt9ZWxzZXt0cnl7dGhpcy5fc2ltcGxlQWRk KE8sTSxQLGIpO31jYXRjaChYKXt0aGlzLmxhc3RFcnJvcj1YO3RoaXMucmVtb3Zl TGlzdGVuZXIoTyxNLFkpO3JldHVybiBmYWxzZTt9fXJldHVybiB0cnVlO30sYWRk TGlzdGVuZXI6ZnVuY3Rpb24oTixRLE0sTyxQKXtyZXR1cm4gdGhpcy5fYWRkTGlz dGVuZXIoTixRLE0sTyxQLGZhbHNlKTt9LGFkZEZvY3VzTGlzdGVuZXI6ZnVuY3Rp b24oTixNLE8sUCl7cmV0dXJuIHRoaXMuX2FkZExpc3RlbmVyKE4sSyxNLE8sUCx0 cnVlKTt9LHJlbW92ZUZvY3VzTGlzdGVuZXI6ZnVuY3Rpb24oTixNKXtyZXR1cm4g dGhpcy5yZW1vdmVMaXN0ZW5lcihOLEssTSk7fSxhZGRCbHVyTGlzdGVuZXI6ZnVu Y3Rpb24oTixNLE8sUCl7cmV0dXJuIHRoaXMuX2FkZExpc3RlbmVyKE4sTCxNLE8s UCx0cnVlKTt9LHJlbW92ZUJsdXJMaXN0ZW5lcjpmdW5jdGlvbihOLE0pe3JldHVy biB0aGlzLnJlbW92ZUxpc3RlbmVyKE4sTCxNKTt9LGZpcmVMZWdhY3lFdmVudDpm dW5jdGlvbihSLFApe3ZhciBUPXRydWUsTSxWLFUsTixTO1Y9RVtQXS5zbGljZSgp O2Zvcih2YXIgTz0wLFE9Vi5sZW5ndGg7TzxROysrTyl7VT1WW09dO2lmKFUmJlVb dGhpcy5XRk5dKXtOPVVbdGhpcy5BREpfU0NPUEVdO1M9VVt0aGlzLldGTl0uY2Fs bChOLFIpO1Q9KFQmJlMpO319TT1HW1BdO2lmKE0mJk1bMl0pe01bMl0oUik7fXJl dHVybiBUO30sZ2V0TGVnYWN5SW5kZXg6ZnVuY3Rpb24oTixPKXt2YXIgTT10aGlz LmdlbmVyYXRlSWQoTikrTztpZih0eXBlb2YgQltNXT09InVuZGVmaW5lZCIpe3Jl dHVybiAtMTt9ZWxzZXtyZXR1cm4gQltNXTt9fSx1c2VMZWdhY3lFdmVudDpmdW5j dGlvbihNLE4pe3JldHVybih0aGlzLndlYmtpdCYmdGhpcy53ZWJraXQ8NDE5JiYo ImNsaWNrIj09Tnx8ImRibGNsaWNrIj09TikpO30scmVtb3ZlTGlzdGVuZXI6ZnVu Y3Rpb24oTixNLFYpe3ZhciBRLFQsWDtpZih0eXBlb2YgTj09InN0cmluZyIpe049 dGhpcy5nZXRFbChOKTt9ZWxzZXtpZih0aGlzLl9pc1ZhbGlkQ29sbGVjdGlvbihO KSl7dmFyIFc9dHJ1ZTtmb3IoUT1OLmxlbmd0aC0xO1E+LTE7US0tKXtXPSh0aGlz LnJlbW92ZUxpc3RlbmVyKE5bUV0sTSxWKSYmVyk7fXJldHVybiBXO319aWYoIVZ8 fCFWLmNhbGwpe3JldHVybiB0aGlzLnB1cmdlRWxlbWVudChOLGZhbHNlLE0pO31p ZigidW5sb2FkIj09TSl7Zm9yKFE9Si5sZW5ndGgtMTtRPi0xO1EtLSl7WD1KW1Fd O2lmKFgmJlhbMF09PU4mJlhbMV09PU0mJlhbMl09PVYpe0ouc3BsaWNlKFEsMSk7 cmV0dXJuIHRydWU7fX1yZXR1cm4gZmFsc2U7fXZhciBSPW51bGw7dmFyIFM9YXJn dW1lbnRzWzNdO2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIFMpe1M9dGhpcy5fZ2V0 Q2FjaGVJbmRleChOLE0sVik7fWlmKFM+PTApe1I9SVtTXTt9aWYoIU58fCFSKXty ZXR1cm4gZmFsc2U7fWlmKHRoaXMudXNlTGVnYWN5RXZlbnQoTixNKSl7dmFyIFA9 dGhpcy5nZXRMZWdhY3lJbmRleChOLE0pO3ZhciBPPUVbUF07aWYoTyl7Zm9yKFE9 MCxUPU8ubGVuZ3RoO1E8VDsrK1Epe1g9T1tRXTtpZihYJiZYW3RoaXMuRUxdPT1O JiZYW3RoaXMuVFlQRV09PU0mJlhbdGhpcy5GTl09PVYpe08uc3BsaWNlKFEsMSk7 YnJlYWs7fX19fWVsc2V7dHJ5e3RoaXMuX3NpbXBsZVJlbW92ZShOLE0sUlt0aGlz LldGTl0sZmFsc2UpO31jYXRjaChVKXt0aGlzLmxhc3RFcnJvcj1VO3JldHVybiBm YWxzZTt9fWRlbGV0ZSBJW1NdW3RoaXMuV0ZOXTtkZWxldGUgSVtTXVt0aGlzLkZO XTsKSS5zcGxpY2UoUywxKTtyZXR1cm4gdHJ1ZTt9LGdldFRhcmdldDpmdW5jdGlv bihPLE4pe3ZhciBNPU8udGFyZ2V0fHxPLnNyY0VsZW1lbnQ7cmV0dXJuIHRoaXMu cmVzb2x2ZVRleHROb2RlKE0pO30scmVzb2x2ZVRleHROb2RlOmZ1bmN0aW9uKE4p e3RyeXtpZihOJiYzPT1OLm5vZGVUeXBlKXtyZXR1cm4gTi5wYXJlbnROb2RlO319 Y2F0Y2goTSl7fXJldHVybiBOO30sZ2V0UGFnZVg6ZnVuY3Rpb24oTil7dmFyIE09 Ti5wYWdlWDtpZighTSYmMCE9PU0pe009Ti5jbGllbnRYfHwwO2lmKHRoaXMuaXNJ RSl7TSs9dGhpcy5fZ2V0U2Nyb2xsTGVmdCgpO319cmV0dXJuIE07fSxnZXRQYWdl WTpmdW5jdGlvbihNKXt2YXIgTj1NLnBhZ2VZO2lmKCFOJiYwIT09Til7Tj1NLmNs aWVudFl8fDA7aWYodGhpcy5pc0lFKXtOKz10aGlzLl9nZXRTY3JvbGxUb3AoKTt9 fXJldHVybiBOO30sZ2V0WFk6ZnVuY3Rpb24oTSl7cmV0dXJuW3RoaXMuZ2V0UGFn ZVgoTSksdGhpcy5nZXRQYWdlWShNKV07fSxnZXRSZWxhdGVkVGFyZ2V0OmZ1bmN0 aW9uKE4pe3ZhciBNPU4ucmVsYXRlZFRhcmdldDtpZighTSl7aWYoTi50eXBlPT0i bW91c2VvdXQiKXtNPU4udG9FbGVtZW50O31lbHNle2lmKE4udHlwZT09Im1vdXNl b3ZlciIpe009Ti5mcm9tRWxlbWVudDt9fX1yZXR1cm4gdGhpcy5yZXNvbHZlVGV4 dE5vZGUoTSk7fSxnZXRUaW1lOmZ1bmN0aW9uKE8pe2lmKCFPLnRpbWUpe3ZhciBO PW5ldyBEYXRlKCkuZ2V0VGltZSgpO3RyeXtPLnRpbWU9Tjt9Y2F0Y2goTSl7dGhp cy5sYXN0RXJyb3I9TTtyZXR1cm4gTjt9fXJldHVybiBPLnRpbWU7fSxzdG9wRXZl bnQ6ZnVuY3Rpb24oTSl7dGhpcy5zdG9wUHJvcGFnYXRpb24oTSk7dGhpcy5wcmV2 ZW50RGVmYXVsdChNKTt9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbihNKXtpZihN LnN0b3BQcm9wYWdhdGlvbil7TS5zdG9wUHJvcGFnYXRpb24oKTt9ZWxzZXtNLmNh bmNlbEJ1YmJsZT10cnVlO319LHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKE0pe2lm KE0ucHJldmVudERlZmF1bHQpe00ucHJldmVudERlZmF1bHQoKTt9ZWxzZXtNLnJl dHVyblZhbHVlPWZhbHNlO319LGdldEV2ZW50OmZ1bmN0aW9uKE8sTSl7dmFyIE49 T3x8d2luZG93LmV2ZW50O2lmKCFOKXt2YXIgUD10aGlzLmdldEV2ZW50LmNhbGxl cjt3aGlsZShQKXtOPVAuYXJndW1lbnRzWzBdO2lmKE4mJkV2ZW50PT1OLmNvbnN0 cnVjdG9yKXticmVhazt9UD1QLmNhbGxlcjt9fXJldHVybiBOO30sZ2V0Q2hhckNv ZGU6ZnVuY3Rpb24oTil7dmFyIE09Ti5rZXlDb2RlfHxOLmNoYXJDb2RlfHwwO2lm KFlBSE9PLmVudi51YS53ZWJraXQmJihNIGluIEQpKXtNPURbTV07fXJldHVybiBN O30sX2dldENhY2hlSW5kZXg6ZnVuY3Rpb24oUSxSLFApe2Zvcih2YXIgTz0wLE49 SS5sZW5ndGg7TzxOO089TysxKXt2YXIgTT1JW09dO2lmKE0mJk1bdGhpcy5GTl09 PVAmJk1bdGhpcy5FTF09PVEmJk1bdGhpcy5UWVBFXT09Uil7cmV0dXJuIE87fX1y ZXR1cm4gLTE7fSxnZW5lcmF0ZUlkOmZ1bmN0aW9uKE0pe3ZhciBOPU0uaWQ7aWYo IU4pe049Inl1aWV2dGF1dG9pZC0iK0E7KytBO00uaWQ9Tjt9cmV0dXJuIE47fSxf aXNWYWxpZENvbGxlY3Rpb246ZnVuY3Rpb24oTil7dHJ5e3JldHVybihOJiZ0eXBl b2YgTiE9PSJzdHJpbmciJiZOLmxlbmd0aCYmIU4udGFnTmFtZSYmIU4uYWxlcnQm JnR5cGVvZiBOWzBdIT09InVuZGVmaW5lZCIpO31jYXRjaChNKXtyZXR1cm4gZmFs c2U7fX0sZWxDYWNoZTp7fSxnZXRFbDpmdW5jdGlvbihNKXtyZXR1cm4odHlwZW9m IE09PT0ic3RyaW5nIik/ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoTSk6TTt9LGNs ZWFyQ2FjaGU6ZnVuY3Rpb24oKXt9LERPTVJlYWR5RXZlbnQ6bmV3IFlBSE9PLnV0 aWwuQ3VzdG9tRXZlbnQoIkRPTVJlYWR5Iix0aGlzKSxfbG9hZDpmdW5jdGlvbihO KXtpZighSCl7SD10cnVlO3ZhciBNPVlBSE9PLnV0aWwuRXZlbnQ7TS5fcmVhZHko KTtNLl90cnlQcmVsb2FkQXR0YWNoKCk7fX0sX3JlYWR5OmZ1bmN0aW9uKE4pe3Zh ciBNPVlBSE9PLnV0aWwuRXZlbnQ7aWYoIU0uRE9NUmVhZHkpe00uRE9NUmVhZHk9 dHJ1ZTtNLkRPTVJlYWR5RXZlbnQuZmlyZSgpO00uX3NpbXBsZVJlbW92ZShkb2N1 bWVudCwiRE9NQ29udGVudExvYWRlZCIsTS5fcmVhZHkpO319LF90cnlQcmVsb2Fk QXR0YWNoOmZ1bmN0aW9uKCl7aWYoRi5sZW5ndGg9PT0wKXtDPTA7aWYodGhpcy5f aW50ZXJ2YWwpe2NsZWFySW50ZXJ2YWwodGhpcy5faW50ZXJ2YWwpO3RoaXMuX2lu dGVydmFsPW51bGw7fXJldHVybjt9aWYodGhpcy5sb2NrZWQpe3JldHVybjt9aWYo dGhpcy5pc0lFKXtpZighdGhpcy5ET01SZWFkeSl7dGhpcy5zdGFydEludGVydmFs KCk7cmV0dXJuO319dGhpcy5sb2NrZWQ9dHJ1ZTt2YXIgUz0hSDtpZighUyl7Uz0o Qz4wJiZGLmxlbmd0aD4wKTt9dmFyIFI9W107dmFyIFQ9ZnVuY3Rpb24oVixXKXt2 YXIgVT1WO2lmKFcub3ZlcnJpZGVDb250ZXh0KXtpZihXLm92ZXJyaWRlQ29udGV4 dD09PXRydWUpe1U9Vy5vYmo7fWVsc2V7VT1XLm92ZXJyaWRlQ29udGV4dDt9fVcu Zm4uY2FsbChVLFcub2JqKTt9O3ZhciBOLE0sUSxQLE89W107Zm9yKE49MCxNPUYu bGVuZ3RoO048TTtOPU4rMSl7UT1GW05dO2lmKFEpe1A9dGhpcy5nZXRFbChRLmlk KTtpZihQKXtpZihRLmNoZWNrUmVhZHkpe2lmKEh8fFAubmV4dFNpYmxpbmd8fCFT KXtPLnB1c2goUSk7RltOXT1udWxsO319ZWxzZXtUKFAsUSk7RltOXT1udWxsO319 ZWxzZXtSLnB1c2goUSk7fX19Zm9yKE49MCxNPU8ubGVuZ3RoO048TTtOPU4rMSl7 UT1PW05dO1QodGhpcy5nZXRFbChRLmlkKSxRKTt9Qy0tO2lmKFMpe2ZvcihOPUYu bGVuZ3RoLTE7Tj4tMTtOLS0pe1E9RltOXTtpZighUXx8IVEuaWQpe0Yuc3BsaWNl KE4sMSk7fX10aGlzLnN0YXJ0SW50ZXJ2YWwoKTt9ZWxzZXtpZih0aGlzLl9pbnRl cnZhbCl7Y2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbCk7dGhpcy5faW50ZXJ2 YWw9bnVsbDt9fXRoaXMubG9ja2VkPWZhbHNlO30scHVyZ2VFbGVtZW50OmZ1bmN0 aW9uKFEsUixUKXt2YXIgTz0oWUFIT08ubGFuZy5pc1N0cmluZyhRKSk/dGhpcy5n ZXRFbChRKTpRO3ZhciBTPXRoaXMuZ2V0TGlzdGVuZXJzKE8sVCksUCxNO2lmKFMp e2ZvcihQPVMubGVuZ3RoLTE7UD4tMTtQLS0pe3ZhciBOPVNbUF07dGhpcy5yZW1v dmVMaXN0ZW5lcihPLE4udHlwZSxOLmZuKTt9fWlmKFImJk8mJk8uY2hpbGROb2Rl cyl7Zm9yKFA9MCxNPU8uY2hpbGROb2Rlcy5sZW5ndGg7UDxNOysrUCl7dGhpcy5w dXJnZUVsZW1lbnQoTy5jaGlsZE5vZGVzW1BdLFIsVCk7fX19LGdldExpc3RlbmVy czpmdW5jdGlvbihPLE0pe3ZhciBSPVtdLE47aWYoIU0pe049W0ksSl07fWVsc2V7 aWYoTT09PSJ1bmxvYWQiKXtOPVtKXTt9ZWxzZXtOPVtJXTt9fXZhciBUPShZQUhP Ty5sYW5nLmlzU3RyaW5nKE8pKT90aGlzLmdldEVsKE8pOk87Zm9yKHZhciBRPTA7 UTxOLmxlbmd0aDtRPVErMSl7dmFyIFY9TltRXTtpZihWKXtmb3IodmFyIFM9MCxV PVYubGVuZ3RoO1M8VTsrK1Mpe3ZhciBQPVZbU107aWYoUCYmUFt0aGlzLkVMXT09 PVQmJighTXx8TT09PVBbdGhpcy5UWVBFXSkpe1IucHVzaCh7dHlwZTpQW3RoaXMu VFlQRV0sZm46UFt0aGlzLkZOXSxvYmo6UFt0aGlzLk9CSl0sYWRqdXN0OlBbdGhp cy5PVkVSUklERV0sc2NvcGU6UFt0aGlzLkFESl9TQ09QRV0saW5kZXg6U30pO319 fX1yZXR1cm4oUi5sZW5ndGgpP1I6bnVsbDt9LF91bmxvYWQ6ZnVuY3Rpb24oVCl7 dmFyIE49WUFIT08udXRpbC5FdmVudCxRLFAsTyxTLFIsVT1KLnNsaWNlKCksTTtm b3IoUT0wLFM9Si5sZW5ndGg7UTxTOysrUSl7Tz1VW1FdO2lmKE8pe009d2luZG93 O2lmKE9bTi5BREpfU0NPUEVdKXtpZihPW04uQURKX1NDT1BFXT09PXRydWUpe009 T1tOLlVOTE9BRF9PQkpdO31lbHNle009T1tOLkFESl9TQ09QRV07fX1PW04uRk5d LmNhbGwoTSxOLmdldEV2ZW50KFQsT1tOLkVMXSksT1tOLlVOTE9BRF9PQkpdKTtV W1FdPW51bGw7fX1PPW51bGw7TT1udWxsO0o9bnVsbDtpZihJKXtmb3IoUD1JLmxl bmd0aC0xO1A+LTE7UC0tKXtPPUlbUF07aWYoTyl7Ti5yZW1vdmVMaXN0ZW5lcihP W04uRUxdLE9bTi5UWVBFXSxPW04uRk5dLFApO319Tz1udWxsO31HPW51bGw7Ti5f c2ltcGxlUmVtb3ZlKHdpbmRvdywidW5sb2FkIixOLl91bmxvYWQpO30sX2dldFNj cm9sbExlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZ2V0U2Nyb2xsKClbMV07 fSxfZ2V0U2Nyb2xsVG9wOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldFNjcm9s bCgpWzBdO30sX2dldFNjcm9sbDpmdW5jdGlvbigpe3ZhciBNPWRvY3VtZW50LmRv Y3VtZW50RWxlbWVudCxOPWRvY3VtZW50LmJvZHk7aWYoTSYmKE0uc2Nyb2xsVG9w fHxNLnNjcm9sbExlZnQpKXtyZXR1cm5bTS5zY3JvbGxUb3AsTS5zY3JvbGxMZWZ0 XTt9ZWxzZXtpZihOKXtyZXR1cm5bTi5zY3JvbGxUb3AsTi5zY3JvbGxMZWZ0XTt9 ZWxzZXtyZXR1cm5bMCwwXTt9fX0scmVnQ0U6ZnVuY3Rpb24oKXt9LF9zaW1wbGVB ZGQ6ZnVuY3Rpb24oKXtpZih3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcil7cmV0dXJu IGZ1bmN0aW9uKE8sUCxOLE0pe08uYWRkRXZlbnRMaXN0ZW5lcihQLE4sKE0pKTt9 O31lbHNle2lmKHdpbmRvdy5hdHRhY2hFdmVudCl7cmV0dXJuIGZ1bmN0aW9uKE8s UCxOLE0pe08uYXR0YWNoRXZlbnQoIm9uIitQLE4pO307fWVsc2V7cmV0dXJuIGZ1 bmN0aW9uKCl7fTt9fX0oKSxfc2ltcGxlUmVtb3ZlOmZ1bmN0aW9uKCl7aWYod2lu ZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIpe3JldHVybiBmdW5jdGlvbihPLFAsTixN KXtPLnJlbW92ZUV2ZW50TGlzdGVuZXIoUCxOLChNKSk7fTt9ZWxzZXtpZih3aW5k b3cuZGV0YWNoRXZlbnQpe3JldHVybiBmdW5jdGlvbihOLE8sTSl7Ti5kZXRhY2hF dmVudCgib24iK08sTSk7fTt9ZWxzZXtyZXR1cm4gZnVuY3Rpb24oKXt9O319fSgp fTt9KCk7KGZ1bmN0aW9uKCl7dmFyIEVVPVlBSE9PLnV0aWwuRXZlbnQ7RVUub249 RVUuYWRkTGlzdGVuZXI7RVUub25Gb2N1cz1FVS5hZGRGb2N1c0xpc3RlbmVyO0VV Lm9uQmx1cj1FVS5hZGRCbHVyTGlzdGVuZXI7Ci8qIERPTVJlYWR5OiBiYXNlZCBv biB3b3JrIGJ5OiBEZWFuIEVkd2FyZHMvSm9obiBSZXNpZy9NYXR0aGlhcyBNaWxs ZXIgKi8KaWYoRVUuaXNJRSl7WUFIT08udXRpbC5FdmVudC5vbkRPTVJlYWR5KFlB SE9PLnV0aWwuRXZlbnQuX3RyeVByZWxvYWRBdHRhY2gsWUFIT08udXRpbC5FdmVu dCx0cnVlKTt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7RVUuX2Ry aT1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3RyeXtuLmRvU2Nyb2xsKCJsZWZ0Iik7 Y2xlYXJJbnRlcnZhbChFVS5fZHJpKTtFVS5fZHJpPW51bGw7RVUuX3JlYWR5KCk7 bj1udWxsO31jYXRjaChleCl7fX0sRVUuUE9MTF9JTlRFUlZBTCk7fWVsc2V7aWYo RVUud2Via2l0JiZFVS53ZWJraXQ8NTI1KXtFVS5fZHJpPXNldEludGVydmFsKGZ1 bmN0aW9uKCl7dmFyIHJzPWRvY3VtZW50LnJlYWR5U3RhdGU7aWYoImxvYWRlZCI9 PXJzfHwiY29tcGxldGUiPT1ycyl7Y2xlYXJJbnRlcnZhbChFVS5fZHJpKTtFVS5f ZHJpPW51bGw7RVUuX3JlYWR5KCk7fX0sRVUuUE9MTF9JTlRFUlZBTCk7fWVsc2V7 RVUuX3NpbXBsZUFkZChkb2N1bWVudCwiRE9NQ29udGVudExvYWRlZCIsRVUuX3Jl YWR5KTt9fUVVLl9zaW1wbGVBZGQod2luZG93LCJsb2FkIixFVS5fbG9hZCk7RVUu X3NpbXBsZUFkZCh3aW5kb3csInVubG9hZCIsRVUuX3VubG9hZCk7RVUuX3RyeVBy ZWxvYWRBdHRhY2goKTt9KSgpO31ZQUhPTy51dGlsLkV2ZW50UHJvdmlkZXI9ZnVu Y3Rpb24oKXt9O1lBSE9PLnV0aWwuRXZlbnRQcm92aWRlci5wcm90b3R5cGU9e19f eXVpX2V2ZW50czpudWxsLF9feXVpX3N1YnNjcmliZXJzOm51bGwsc3Vic2NyaWJl OmZ1bmN0aW9uKEEsQyxGLEUpe3RoaXMuX195dWlfZXZlbnRzPXRoaXMuX195dWlf ZXZlbnRzfHx7fTt2YXIgRD10aGlzLl9feXVpX2V2ZW50c1tBXTtpZihEKXtELnN1 YnNjcmliZShDLEYsRSk7Cn1lbHNle3RoaXMuX195dWlfc3Vic2NyaWJlcnM9dGhp cy5fX3l1aV9zdWJzY3JpYmVyc3x8e307dmFyIEI9dGhpcy5fX3l1aV9zdWJzY3Jp YmVycztpZighQltBXSl7QltBXT1bXTt9QltBXS5wdXNoKHtmbjpDLG9iajpGLG92 ZXJyaWRlQ29udGV4dDpFfSk7fX0sdW5zdWJzY3JpYmU6ZnVuY3Rpb24oQyxFLEcp e3RoaXMuX195dWlfZXZlbnRzPXRoaXMuX195dWlfZXZlbnRzfHx7fTt2YXIgQT10 aGlzLl9feXVpX2V2ZW50cztpZihDKXt2YXIgRj1BW0NdO2lmKEYpe3JldHVybiBG LnVuc3Vic2NyaWJlKEUsRyk7fX1lbHNle3ZhciBCPXRydWU7Zm9yKHZhciBEIGlu IEEpe2lmKFlBSE9PLmxhbmcuaGFzT3duUHJvcGVydHkoQSxEKSl7Qj1CJiZBW0Rd LnVuc3Vic2NyaWJlKEUsRyk7fX1yZXR1cm4gQjt9cmV0dXJuIGZhbHNlO30sdW5z dWJzY3JpYmVBbGw6ZnVuY3Rpb24oQSl7cmV0dXJuIHRoaXMudW5zdWJzY3JpYmUo QSk7fSxjcmVhdGVFdmVudDpmdW5jdGlvbihHLEQpe3RoaXMuX195dWlfZXZlbnRz PXRoaXMuX195dWlfZXZlbnRzfHx7fTt2YXIgQT1EfHx7fTt2YXIgST10aGlzLl9f eXVpX2V2ZW50cztpZihJW0ddKXt9ZWxzZXt2YXIgSD1BLnNjb3BlfHx0aGlzO3Zh ciBFPShBLnNpbGVudCk7dmFyIEI9bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQo RyxILEUsWUFIT08udXRpbC5DdXN0b21FdmVudC5GTEFUKTtJW0ddPUI7aWYoQS5v blN1YnNjcmliZUNhbGxiYWNrKXtCLnN1YnNjcmliZUV2ZW50LnN1YnNjcmliZShB Lm9uU3Vic2NyaWJlQ2FsbGJhY2spO310aGlzLl9feXVpX3N1YnNjcmliZXJzPXRo aXMuX195dWlfc3Vic2NyaWJlcnN8fHt9O3ZhciBGPXRoaXMuX195dWlfc3Vic2Ny aWJlcnNbR107aWYoRil7Zm9yKHZhciBDPTA7QzxGLmxlbmd0aDsrK0Mpe0Iuc3Vi c2NyaWJlKEZbQ10uZm4sRltDXS5vYmosRltDXS5vdmVycmlkZUNvbnRleHQpO319 fXJldHVybiBJW0ddO30sZmlyZUV2ZW50OmZ1bmN0aW9uKEUsRCxBLEMpe3RoaXMu X195dWlfZXZlbnRzPXRoaXMuX195dWlfZXZlbnRzfHx7fTt2YXIgRz10aGlzLl9f eXVpX2V2ZW50c1tFXTtpZighRyl7cmV0dXJuIG51bGw7fXZhciBCPVtdO2Zvcih2 YXIgRj0xO0Y8YXJndW1lbnRzLmxlbmd0aDsrK0Ype0IucHVzaChhcmd1bWVudHNb Rl0pO31yZXR1cm4gRy5maXJlLmFwcGx5KEcsQik7fSxoYXNFdmVudDpmdW5jdGlv bihBKXtpZih0aGlzLl9feXVpX2V2ZW50cyl7aWYodGhpcy5fX3l1aV9ldmVudHNb QV0pe3JldHVybiB0cnVlO319cmV0dXJuIGZhbHNlO319OyhmdW5jdGlvbigpe3Zh ciBBPVlBSE9PLnV0aWwuRXZlbnQsQz1ZQUhPTy5sYW5nO1lBSE9PLnV0aWwuS2V5 TGlzdGVuZXI9ZnVuY3Rpb24oRCxJLEUsRil7aWYoIUQpe31lbHNle2lmKCFJKXt9 ZWxzZXtpZighRSl7fX19aWYoIUYpe0Y9WUFIT08udXRpbC5LZXlMaXN0ZW5lci5L RVlET1dOO312YXIgRz1uZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgia2V5UHJl c3NlZCIpO3RoaXMuZW5hYmxlZEV2ZW50PW5ldyBZQUhPTy51dGlsLkN1c3RvbUV2 ZW50KCJlbmFibGVkIik7dGhpcy5kaXNhYmxlZEV2ZW50PW5ldyBZQUhPTy51dGls LkN1c3RvbUV2ZW50KCJkaXNhYmxlZCIpO2lmKEMuaXNTdHJpbmcoRCkpe0Q9ZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoRCk7fWlmKEMuaXNGdW5jdGlvbihFKSl7Ry5z dWJzY3JpYmUoRSk7fWVsc2V7Ry5zdWJzY3JpYmUoRS5mbixFLnNjb3BlLEUuY29y cmVjdFNjb3BlKTt9ZnVuY3Rpb24gSChPLE4pe2lmKCFJLnNoaWZ0KXtJLnNoaWZ0 PWZhbHNlO31pZighSS5hbHQpe0kuYWx0PWZhbHNlO31pZighSS5jdHJsKXtJLmN0 cmw9ZmFsc2U7fWlmKE8uc2hpZnRLZXk9PUkuc2hpZnQmJk8uYWx0S2V5PT1JLmFs dCYmTy5jdHJsS2V5PT1JLmN0cmwpe3ZhciBKLE09SS5rZXlzLEw7aWYoWUFIT08u bGFuZy5pc0FycmF5KE0pKXtmb3IodmFyIEs9MDtLPE0ubGVuZ3RoO0srKyl7Sj1N W0tdO0w9QS5nZXRDaGFyQ29kZShPKTtpZihKPT1MKXtHLmZpcmUoTCxPKTticmVh azt9fX1lbHNle0w9QS5nZXRDaGFyQ29kZShPKTtpZihNPT1MKXtHLmZpcmUoTCxP KTt9fX19dGhpcy5lbmFibGU9ZnVuY3Rpb24oKXtpZighdGhpcy5lbmFibGVkKXtB Lm9uKEQsRixIKTt0aGlzLmVuYWJsZWRFdmVudC5maXJlKEkpO310aGlzLmVuYWJs ZWQ9dHJ1ZTt9O3RoaXMuZGlzYWJsZT1mdW5jdGlvbigpe2lmKHRoaXMuZW5hYmxl ZCl7QS5yZW1vdmVMaXN0ZW5lcihELEYsSCk7dGhpcy5kaXNhYmxlZEV2ZW50LmZp cmUoSSk7fXRoaXMuZW5hYmxlZD1mYWxzZTt9O3RoaXMudG9TdHJpbmc9ZnVuY3Rp b24oKXtyZXR1cm4iS2V5TGlzdGVuZXIgWyIrSS5rZXlzKyJdICIrRC50YWdOYW1l KyhELmlkPyJbIitELmlkKyJdIjoiIik7fTt9O3ZhciBCPVlBSE9PLnV0aWwuS2V5 TGlzdGVuZXI7Qi5LRVlET1dOPSJrZXlkb3duIjtCLktFWVVQPSJrZXl1cCI7Qi5L RVk9e0FMVDoxOCxCQUNLX1NQQUNFOjgsQ0FQU19MT0NLOjIwLENPTlRST0w6MTcs REVMRVRFOjQ2LERPV046NDAsRU5EOjM1LEVOVEVSOjEzLEVTQ0FQRToyNyxIT01F OjM2LExFRlQ6MzcsTUVUQToyMjQsTlVNX0xPQ0s6MTQ0LFBBR0VfRE9XTjozNCxQ QUdFX1VQOjMzLFBBVVNFOjE5LFBSSU5UU0NSRUVOOjQ0LFJJR0hUOjM5LFNDUk9M TF9MT0NLOjE0NSxTSElGVDoxNixTUEFDRTozMixUQUI6OSxVUDozOH07fSkoKTtZ QUhPTy5yZWdpc3RlcigiZXZlbnQiLFlBSE9PLnV0aWwuRXZlbnQse3ZlcnNpb246 IjIuNy4wIixidWlsZDoiMTc5OSJ9KTtZQUhPTy5yZWdpc3RlcigieWFob28tZG9t LWV2ZW50IiwgWUFIT08sIHt2ZXJzaW9uOiAiMi43LjAiLCBidWlsZDogIjE3OTki fSk7Ci8qCkNvcHlyaWdodCAoYykgMjAwOSwgWWFob28hIEluYy4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4KQ29kZSBsaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2U6 Cmh0dHA6Ly9kZXZlbG9wZXIueWFob28ubmV0L3l1aS9saWNlbnNlLnR4dAp2ZXJz aW9uOiAyLjcuMAoqLwpZQUhPTy51dGlsLkNvbm5lY3Q9e19tc3htbF9wcm9naWQ6 WyJNaWNyb3NvZnQuWE1MSFRUUCIsIk1TWE1MMi5YTUxIVFRQLjMuMCIsIk1TWE1M Mi5YTUxIVFRQIl0sX2h0dHBfaGVhZGVyczp7fSxfaGFzX2h0dHBfaGVhZGVyczpm YWxzZSxfdXNlX2RlZmF1bHRfcG9zdF9oZWFkZXI6dHJ1ZSxfZGVmYXVsdF9wb3N0 X2hlYWRlcjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFy c2V0PVVURi04IixfZGVmYXVsdF9mb3JtX2hlYWRlcjoiYXBwbGljYXRpb24veC13 d3ctZm9ybS11cmxlbmNvZGVkIixfdXNlX2RlZmF1bHRfeGhyX2hlYWRlcjp0cnVl LF9kZWZhdWx0X3hocl9oZWFkZXI6IlhNTEh0dHBSZXF1ZXN0IixfaGFzX2RlZmF1 bHRfaGVhZGVyczp0cnVlLF9kZWZhdWx0X2hlYWRlcnM6e30sX2lzRm9ybVN1Ym1p dDpmYWxzZSxfaXNGaWxlVXBsb2FkOmZhbHNlLF9mb3JtTm9kZTpudWxsLF9zRm9y bURhdGE6bnVsbCxfcG9sbDp7fSxfdGltZU91dDp7fSxfcG9sbGluZ19pbnRlcnZh bDo1MCxfdHJhbnNhY3Rpb25faWQ6MCxfc3VibWl0RWxlbWVudFZhbHVlOm51bGws X2hhc1N1Ym1pdExpc3RlbmVyOihmdW5jdGlvbigpe2lmKFlBSE9PLnV0aWwuRXZl bnQpe1lBSE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVuZXIoZG9jdW1lbnQsImNsaWNr IixmdW5jdGlvbihDKXt2YXIgQj1ZQUhPTy51dGlsLkV2ZW50LmdldFRhcmdldChD KSxBPUIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZigoQT09PSJpbnB1dCJ8fEE9 PT0iYnV0dG9uIikmJihCLnR5cGUmJkIudHlwZS50b0xvd2VyQ2FzZSgpPT0ic3Vi bWl0Iikpe1lBSE9PLnV0aWwuQ29ubmVjdC5fc3VibWl0RWxlbWVudFZhbHVlPWVu Y29kZVVSSUNvbXBvbmVudChCLm5hbWUpKyI9IitlbmNvZGVVUklDb21wb25lbnQo Qi52YWx1ZSk7fX0pO3JldHVybiB0cnVlO31yZXR1cm4gZmFsc2U7fSkoKSxzdGFy dEV2ZW50Om5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCJzdGFydCIpLGNvbXBs ZXRlRXZlbnQ6bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQoImNvbXBsZXRlIiks c3VjY2Vzc0V2ZW50Om5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCJzdWNjZXNz IiksZmFpbHVyZUV2ZW50Om5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCJmYWls dXJlIiksdXBsb2FkRXZlbnQ6bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQoInVw bG9hZCIpLGFib3J0RXZlbnQ6bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQoImFi b3J0IiksX2N1c3RvbUV2ZW50czp7b25TdGFydDpbInN0YXJ0RXZlbnQiLCJzdGFy dCJdLG9uQ29tcGxldGU6WyJjb21wbGV0ZUV2ZW50IiwiY29tcGxldGUiXSxvblN1 Y2Nlc3M6WyJzdWNjZXNzRXZlbnQiLCJzdWNjZXNzIl0sb25GYWlsdXJlOlsiZmFp bHVyZUV2ZW50IiwiZmFpbHVyZSJdLG9uVXBsb2FkOlsidXBsb2FkRXZlbnQiLCJ1 cGxvYWQiXSxvbkFib3J0OlsiYWJvcnRFdmVudCIsImFib3J0Il19LHNldFByb2dJ ZDpmdW5jdGlvbihBKXt0aGlzLl9tc3htbF9wcm9naWQudW5zaGlmdChBKTt9LHNl dERlZmF1bHRQb3N0SGVhZGVyOmZ1bmN0aW9uKEEpe2lmKHR5cGVvZiBBPT0ic3Ry aW5nIil7dGhpcy5fZGVmYXVsdF9wb3N0X2hlYWRlcj1BO31lbHNle2lmKHR5cGVv ZiBBPT0iYm9vbGVhbiIpe3RoaXMuX3VzZV9kZWZhdWx0X3Bvc3RfaGVhZGVyPUE7 fX19LHNldERlZmF1bHRYaHJIZWFkZXI6ZnVuY3Rpb24oQSl7aWYodHlwZW9mIEE9 PSJzdHJpbmciKXt0aGlzLl9kZWZhdWx0X3hocl9oZWFkZXI9QTt9ZWxzZXt0aGlz Ll91c2VfZGVmYXVsdF94aHJfaGVhZGVyPUE7fX0sc2V0UG9sbGluZ0ludGVydmFs OmZ1bmN0aW9uKEEpe2lmKHR5cGVvZiBBPT0ibnVtYmVyIiYmaXNGaW5pdGUoQSkp e3RoaXMuX3BvbGxpbmdfaW50ZXJ2YWw9QTt9fSxjcmVhdGVYaHJPYmplY3Q6ZnVu Y3Rpb24oRil7dmFyIEUsQTt0cnl7QT1uZXcgWE1MSHR0cFJlcXVlc3QoKTtFPXtj b25uOkEsdElkOkZ9O31jYXRjaChEKXtmb3IodmFyIEI9MDtCPHRoaXMuX21zeG1s X3Byb2dpZC5sZW5ndGg7KytCKXt0cnl7QT1uZXcgQWN0aXZlWE9iamVjdCh0aGlz Ll9tc3htbF9wcm9naWRbQl0pO0U9e2Nvbm46QSx0SWQ6Rn07YnJlYWs7fWNhdGNo KEMpe319fWZpbmFsbHl7cmV0dXJuIEU7fX0sZ2V0Q29ubmVjdGlvbk9iamVjdDpm dW5jdGlvbihBKXt2YXIgQzt2YXIgRD10aGlzLl90cmFuc2FjdGlvbl9pZDt0cnl7 aWYoIUEpe0M9dGhpcy5jcmVhdGVYaHJPYmplY3QoRCk7fWVsc2V7Qz17fTtDLnRJ ZD1EO0MuaXNVcGxvYWQ9dHJ1ZTt9aWYoQyl7dGhpcy5fdHJhbnNhY3Rpb25faWQr Kzt9fWNhdGNoKEIpe31maW5hbGx5e3JldHVybiBDO319LGFzeW5jUmVxdWVzdDpm dW5jdGlvbihGLEMsRSxBKXt2YXIgRD0odGhpcy5faXNGaWxlVXBsb2FkKT90aGlz LmdldENvbm5lY3Rpb25PYmplY3QodHJ1ZSk6dGhpcy5nZXRDb25uZWN0aW9uT2Jq ZWN0KCk7dmFyIEI9KEUmJkUuYXJndW1lbnQpP0UuYXJndW1lbnQ6bnVsbDtpZigh RCl7cmV0dXJuIG51bGw7fWVsc2V7aWYoRSYmRS5jdXN0b21ldmVudHMpe3RoaXMu aW5pdEN1c3RvbUV2ZW50cyhELEUpO31pZih0aGlzLl9pc0Zvcm1TdWJtaXQpe2lm KHRoaXMuX2lzRmlsZVVwbG9hZCl7dGhpcy51cGxvYWRGaWxlKEQsRSxDLEEpO3Jl dHVybiBEO31pZihGLnRvVXBwZXJDYXNlKCk9PSJHRVQiKXtpZih0aGlzLl9zRm9y bURhdGEubGVuZ3RoIT09MCl7Qys9KChDLmluZGV4T2YoIj8iKT09LTEpPyI/Ijoi JiIpK3RoaXMuX3NGb3JtRGF0YTt9fWVsc2V7aWYoRi50b1VwcGVyQ2FzZSgpPT0i UE9TVCIpe0E9QT90aGlzLl9zRm9ybURhdGErIiYiK0E6dGhpcy5fc0Zvcm1EYXRh O319fWlmKEYudG9VcHBlckNhc2UoKT09IkdFVCImJihFJiZFLmNhY2hlPT09ZmFs c2UpKXtDKz0oKEMuaW5kZXhPZigiPyIpPT0tMSk/Ij8iOiImIikrInJuZD0iK25l dyBEYXRlKCkudmFsdWVPZigpLnRvU3RyaW5nKCk7fUQuY29ubi5vcGVuKEYsQyx0 cnVlKTtpZih0aGlzLl91c2VfZGVmYXVsdF94aHJfaGVhZGVyKXtpZighdGhpcy5f ZGVmYXVsdF9oZWFkZXJzWyJYLVJlcXVlc3RlZC1XaXRoIl0pe3RoaXMuaW5pdEhl YWRlcigiWC1SZXF1ZXN0ZWQtV2l0aCIsdGhpcy5fZGVmYXVsdF94aHJfaGVhZGVy LHRydWUpO319aWYoKEYudG9VcHBlckNhc2UoKT09PSJQT1NUIiYmdGhpcy5fdXNl X2RlZmF1bHRfcG9zdF9oZWFkZXIpJiZ0aGlzLl9pc0Zvcm1TdWJtaXQ9PT1mYWxz ZSl7dGhpcy5pbml0SGVhZGVyKCJDb250ZW50LVR5cGUiLHRoaXMuX2RlZmF1bHRf cG9zdF9oZWFkZXIpO31pZih0aGlzLl9oYXNfZGVmYXVsdF9oZWFkZXJzfHx0aGlz Ll9oYXNfaHR0cF9oZWFkZXJzKXt0aGlzLnNldEhlYWRlcihEKTt9dGhpcy5oYW5k bGVSZWFkeVN0YXRlKEQsRSk7RC5jb25uLnNlbmQoQXx8IiIpO2lmKHRoaXMuX2lz Rm9ybVN1Ym1pdD09PXRydWUpe3RoaXMucmVzZXRGb3JtU3RhdGUoKTt9dGhpcy5z dGFydEV2ZW50LmZpcmUoRCxCKTtpZihELnN0YXJ0RXZlbnQpe0Quc3RhcnRFdmVu dC5maXJlKEQsQik7fXJldHVybiBEO319LGluaXRDdXN0b21FdmVudHM6ZnVuY3Rp b24oQSxDKXt2YXIgQjtmb3IoQiBpbiBDLmN1c3RvbWV2ZW50cyl7aWYodGhpcy5f Y3VzdG9tRXZlbnRzW0JdWzBdKXtBW3RoaXMuX2N1c3RvbUV2ZW50c1tCXVswXV09 bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQodGhpcy5fY3VzdG9tRXZlbnRzW0Jd WzFdLChDLnNjb3BlKT9DLnNjb3BlOm51bGwpO0FbdGhpcy5fY3VzdG9tRXZlbnRz W0JdWzBdXS5zdWJzY3JpYmUoQy5jdXN0b21ldmVudHNbQl0pO319fSxoYW5kbGVS ZWFkeVN0YXRlOmZ1bmN0aW9uKEMsRCl7dmFyIEI9dGhpczt2YXIgQT0oRCYmRC5h cmd1bWVudCk/RC5hcmd1bWVudDpudWxsO2lmKEQmJkQudGltZW91dCl7dGhpcy5f dGltZU91dFtDLnRJZF09d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtCLmFi b3J0KEMsRCx0cnVlKTt9LEQudGltZW91dCk7fXRoaXMuX3BvbGxbQy50SWRdPXdp bmRvdy5zZXRJbnRlcnZhbChmdW5jdGlvbigpe2lmKEMuY29ubiYmQy5jb25uLnJl YWR5U3RhdGU9PT00KXt3aW5kb3cuY2xlYXJJbnRlcnZhbChCLl9wb2xsW0MudElk XSk7ZGVsZXRlIEIuX3BvbGxbQy50SWRdO2lmKEQmJkQudGltZW91dCl7d2luZG93 LmNsZWFyVGltZW91dChCLl90aW1lT3V0W0MudElkXSk7ZGVsZXRlIEIuX3RpbWVP dXRbQy50SWRdO31CLmNvbXBsZXRlRXZlbnQuZmlyZShDLEEpO2lmKEMuY29tcGxl dGVFdmVudCl7Qy5jb21wbGV0ZUV2ZW50LmZpcmUoQyxBKTt9Qi5oYW5kbGVUcmFu c2FjdGlvblJlc3BvbnNlKEMsRCk7fX0sdGhpcy5fcG9sbGluZ19pbnRlcnZhbCk7 fSxoYW5kbGVUcmFuc2FjdGlvblJlc3BvbnNlOmZ1bmN0aW9uKEYsRyxBKXt2YXIg RCxDO3ZhciBCPShHJiZHLmFyZ3VtZW50KT9HLmFyZ3VtZW50Om51bGw7dHJ5e2lm KEYuY29ubi5zdGF0dXMhPT11bmRlZmluZWQmJkYuY29ubi5zdGF0dXMhPT0wKXtE PUYuY29ubi5zdGF0dXM7fWVsc2V7RD0xMzAzMDt9fWNhdGNoKEUpe0Q9MTMwMzA7 fWlmKEQ+PTIwMCYmRDwzMDB8fEQ9PT0xMjIzKXtDPXRoaXMuY3JlYXRlUmVzcG9u c2VPYmplY3QoRixCKTtpZihHJiZHLnN1Y2Nlc3Mpe2lmKCFHLnNjb3BlKXtHLnN1 Y2Nlc3MoQyk7fWVsc2V7Ry5zdWNjZXNzLmFwcGx5KEcuc2NvcGUsW0NdKTt9fXRo aXMuc3VjY2Vzc0V2ZW50LmZpcmUoQyk7aWYoRi5zdWNjZXNzRXZlbnQpe0Yuc3Vj Y2Vzc0V2ZW50LmZpcmUoQyk7fX1lbHNle3N3aXRjaChEKXtjYXNlIDEyMDAyOmNh c2UgMTIwMjk6Y2FzZSAxMjAzMDpjYXNlIDEyMDMxOmNhc2UgMTIxNTI6Y2FzZSAx MzAzMDpDPXRoaXMuY3JlYXRlRXhjZXB0aW9uT2JqZWN0KEYudElkLEIsKEE/QTpm YWxzZSkpO2lmKEcmJkcuZmFpbHVyZSl7aWYoIUcuc2NvcGUpe0cuZmFpbHVyZShD KTt9ZWxzZXtHLmZhaWx1cmUuYXBwbHkoRy5zY29wZSxbQ10pO319YnJlYWs7ZGVm YXVsdDpDPXRoaXMuY3JlYXRlUmVzcG9uc2VPYmplY3QoRixCKTtpZihHJiZHLmZh aWx1cmUpe2lmKCFHLnNjb3BlKXtHLmZhaWx1cmUoQyk7fWVsc2V7Ry5mYWlsdXJl LmFwcGx5KEcuc2NvcGUsW0NdKTt9fX10aGlzLmZhaWx1cmVFdmVudC5maXJlKEMp O2lmKEYuZmFpbHVyZUV2ZW50KXtGLmZhaWx1cmVFdmVudC5maXJlKEMpO319dGhp cy5yZWxlYXNlT2JqZWN0KEYpO0M9bnVsbDt9LGNyZWF0ZVJlc3BvbnNlT2JqZWN0 OmZ1bmN0aW9uKEEsRyl7dmFyIEQ9e307dmFyIEk9e307dHJ5e3ZhciBDPUEuY29u bi5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKTt2YXIgRj1DLnNwbGl0KCJcbiIpO2Zv cih2YXIgRT0wO0U8Ri5sZW5ndGg7RSsrKXt2YXIgQj1GW0VdLmluZGV4T2YoIjoi KTtpZihCIT0tMSl7SVtGW0VdLnN1YnN0cmluZygwLEIpXT1GW0VdLnN1YnN0cmlu ZyhCKzIpO319fWNhdGNoKEgpe31ELnRJZD1BLnRJZDtELnN0YXR1cz0oQS5jb25u LnN0YXR1cz09MTIyMyk/MjA0OkEuY29ubi5zdGF0dXM7RC5zdGF0dXNUZXh0PShB LmNvbm4uc3RhdHVzPT0xMjIzKT8iTm8gQ29udGVudCI6QS5jb25uLnN0YXR1c1Rl eHQ7RC5nZXRSZXNwb25zZUhlYWRlcj1JO0QuZ2V0QWxsUmVzcG9uc2VIZWFkZXJz PUM7RC5yZXNwb25zZVRleHQ9QS5jb25uLnJlc3BvbnNlVGV4dDtELnJlc3BvbnNl WE1MPUEuY29ubi5yZXNwb25zZVhNTDtpZihHKXtELmFyZ3VtZW50PUc7fXJldHVy biBEO30sY3JlYXRlRXhjZXB0aW9uT2JqZWN0OmZ1bmN0aW9uKEgsRCxBKXt2YXIg Rj0wO3ZhciBHPSJjb21tdW5pY2F0aW9uIGZhaWx1cmUiO3ZhciBDPS0xO3ZhciBC PSJ0cmFuc2FjdGlvbiBhYm9ydGVkIjt2YXIgRT17fTtFLnRJZD1IO2lmKEEpe0Uu c3RhdHVzPUM7RS5zdGF0dXNUZXh0PUI7fWVsc2V7RS5zdGF0dXM9RjtFLnN0YXR1 c1RleHQ9Rzt9aWYoRCl7RS5hcmd1bWVudD1EO31yZXR1cm4gRTt9LGluaXRIZWFk ZXI6ZnVuY3Rpb24oQSxELEMpe3ZhciBCPShDKT90aGlzLl9kZWZhdWx0X2hlYWRl cnM6dGhpcy5faHR0cF9oZWFkZXJzO0JbQV09RDtpZihDKXt0aGlzLl9oYXNfZGVm YXVsdF9oZWFkZXJzPXRydWU7Cn1lbHNle3RoaXMuX2hhc19odHRwX2hlYWRlcnM9 dHJ1ZTt9fSxzZXRIZWFkZXI6ZnVuY3Rpb24oQSl7dmFyIEI7aWYodGhpcy5faGFz X2RlZmF1bHRfaGVhZGVycyl7Zm9yKEIgaW4gdGhpcy5fZGVmYXVsdF9oZWFkZXJz KXtpZihZQUhPTy5sYW5nLmhhc093blByb3BlcnR5KHRoaXMuX2RlZmF1bHRfaGVh ZGVycyxCKSl7QS5jb25uLnNldFJlcXVlc3RIZWFkZXIoQix0aGlzLl9kZWZhdWx0 X2hlYWRlcnNbQl0pO319fWlmKHRoaXMuX2hhc19odHRwX2hlYWRlcnMpe2ZvcihC IGluIHRoaXMuX2h0dHBfaGVhZGVycyl7aWYoWUFIT08ubGFuZy5oYXNPd25Qcm9w ZXJ0eSh0aGlzLl9odHRwX2hlYWRlcnMsQikpe0EuY29ubi5zZXRSZXF1ZXN0SGVh ZGVyKEIsdGhpcy5faHR0cF9oZWFkZXJzW0JdKTt9fWRlbGV0ZSB0aGlzLl9odHRw X2hlYWRlcnM7dGhpcy5faHR0cF9oZWFkZXJzPXt9O3RoaXMuX2hhc19odHRwX2hl YWRlcnM9ZmFsc2U7fX0scmVzZXREZWZhdWx0SGVhZGVyczpmdW5jdGlvbigpe2Rl bGV0ZSB0aGlzLl9kZWZhdWx0X2hlYWRlcnM7dGhpcy5fZGVmYXVsdF9oZWFkZXJz PXt9O3RoaXMuX2hhc19kZWZhdWx0X2hlYWRlcnM9ZmFsc2U7fSxzZXRGb3JtOmZ1 bmN0aW9uKE0sSCxDKXt2YXIgTCxCLEssSSxQLEo9ZmFsc2UsRj1bXSxPPTAsRSxH LEQsTixBO3RoaXMucmVzZXRGb3JtU3RhdGUoKTtpZih0eXBlb2YgTT09InN0cmlu ZyIpe0w9KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKE0pfHxkb2N1bWVudC5mb3Jt c1tNXSk7fWVsc2V7aWYodHlwZW9mIE09PSJvYmplY3QiKXtMPU07fWVsc2V7cmV0 dXJuO319aWYoSCl7dGhpcy5jcmVhdGVGcmFtZShDP0M6bnVsbCk7dGhpcy5faXNG b3JtU3VibWl0PXRydWU7dGhpcy5faXNGaWxlVXBsb2FkPXRydWU7dGhpcy5fZm9y bU5vZGU9TDtyZXR1cm47fWZvcihFPTAsRz1MLmVsZW1lbnRzLmxlbmd0aDtFPEc7 KytFKXtCPUwuZWxlbWVudHNbRV07UD1CLmRpc2FibGVkO0s9Qi5uYW1lO2lmKCFQ JiZLKXtLPWVuY29kZVVSSUNvbXBvbmVudChLKSsiPSI7ST1lbmNvZGVVUklDb21w b25lbnQoQi52YWx1ZSk7c3dpdGNoKEIudHlwZSl7Y2FzZSJzZWxlY3Qtb25lIjpp ZihCLnNlbGVjdGVkSW5kZXg+LTEpe0E9Qi5vcHRpb25zW0Iuc2VsZWN0ZWRJbmRl eF07RltPKytdPUsrZW5jb2RlVVJJQ29tcG9uZW50KChBLmF0dHJpYnV0ZXMudmFs dWUmJkEuYXR0cmlidXRlcy52YWx1ZS5zcGVjaWZpZWQpP0EudmFsdWU6QS50ZXh0 KTt9YnJlYWs7Y2FzZSJzZWxlY3QtbXVsdGlwbGUiOmlmKEIuc2VsZWN0ZWRJbmRl eD4tMSl7Zm9yKEQ9Qi5zZWxlY3RlZEluZGV4LE49Qi5vcHRpb25zLmxlbmd0aDtE PE47KytEKXtBPUIub3B0aW9uc1tEXTtpZihBLnNlbGVjdGVkKXtGW08rK109Sytl bmNvZGVVUklDb21wb25lbnQoKEEuYXR0cmlidXRlcy52YWx1ZSYmQS5hdHRyaWJ1 dGVzLnZhbHVlLnNwZWNpZmllZCk/QS52YWx1ZTpBLnRleHQpO319fWJyZWFrO2Nh c2UicmFkaW8iOmNhc2UiY2hlY2tib3giOmlmKEIuY2hlY2tlZCl7RltPKytdPUsr STt9YnJlYWs7Y2FzZSJmaWxlIjpjYXNlIHVuZGVmaW5lZDpjYXNlInJlc2V0Ijpj YXNlImJ1dHRvbiI6YnJlYWs7Y2FzZSJzdWJtaXQiOmlmKEo9PT1mYWxzZSl7aWYo dGhpcy5faGFzU3VibWl0TGlzdGVuZXImJnRoaXMuX3N1Ym1pdEVsZW1lbnRWYWx1 ZSl7RltPKytdPXRoaXMuX3N1Ym1pdEVsZW1lbnRWYWx1ZTt9Sj10cnVlO31icmVh aztkZWZhdWx0OkZbTysrXT1LK0k7fX19dGhpcy5faXNGb3JtU3VibWl0PXRydWU7 dGhpcy5fc0Zvcm1EYXRhPUYuam9pbigiJiIpO3RoaXMuaW5pdEhlYWRlcigiQ29u dGVudC1UeXBlIix0aGlzLl9kZWZhdWx0X2Zvcm1faGVhZGVyKTtyZXR1cm4gdGhp cy5fc0Zvcm1EYXRhO30scmVzZXRGb3JtU3RhdGU6ZnVuY3Rpb24oKXt0aGlzLl9p c0Zvcm1TdWJtaXQ9ZmFsc2U7dGhpcy5faXNGaWxlVXBsb2FkPWZhbHNlO3RoaXMu X2Zvcm1Ob2RlPW51bGw7dGhpcy5fc0Zvcm1EYXRhPSIiO30sY3JlYXRlRnJhbWU6 ZnVuY3Rpb24oQSl7dmFyIEI9Inl1aUlPIit0aGlzLl90cmFuc2FjdGlvbl9pZDt2 YXIgQztpZihZQUhPTy5lbnYudWEuaWUpe0M9ZG9jdW1lbnQuY3JlYXRlRWxlbWVu dCgnPGlmcmFtZSBpZD0iJytCKyciIG5hbWU9IicrQisnIiAvPicpO2lmKHR5cGVv ZiBBPT0iYm9vbGVhbiIpe0Muc3JjPSJqYXZhc2NyaXB0OmZhbHNlIjt9fWVsc2V7 Qz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTtDLmlkPUI7Qy5uYW1l PUI7fUMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtDLnN0eWxlLnRvcD0iLTEw MDBweCI7Qy5zdHlsZS5sZWZ0PSItMTAwMHB4Ijtkb2N1bWVudC5ib2R5LmFwcGVu ZENoaWxkKEMpO30sYXBwZW5kUG9zdERhdGE6ZnVuY3Rpb24oQSl7dmFyIEQ9W10s Qj1BLnNwbGl0KCImIiksQyxFO2ZvcihDPTA7QzxCLmxlbmd0aDtDKyspe0U9QltD XS5pbmRleE9mKCI9Iik7aWYoRSE9LTEpe0RbQ109ZG9jdW1lbnQuY3JlYXRlRWxl bWVudCgiaW5wdXQiKTtEW0NdLnR5cGU9ImhpZGRlbiI7RFtDXS5uYW1lPWRlY29k ZVVSSUNvbXBvbmVudChCW0NdLnN1YnN0cmluZygwLEUpKTtEW0NdLnZhbHVlPWRl Y29kZVVSSUNvbXBvbmVudChCW0NdLnN1YnN0cmluZyhFKzEpKTt0aGlzLl9mb3Jt Tm9kZS5hcHBlbmRDaGlsZChEW0NdKTt9fXJldHVybiBEO30sdXBsb2FkRmlsZTpm dW5jdGlvbihELE4sRSxDKXt2YXIgST0ieXVpSU8iK0QudElkLEo9Im11bHRpcGFy dC9mb3JtLWRhdGEiLEw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoSSksTz10aGlz LEs9KE4mJk4uYXJndW1lbnQpP04uYXJndW1lbnQ6bnVsbCxNLEgsQixHO3ZhciBB PXthY3Rpb246dGhpcy5fZm9ybU5vZGUuZ2V0QXR0cmlidXRlKCJhY3Rpb24iKSxt ZXRob2Q6dGhpcy5fZm9ybU5vZGUuZ2V0QXR0cmlidXRlKCJtZXRob2QiKSx0YXJn ZXQ6dGhpcy5fZm9ybU5vZGUuZ2V0QXR0cmlidXRlKCJ0YXJnZXQiKX07dGhpcy5f Zm9ybU5vZGUuc2V0QXR0cmlidXRlKCJhY3Rpb24iLEUpO3RoaXMuX2Zvcm1Ob2Rl LnNldEF0dHJpYnV0ZSgibWV0aG9kIiwiUE9TVCIpO3RoaXMuX2Zvcm1Ob2RlLnNl dEF0dHJpYnV0ZSgidGFyZ2V0IixJKTtpZihZQUhPTy5lbnYudWEuaWUpe3RoaXMu X2Zvcm1Ob2RlLnNldEF0dHJpYnV0ZSgiZW5jb2RpbmciLEopO31lbHNle3RoaXMu X2Zvcm1Ob2RlLnNldEF0dHJpYnV0ZSgiZW5jdHlwZSIsSik7fWlmKEMpe009dGhp cy5hcHBlbmRQb3N0RGF0YShDKTt9dGhpcy5fZm9ybU5vZGUuc3VibWl0KCk7dGhp cy5zdGFydEV2ZW50LmZpcmUoRCxLKTtpZihELnN0YXJ0RXZlbnQpe0Quc3RhcnRF dmVudC5maXJlKEQsSyk7fWlmKE4mJk4udGltZW91dCl7dGhpcy5fdGltZU91dFtE LnRJZF09d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtPLmFib3J0KEQsTix0 cnVlKTt9LE4udGltZW91dCk7fWlmKE0mJk0ubGVuZ3RoPjApe2ZvcihIPTA7SDxN Lmxlbmd0aDtIKyspe3RoaXMuX2Zvcm1Ob2RlLnJlbW92ZUNoaWxkKE1bSF0pO319 Zm9yKEIgaW4gQSl7aWYoWUFIT08ubGFuZy5oYXNPd25Qcm9wZXJ0eShBLEIpKXtp ZihBW0JdKXt0aGlzLl9mb3JtTm9kZS5zZXRBdHRyaWJ1dGUoQixBW0JdKTt9ZWxz ZXt0aGlzLl9mb3JtTm9kZS5yZW1vdmVBdHRyaWJ1dGUoQik7fX19dGhpcy5yZXNl dEZvcm1TdGF0ZSgpO3ZhciBGPWZ1bmN0aW9uKCl7aWYoTiYmTi50aW1lb3V0KXt3 aW5kb3cuY2xlYXJUaW1lb3V0KE8uX3RpbWVPdXRbRC50SWRdKTtkZWxldGUgTy5f dGltZU91dFtELnRJZF07fU8uY29tcGxldGVFdmVudC5maXJlKEQsSyk7aWYoRC5j b21wbGV0ZUV2ZW50KXtELmNvbXBsZXRlRXZlbnQuZmlyZShELEspO31HPXt0SWQ6 RC50SWQsYXJndW1lbnQ6Ti5hcmd1bWVudH07dHJ5e0cucmVzcG9uc2VUZXh0PUwu Y29udGVudFdpbmRvdy5kb2N1bWVudC5ib2R5P0wuY29udGVudFdpbmRvdy5kb2N1 bWVudC5ib2R5LmlubmVySFRNTDpMLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuZG9j dW1lbnRFbGVtZW50LnRleHRDb250ZW50O0cucmVzcG9uc2VYTUw9TC5jb250ZW50 V2luZG93LmRvY3VtZW50LlhNTERvY3VtZW50P0wuY29udGVudFdpbmRvdy5kb2N1 bWVudC5YTUxEb2N1bWVudDpMLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7fWNhdGNo KFApe31pZihOJiZOLnVwbG9hZCl7aWYoIU4uc2NvcGUpe04udXBsb2FkKEcpO31l bHNle04udXBsb2FkLmFwcGx5KE4uc2NvcGUsW0ddKTt9fU8udXBsb2FkRXZlbnQu ZmlyZShHKTtpZihELnVwbG9hZEV2ZW50KXtELnVwbG9hZEV2ZW50LmZpcmUoRyk7 fVlBSE9PLnV0aWwuRXZlbnQucmVtb3ZlTGlzdGVuZXIoTCwibG9hZCIsRik7c2V0 VGltZW91dChmdW5jdGlvbigpe2RvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoTCk7 Ty5yZWxlYXNlT2JqZWN0KEQpO30sMTAwKTt9O1lBSE9PLnV0aWwuRXZlbnQuYWRk TGlzdGVuZXIoTCwibG9hZCIsRik7fSxhYm9ydDpmdW5jdGlvbihFLEcsQSl7dmFy IEQ7dmFyIEI9KEcmJkcuYXJndW1lbnQpP0cuYXJndW1lbnQ6bnVsbDtpZihFJiZF LmNvbm4pe2lmKHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyhFKSl7RS5jb25uLmFib3J0 KCk7d2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy5fcG9sbFtFLnRJZF0pO2RlbGV0 ZSB0aGlzLl9wb2xsW0UudElkXTtpZihBKXt3aW5kb3cuY2xlYXJUaW1lb3V0KHRo aXMuX3RpbWVPdXRbRS50SWRdKTtkZWxldGUgdGhpcy5fdGltZU91dFtFLnRJZF07 fUQ9dHJ1ZTt9fWVsc2V7aWYoRSYmRS5pc1VwbG9hZD09PXRydWUpe3ZhciBDPSJ5 dWlJTyIrRS50SWQ7dmFyIEY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoQyk7aWYo Ril7WUFIT08udXRpbC5FdmVudC5yZW1vdmVMaXN0ZW5lcihGLCJsb2FkIik7ZG9j dW1lbnQuYm9keS5yZW1vdmVDaGlsZChGKTtpZihBKXt3aW5kb3cuY2xlYXJUaW1l b3V0KHRoaXMuX3RpbWVPdXRbRS50SWRdKTtkZWxldGUgdGhpcy5fdGltZU91dFtF LnRJZF07fUQ9dHJ1ZTt9fWVsc2V7RD1mYWxzZTt9fWlmKEQ9PT10cnVlKXt0aGlz LmFib3J0RXZlbnQuZmlyZShFLEIpO2lmKEUuYWJvcnRFdmVudCl7RS5hYm9ydEV2 ZW50LmZpcmUoRSxCKTt9dGhpcy5oYW5kbGVUcmFuc2FjdGlvblJlc3BvbnNlKEUs Ryx0cnVlKTt9cmV0dXJuIEQ7fSxpc0NhbGxJblByb2dyZXNzOmZ1bmN0aW9uKEIp e2lmKEImJkIuY29ubil7cmV0dXJuIEIuY29ubi5yZWFkeVN0YXRlIT09NCYmQi5j b25uLnJlYWR5U3RhdGUhPT0wO31lbHNle2lmKEImJkIuaXNVcGxvYWQ9PT10cnVl KXt2YXIgQT0ieXVpSU8iK0IudElkO3JldHVybiBkb2N1bWVudC5nZXRFbGVtZW50 QnlJZChBKT90cnVlOmZhbHNlO31lbHNle3JldHVybiBmYWxzZTt9fX0scmVsZWFz ZU9iamVjdDpmdW5jdGlvbihBKXtpZihBJiZBLmNvbm4pe0EuY29ubj1udWxsO0E9 bnVsbDt9fX07WUFIT08ucmVnaXN0ZXIoImNvbm5lY3Rpb24iLFlBSE9PLnV0aWwu Q29ubmVjdCx7dmVyc2lvbjoiMi43LjAiLGJ1aWxkOiIxNzk5In0pOy8qCkNvcHly aWdodCAoYykgMjAwOSwgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K Q29kZSBsaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2U6Cmh0dHA6Ly9kZXZl bG9wZXIueWFob28ubmV0L3l1aS9saWNlbnNlLnR4dAp2ZXJzaW9uOiAyLjcuMAoq LwooZnVuY3Rpb24oKXt2YXIgQj1ZQUhPTy51dGlsO3ZhciBBPWZ1bmN0aW9uKEQs QyxFLEYpe2lmKCFEKXt9dGhpcy5pbml0KEQsQyxFLEYpO307QS5OQU1FPSJBbmlt IjtBLnByb3RvdHlwZT17dG9TdHJpbmc6ZnVuY3Rpb24oKXt2YXIgQz10aGlzLmdl dEVsKCl8fHt9O3ZhciBEPUMuaWR8fEMudGFnTmFtZTtyZXR1cm4odGhpcy5jb25z dHJ1Y3Rvci5OQU1FKyI6ICIrRCk7fSxwYXR0ZXJuczp7bm9OZWdhdGl2ZXM6L3dp ZHRofGhlaWdodHxvcGFjaXR5fHBhZGRpbmcvaSxvZmZzZXRBdHRyaWJ1dGU6L14o KHdpZHRofGhlaWdodCl8KHRvcHxsZWZ0KSkkLyxkZWZhdWx0VW5pdDovd2lkdGh8 aGVpZ2h0fHRvcCR8Ym90dG9tJHxsZWZ0JHxyaWdodCQvaSxvZmZzZXRVbml0Oi9c ZCsoZW18JXxlbnxleHxwdHxpbnxjbXxtbXxwYykkL2l9LGRvTWV0aG9kOmZ1bmN0 aW9uKEMsRSxEKXtyZXR1cm4gdGhpcy5tZXRob2QodGhpcy5jdXJyZW50RnJhbWUs RSxELUUsdGhpcy50b3RhbEZyYW1lcyk7fSxzZXRBdHRyaWJ1dGU6ZnVuY3Rpb24o QyxGLEUpe3ZhciBEPXRoaXMuZ2V0RWwoKTtpZih0aGlzLnBhdHRlcm5zLm5vTmVn YXRpdmVzLnRlc3QoQykpe0Y9KEY+MCk/RjowO31pZigic3R5bGUiIGluIEQpe0Iu RG9tLnNldFN0eWxlKEQsQyxGK0UpO31lbHNle2lmKEMgaW4gRCl7RFtDXT1GO319 fSxnZXRBdHRyaWJ1dGU6ZnVuY3Rpb24oQyl7dmFyIEU9dGhpcy5nZXRFbCgpO3Zh ciBHPUIuRG9tLmdldFN0eWxlKEUsQyk7aWYoRyE9PSJhdXRvIiYmIXRoaXMucGF0 dGVybnMub2Zmc2V0VW5pdC50ZXN0KEcpKXtyZXR1cm4gcGFyc2VGbG9hdChHKTt9 dmFyIEQ9dGhpcy5wYXR0ZXJucy5vZmZzZXRBdHRyaWJ1dGUuZXhlYyhDKXx8W107 dmFyIEg9ISEoRFszXSk7dmFyIEY9ISEoRFsyXSk7aWYoInN0eWxlIiBpbiBFKXtp ZihGfHwoQi5Eb20uZ2V0U3R5bGUoRSwicG9zaXRpb24iKT09ImFic29sdXRlIiYm SCkpe0c9RVsib2Zmc2V0IitEWzBdLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK0Rb MF0uc3Vic3RyKDEpXTt9ZWxzZXtHPTA7fX1lbHNle2lmKEMgaW4gRSl7Rz1FW0Nd O319cmV0dXJuIEc7fSxnZXREZWZhdWx0VW5pdDpmdW5jdGlvbihDKXtpZih0aGlz LnBhdHRlcm5zLmRlZmF1bHRVbml0LnRlc3QoQykpe3JldHVybiJweCI7fXJldHVy biIiO30sc2V0UnVudGltZUF0dHJpYnV0ZTpmdW5jdGlvbihEKXt2YXIgSTt2YXIg RTt2YXIgRj10aGlzLmF0dHJpYnV0ZXM7dGhpcy5ydW50aW1lQXR0cmlidXRlc1tE XT17fTt2YXIgSD1mdW5jdGlvbihKKXtyZXR1cm4odHlwZW9mIEohPT0idW5kZWZp bmVkIik7fTtpZighSChGW0RdWyJ0byJdKSYmIUgoRltEXVsiYnkiXSkpe3JldHVy biBmYWxzZTt9ST0oSChGW0RdWyJmcm9tIl0pKT9GW0RdWyJmcm9tIl06dGhpcy5n ZXRBdHRyaWJ1dGUoRCk7aWYoSChGW0RdWyJ0byJdKSl7RT1GW0RdWyJ0byJdO31l bHNle2lmKEgoRltEXVsiYnkiXSkpe2lmKEkuY29uc3RydWN0b3I9PUFycmF5KXtF PVtdO2Zvcih2YXIgRz0wLEM9SS5sZW5ndGg7RzxDOysrRyl7RVtHXT1JW0ddK0Zb RF1bImJ5Il1bR10qMTt9fWVsc2V7RT1JK0ZbRF1bImJ5Il0qMTt9fX10aGlzLnJ1 bnRpbWVBdHRyaWJ1dGVzW0RdLnN0YXJ0PUk7dGhpcy5ydW50aW1lQXR0cmlidXRl c1tEXS5lbmQ9RTt0aGlzLnJ1bnRpbWVBdHRyaWJ1dGVzW0RdLnVuaXQ9KEgoRltE XS51bml0KSk/RltEXVsidW5pdCJdOnRoaXMuZ2V0RGVmYXVsdFVuaXQoRCk7cmV0 dXJuIHRydWU7fSxpbml0OmZ1bmN0aW9uKEUsSixJLEMpe3ZhciBEPWZhbHNlO3Zh ciBGPW51bGw7dmFyIEg9MDtFPUIuRG9tLmdldChFKTt0aGlzLmF0dHJpYnV0ZXM9 Snx8e307dGhpcy5kdXJhdGlvbj0hWUFIT08ubGFuZy5pc1VuZGVmaW5lZChJKT9J OjE7dGhpcy5tZXRob2Q9Q3x8Qi5FYXNpbmcuZWFzZU5vbmU7dGhpcy51c2VTZWNv bmRzPXRydWU7dGhpcy5jdXJyZW50RnJhbWU9MDt0aGlzLnRvdGFsRnJhbWVzPUIu QW5pbU1nci5mcHM7dGhpcy5zZXRFbD1mdW5jdGlvbihNKXtFPUIuRG9tLmdldChN KTt9O3RoaXMuZ2V0RWw9ZnVuY3Rpb24oKXtyZXR1cm4gRTt9O3RoaXMuaXNBbmlt YXRlZD1mdW5jdGlvbigpe3JldHVybiBEO307dGhpcy5nZXRTdGFydFRpbWU9ZnVu Y3Rpb24oKXtyZXR1cm4gRjt9O3RoaXMucnVudGltZUF0dHJpYnV0ZXM9e307dGhp cy5hbmltYXRlPWZ1bmN0aW9uKCl7aWYodGhpcy5pc0FuaW1hdGVkKCkpe3JldHVy biBmYWxzZTt9dGhpcy5jdXJyZW50RnJhbWU9MDt0aGlzLnRvdGFsRnJhbWVzPSh0 aGlzLnVzZVNlY29uZHMpP01hdGguY2VpbChCLkFuaW1NZ3IuZnBzKnRoaXMuZHVy YXRpb24pOnRoaXMuZHVyYXRpb247aWYodGhpcy5kdXJhdGlvbj09PTAmJnRoaXMu dXNlU2Vjb25kcyl7dGhpcy50b3RhbEZyYW1lcz0xO31CLkFuaW1NZ3IucmVnaXN0 ZXJFbGVtZW50KHRoaXMpO3JldHVybiB0cnVlO307dGhpcy5zdG9wPWZ1bmN0aW9u KE0pe2lmKCF0aGlzLmlzQW5pbWF0ZWQoKSl7cmV0dXJuIGZhbHNlO31pZihNKXt0 aGlzLmN1cnJlbnRGcmFtZT10aGlzLnRvdGFsRnJhbWVzO3RoaXMuX29uVHdlZW4u ZmlyZSgpO31CLkFuaW1NZ3Iuc3RvcCh0aGlzKTt9O3ZhciBMPWZ1bmN0aW9uKCl7 dGhpcy5vblN0YXJ0LmZpcmUoKTt0aGlzLnJ1bnRpbWVBdHRyaWJ1dGVzPXt9O2Zv cih2YXIgTSBpbiB0aGlzLmF0dHJpYnV0ZXMpe3RoaXMuc2V0UnVudGltZUF0dHJp YnV0ZShNKTt9RD10cnVlO0g9MDtGPW5ldyBEYXRlKCk7fTt2YXIgSz1mdW5jdGlv bigpe3ZhciBPPXtkdXJhdGlvbjpuZXcgRGF0ZSgpLXRoaXMuZ2V0U3RhcnRUaW1l KCksY3VycmVudEZyYW1lOnRoaXMuY3VycmVudEZyYW1lfTtPLnRvU3RyaW5nPWZ1 bmN0aW9uKCl7cmV0dXJuKCJkdXJhdGlvbjogIitPLmR1cmF0aW9uKyIsIGN1cnJl bnRGcmFtZTogIitPLmN1cnJlbnRGcmFtZSk7fTt0aGlzLm9uVHdlZW4uZmlyZShP KTt2YXIgTj10aGlzLnJ1bnRpbWVBdHRyaWJ1dGVzO2Zvcih2YXIgTSBpbiBOKXt0 aGlzLnNldEF0dHJpYnV0ZShNLHRoaXMuZG9NZXRob2QoTSxOW01dLnN0YXJ0LE5b TV0uZW5kKSxOW01dLnVuaXQpO31IKz0xO307dmFyIEc9ZnVuY3Rpb24oKXt2YXIg TT0obmV3IERhdGUoKS1GKS8xMDAwO3ZhciBOPXtkdXJhdGlvbjpNLGZyYW1lczpI LGZwczpIL019O04udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4oImR1cmF0aW9u OiAiK04uZHVyYXRpb24rIiwgZnJhbWVzOiAiK04uZnJhbWVzKyIsIGZwczogIitO LmZwcyk7fTtEPWZhbHNlO0g9MDt0aGlzLm9uQ29tcGxldGUuZmlyZShOKTt9O3Ro aXMuX29uU3RhcnQ9bmV3IEIuQ3VzdG9tRXZlbnQoIl9zdGFydCIsdGhpcyx0cnVl KTt0aGlzLm9uU3RhcnQ9bmV3IEIuQ3VzdG9tRXZlbnQoInN0YXJ0Iix0aGlzKTt0 aGlzLm9uVHdlZW49bmV3IEIuQ3VzdG9tRXZlbnQoInR3ZWVuIix0aGlzKTt0aGlz Ll9vblR3ZWVuPW5ldyBCLkN1c3RvbUV2ZW50KCJfdHdlZW4iLHRoaXMsdHJ1ZSk7 dGhpcy5vbkNvbXBsZXRlPW5ldyBCLkN1c3RvbUV2ZW50KCJjb21wbGV0ZSIsdGhp cyk7dGhpcy5fb25Db21wbGV0ZT1uZXcgQi5DdXN0b21FdmVudCgiX2NvbXBsZXRl Iix0aGlzLHRydWUpO3RoaXMuX29uU3RhcnQuc3Vic2NyaWJlKEwpO3RoaXMuX29u VHdlZW4uc3Vic2NyaWJlKEspO3RoaXMuX29uQ29tcGxldGUuc3Vic2NyaWJlKEcp O319O0IuQW5pbT1BO30pKCk7WUFIT08udXRpbC5BbmltTWdyPW5ldyBmdW5jdGlv bigpe3ZhciBDPW51bGw7dmFyIEI9W107dmFyIEE9MDt0aGlzLmZwcz0xMDAwO3Ro aXMuZGVsYXk9MTt0aGlzLnJlZ2lzdGVyRWxlbWVudD1mdW5jdGlvbihGKXtCW0Iu bGVuZ3RoXT1GO0ErPTE7Ri5fb25TdGFydC5maXJlKCk7dGhpcy5zdGFydCgpO307 dGhpcy51blJlZ2lzdGVyPWZ1bmN0aW9uKEcsRil7Rj1GfHxFKEcpO2lmKCFHLmlz QW5pbWF0ZWQoKXx8Rj09LTEpe3JldHVybiBmYWxzZTt9Ry5fb25Db21wbGV0ZS5m aXJlKCk7Qi5zcGxpY2UoRiwxKTtBLT0xO2lmKEE8PTApe3RoaXMuc3RvcCgpO31y ZXR1cm4gdHJ1ZTt9O3RoaXMuc3RhcnQ9ZnVuY3Rpb24oKXtpZihDPT09bnVsbCl7 Qz1zZXRJbnRlcnZhbCh0aGlzLnJ1bix0aGlzLmRlbGF5KTt9fTt0aGlzLnN0b3A9 ZnVuY3Rpb24oSCl7aWYoIUgpe2NsZWFySW50ZXJ2YWwoQyk7Zm9yKHZhciBHPTAs Rj1CLmxlbmd0aDtHPEY7KytHKXt0aGlzLnVuUmVnaXN0ZXIoQlswXSwwKTt9Qj1b XTtDPW51bGw7QT0wO31lbHNle3RoaXMudW5SZWdpc3RlcihIKTt9fTt0aGlzLnJ1 bj1mdW5jdGlvbigpe2Zvcih2YXIgSD0wLEY9Qi5sZW5ndGg7SDxGOysrSCl7dmFy IEc9QltIXTtpZighR3x8IUcuaXNBbmltYXRlZCgpKXtjb250aW51ZTt9aWYoRy5j dXJyZW50RnJhbWU8Ry50b3RhbEZyYW1lc3x8Ry50b3RhbEZyYW1lcz09PW51bGwp e0cuY3VycmVudEZyYW1lKz0xO2lmKEcudXNlU2Vjb25kcyl7RChHKTt9Ry5fb25U d2Vlbi5maXJlKCk7fWVsc2V7WUFIT08udXRpbC5BbmltTWdyLnN0b3AoRyxIKTt9 fX07dmFyIEU9ZnVuY3Rpb24oSCl7Zm9yKHZhciBHPTAsRj1CLmxlbmd0aDtHPEY7 KytHKXtpZihCW0ddPT1IKXtyZXR1cm4gRzt9fXJldHVybiAtMTt9O3ZhciBEPWZ1 bmN0aW9uKEcpe3ZhciBKPUcudG90YWxGcmFtZXM7dmFyIEk9Ry5jdXJyZW50RnJh bWU7dmFyIEg9KEcuY3VycmVudEZyYW1lKkcuZHVyYXRpb24qMTAwMC9HLnRvdGFs RnJhbWVzKTt2YXIgRj0obmV3IERhdGUoKS1HLmdldFN0YXJ0VGltZSgpKTt2YXIg Sz0wO2lmKEY8Ry5kdXJhdGlvbioxMDAwKXtLPU1hdGgucm91bmQoKEYvSC0xKSpH LmN1cnJlbnRGcmFtZSk7fWVsc2V7Sz1KLShJKzEpO31pZihLPjAmJmlzRmluaXRl KEspKXtpZihHLmN1cnJlbnRGcmFtZStLPj1KKXtLPUotKEkrMSk7fUcuY3VycmVu dEZyYW1lKz1LO319O307WUFIT08udXRpbC5CZXppZXI9bmV3IGZ1bmN0aW9uKCl7 dGhpcy5nZXRQb3NpdGlvbj1mdW5jdGlvbihFLEQpe3ZhciBGPUUubGVuZ3RoO3Zh ciBDPVtdO2Zvcih2YXIgQj0wO0I8RjsrK0Ipe0NbQl09W0VbQl1bMF0sRVtCXVsx XV07fWZvcih2YXIgQT0xO0E8RjsrK0Epe2ZvcihCPTA7QjxGLUE7KytCKXtDW0Jd WzBdPSgxLUQpKkNbQl1bMF0rRCpDW3BhcnNlSW50KEIrMSwxMCldWzBdO0NbQl1b MV09KDEtRCkqQ1tCXVsxXStEKkNbcGFyc2VJbnQoQisxLDEwKV1bMV07fX1yZXR1 cm5bQ1swXVswXSxDWzBdWzFdXTt9O307KGZ1bmN0aW9uKCl7dmFyIEE9ZnVuY3Rp b24oRixFLEcsSCl7QS5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxG LEUsRyxIKTt9O0EuTkFNRT0iQ29sb3JBbmltIjtBLkRFRkFVTFRfQkdDT0xPUj0i I2ZmZiI7dmFyIEM9WUFIT08udXRpbDtZQUhPTy5leHRlbmQoQSxDLkFuaW0pO3Zh ciBEPUEuc3VwZXJjbGFzczt2YXIgQj1BLnByb3RvdHlwZTtCLnBhdHRlcm5zLmNv bG9yPS9jb2xvciQvaTtCLnBhdHRlcm5zLnJnYj0vXnJnYlwoKFswLTldKylccyos XHMqKFswLTldKylccyosXHMqKFswLTldKylcKSQvaTtCLnBhdHRlcm5zLmhleD0v XiM/KFswLTlBLUZdezJ9KShbMC05QS1GXXsyfSkoWzAtOUEtRl17Mn0pJC9pO0Iu cGF0dGVybnMuaGV4Mz0vXiM/KFswLTlBLUZdezF9KShbMC05QS1GXXsxfSkoWzAt OUEtRl17MX0pJC9pO0IucGF0dGVybnMudHJhbnNwYXJlbnQ9L150cmFuc3BhcmVu dHxyZ2JhXCgwLCAwLCAwLCAwXCkkLztCLnBhcnNlQ29sb3I9ZnVuY3Rpb24oRSl7 aWYoRS5sZW5ndGg9PTMpe3JldHVybiBFO312YXIgRj10aGlzLnBhdHRlcm5zLmhl eC5leGVjKEUpO2lmKEYmJkYubGVuZ3RoPT00KXtyZXR1cm5bcGFyc2VJbnQoRlsx XSwxNikscGFyc2VJbnQoRlsyXSwxNikscGFyc2VJbnQoRlszXSwxNildO31GPXRo aXMucGF0dGVybnMucmdiLmV4ZWMoRSk7aWYoRiYmRi5sZW5ndGg9PTQpe3JldHVy bltwYXJzZUludChGWzFdLDEwKSxwYXJzZUludChGWzJdLDEwKSxwYXJzZUludChG WzNdLDEwKV07fUY9dGhpcy5wYXR0ZXJucy5oZXgzLmV4ZWMoRSk7aWYoRiYmRi5s ZW5ndGg9PTQpe3JldHVybltwYXJzZUludChGWzFdK0ZbMV0sMTYpLHBhcnNlSW50 KEZbMl0rRlsyXSwxNikscGFyc2VJbnQoRlszXStGWzNdLDE2KV07Cn1yZXR1cm4g bnVsbDt9O0IuZ2V0QXR0cmlidXRlPWZ1bmN0aW9uKEUpe3ZhciBHPXRoaXMuZ2V0 RWwoKTtpZih0aGlzLnBhdHRlcm5zLmNvbG9yLnRlc3QoRSkpe3ZhciBJPVlBSE9P LnV0aWwuRG9tLmdldFN0eWxlKEcsRSk7dmFyIEg9dGhpcztpZih0aGlzLnBhdHRl cm5zLnRyYW5zcGFyZW50LnRlc3QoSSkpe3ZhciBGPVlBSE9PLnV0aWwuRG9tLmdl dEFuY2VzdG9yQnkoRyxmdW5jdGlvbihKKXtyZXR1cm4gIUgucGF0dGVybnMudHJh bnNwYXJlbnQudGVzdChJKTt9KTtpZihGKXtJPUMuRG9tLmdldFN0eWxlKEYsRSk7 fWVsc2V7ST1BLkRFRkFVTFRfQkdDT0xPUjt9fX1lbHNle0k9RC5nZXRBdHRyaWJ1 dGUuY2FsbCh0aGlzLEUpO31yZXR1cm4gSTt9O0IuZG9NZXRob2Q9ZnVuY3Rpb24o RixKLEcpe3ZhciBJO2lmKHRoaXMucGF0dGVybnMuY29sb3IudGVzdChGKSl7ST1b XTtmb3IodmFyIEg9MCxFPUoubGVuZ3RoO0g8RTsrK0gpe0lbSF09RC5kb01ldGhv ZC5jYWxsKHRoaXMsRixKW0hdLEdbSF0pO31JPSJyZ2IoIitNYXRoLmZsb29yKElb MF0pKyIsIitNYXRoLmZsb29yKElbMV0pKyIsIitNYXRoLmZsb29yKElbMl0pKyIp Ijt9ZWxzZXtJPUQuZG9NZXRob2QuY2FsbCh0aGlzLEYsSixHKTt9cmV0dXJuIEk7 fTtCLnNldFJ1bnRpbWVBdHRyaWJ1dGU9ZnVuY3Rpb24oRil7RC5zZXRSdW50aW1l QXR0cmlidXRlLmNhbGwodGhpcyxGKTtpZih0aGlzLnBhdHRlcm5zLmNvbG9yLnRl c3QoRikpe3ZhciBIPXRoaXMuYXR0cmlidXRlczt2YXIgSj10aGlzLnBhcnNlQ29s b3IodGhpcy5ydW50aW1lQXR0cmlidXRlc1tGXS5zdGFydCk7dmFyIEc9dGhpcy5w YXJzZUNvbG9yKHRoaXMucnVudGltZUF0dHJpYnV0ZXNbRl0uZW5kKTtpZih0eXBl b2YgSFtGXVsidG8iXT09PSJ1bmRlZmluZWQiJiZ0eXBlb2YgSFtGXVsiYnkiXSE9 PSJ1bmRlZmluZWQiKXtHPXRoaXMucGFyc2VDb2xvcihIW0ZdLmJ5KTtmb3IodmFy IEk9MCxFPUoubGVuZ3RoO0k8RTsrK0kpe0dbSV09SltJXStHW0ldO319dGhpcy5y dW50aW1lQXR0cmlidXRlc1tGXS5zdGFydD1KO3RoaXMucnVudGltZUF0dHJpYnV0 ZXNbRl0uZW5kPUc7fX07Qy5Db2xvckFuaW09QTt9KSgpOwovKgpURVJNUyBPRiBV U0UgLSBFQVNJTkcgRVFVQVRJT05TCk9wZW4gc291cmNlIHVuZGVyIHRoZSBCU0Qg TGljZW5zZS4KQ29weXJpZ2h0IDIwMDEgUm9iZXJ0IFBlbm5lciBBbGwgcmlnaHRz IHJlc2VydmVkLgoKUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJl IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u cyBhcmUgbWV0OgoKICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11 c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogKiBS ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl IGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0 cmlidXRpb24uCiAqIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3Ig dGhlIG5hbWVzIG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUg d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCgpUSElT IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB TkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRP UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiovCllBSE9PLnV0aWwuRWFz aW5nPXtlYXNlTm9uZTpmdW5jdGlvbihCLEEsRCxDKXtyZXR1cm4gRCpCL0MrQTt9 LGVhc2VJbjpmdW5jdGlvbihCLEEsRCxDKXtyZXR1cm4gRCooQi89QykqQitBO30s ZWFzZU91dDpmdW5jdGlvbihCLEEsRCxDKXtyZXR1cm4gLUQqKEIvPUMpKihCLTIp K0E7fSxlYXNlQm90aDpmdW5jdGlvbihCLEEsRCxDKXtpZigoQi89Qy8yKTwxKXty ZXR1cm4gRC8yKkIqQitBO31yZXR1cm4gLUQvMiooKC0tQikqKEItMiktMSkrQTt9 LGVhc2VJblN0cm9uZzpmdW5jdGlvbihCLEEsRCxDKXtyZXR1cm4gRCooQi89Qykq QipCKkIrQTt9LGVhc2VPdXRTdHJvbmc6ZnVuY3Rpb24oQixBLEQsQyl7cmV0dXJu IC1EKigoQj1CL0MtMSkqQipCKkItMSkrQTt9LGVhc2VCb3RoU3Ryb25nOmZ1bmN0 aW9uKEIsQSxELEMpe2lmKChCLz1DLzIpPDEpe3JldHVybiBELzIqQipCKkIqQitB O31yZXR1cm4gLUQvMiooKEItPTIpKkIqQipCLTIpK0E7fSxlbGFzdGljSW46ZnVu Y3Rpb24oQyxBLEcsRixCLEUpe2lmKEM9PTApe3JldHVybiBBO31pZigoQy89Rik9 PTEpe3JldHVybiBBK0c7fWlmKCFFKXtFPUYqMC4zO31pZighQnx8QjxNYXRoLmFi cyhHKSl7Qj1HO3ZhciBEPUUvNDt9ZWxzZXt2YXIgRD1FLygyKk1hdGguUEkpKk1h dGguYXNpbihHL0IpO31yZXR1cm4gLShCKk1hdGgucG93KDIsMTAqKEMtPTEpKSpN YXRoLnNpbigoQypGLUQpKigyKk1hdGguUEkpL0UpKStBO30sZWxhc3RpY091dDpm dW5jdGlvbihDLEEsRyxGLEIsRSl7aWYoQz09MCl7cmV0dXJuIEE7fWlmKChDLz1G KT09MSl7cmV0dXJuIEErRzt9aWYoIUUpe0U9RiowLjM7fWlmKCFCfHxCPE1hdGgu YWJzKEcpKXtCPUc7dmFyIEQ9RS80O31lbHNle3ZhciBEPUUvKDIqTWF0aC5QSSkq TWF0aC5hc2luKEcvQik7fXJldHVybiBCKk1hdGgucG93KDIsLTEwKkMpKk1hdGgu c2luKChDKkYtRCkqKDIqTWF0aC5QSSkvRSkrRytBO30sZWxhc3RpY0JvdGg6ZnVu Y3Rpb24oQyxBLEcsRixCLEUpe2lmKEM9PTApe3JldHVybiBBO31pZigoQy89Ri8y KT09Mil7cmV0dXJuIEErRzt9aWYoIUUpe0U9RiooMC4zKjEuNSk7fWlmKCFCfHxC PE1hdGguYWJzKEcpKXtCPUc7dmFyIEQ9RS80O31lbHNle3ZhciBEPUUvKDIqTWF0 aC5QSSkqTWF0aC5hc2luKEcvQik7fWlmKEM8MSl7cmV0dXJuIC0wLjUqKEIqTWF0 aC5wb3coMiwxMCooQy09MSkpKk1hdGguc2luKChDKkYtRCkqKDIqTWF0aC5QSSkv RSkpK0E7fXJldHVybiBCKk1hdGgucG93KDIsLTEwKihDLT0xKSkqTWF0aC5zaW4o KEMqRi1EKSooMipNYXRoLlBJKS9FKSowLjUrRytBO30sYmFja0luOmZ1bmN0aW9u KEIsQSxFLEQsQyl7aWYodHlwZW9mIEM9PSJ1bmRlZmluZWQiKXtDPTEuNzAxNTg7 fXJldHVybiBFKihCLz1EKSpCKigoQysxKSpCLUMpK0E7fSxiYWNrT3V0OmZ1bmN0 aW9uKEIsQSxFLEQsQyl7aWYodHlwZW9mIEM9PSJ1bmRlZmluZWQiKXtDPTEuNzAx NTg7fXJldHVybiBFKigoQj1CL0QtMSkqQiooKEMrMSkqQitDKSsxKStBO30sYmFj a0JvdGg6ZnVuY3Rpb24oQixBLEUsRCxDKXtpZih0eXBlb2YgQz09InVuZGVmaW5l ZCIpe0M9MS43MDE1ODt9aWYoKEIvPUQvMik8MSl7cmV0dXJuIEUvMiooQipCKigo KEMqPSgxLjUyNSkpKzEpKkItQykpK0E7fXJldHVybiBFLzIqKChCLT0yKSpCKigo KEMqPSgxLjUyNSkpKzEpKkIrQykrMikrQTt9LGJvdW5jZUluOmZ1bmN0aW9uKEIs QSxELEMpe3JldHVybiBELVlBSE9PLnV0aWwuRWFzaW5nLmJvdW5jZU91dChDLUIs MCxELEMpK0E7fSxib3VuY2VPdXQ6ZnVuY3Rpb24oQixBLEQsQyl7aWYoKEIvPUMp PCgxLzIuNzUpKXtyZXR1cm4gRCooNy41NjI1KkIqQikrQTt9ZWxzZXtpZihCPCgy LzIuNzUpKXtyZXR1cm4gRCooNy41NjI1KihCLT0oMS41LzIuNzUpKSpCKzAuNzUp K0E7fWVsc2V7aWYoQjwoMi41LzIuNzUpKXtyZXR1cm4gRCooNy41NjI1KihCLT0o Mi4yNS8yLjc1KSkqQiswLjkzNzUpK0E7fX19cmV0dXJuIEQqKDcuNTYyNSooQi09 KDIuNjI1LzIuNzUpKSpCKzAuOTg0Mzc1KStBO30sYm91bmNlQm90aDpmdW5jdGlv bihCLEEsRCxDKXtpZihCPEMvMil7cmV0dXJuIFlBSE9PLnV0aWwuRWFzaW5nLmJv dW5jZUluKEIqMiwwLEQsQykqMC41K0E7fXJldHVybiBZQUhPTy51dGlsLkVhc2lu Zy5ib3VuY2VPdXQoQioyLUMsMCxELEMpKjAuNStEKjAuNStBO319OyhmdW5jdGlv bigpe3ZhciBBPWZ1bmN0aW9uKEgsRyxJLEope2lmKEgpe0Euc3VwZXJjbGFzcy5j b25zdHJ1Y3Rvci5jYWxsKHRoaXMsSCxHLEksSik7fX07QS5OQU1FPSJNb3Rpb24i O3ZhciBFPVlBSE9PLnV0aWw7WUFIT08uZXh0ZW5kKEEsRS5Db2xvckFuaW0pO3Zh ciBGPUEuc3VwZXJjbGFzczt2YXIgQz1BLnByb3RvdHlwZTtDLnBhdHRlcm5zLnBv aW50cz0vXnBvaW50cyQvaTtDLnNldEF0dHJpYnV0ZT1mdW5jdGlvbihHLEksSCl7 aWYodGhpcy5wYXR0ZXJucy5wb2ludHMudGVzdChHKSl7SD1IfHwicHgiO0Yuc2V0 QXR0cmlidXRlLmNhbGwodGhpcywibGVmdCIsSVswXSxIKTtGLnNldEF0dHJpYnV0 ZS5jYWxsKHRoaXMsInRvcCIsSVsxXSxIKTt9ZWxzZXtGLnNldEF0dHJpYnV0ZS5j YWxsKHRoaXMsRyxJLEgpO319O0MuZ2V0QXR0cmlidXRlPWZ1bmN0aW9uKEcpe2lm KHRoaXMucGF0dGVybnMucG9pbnRzLnRlc3QoRykpe3ZhciBIPVtGLmdldEF0dHJp YnV0ZS5jYWxsKHRoaXMsImxlZnQiKSxGLmdldEF0dHJpYnV0ZS5jYWxsKHRoaXMs InRvcCIpXTt9ZWxzZXtIPUYuZ2V0QXR0cmlidXRlLmNhbGwodGhpcyxHKTt9cmV0 dXJuIEg7fTtDLmRvTWV0aG9kPWZ1bmN0aW9uKEcsSyxIKXt2YXIgSj1udWxsO2lm KHRoaXMucGF0dGVybnMucG9pbnRzLnRlc3QoRykpe3ZhciBJPXRoaXMubWV0aG9k KHRoaXMuY3VycmVudEZyYW1lLDAsMTAwLHRoaXMudG90YWxGcmFtZXMpLzEwMDtK PUUuQmV6aWVyLmdldFBvc2l0aW9uKHRoaXMucnVudGltZUF0dHJpYnV0ZXNbR10s SSk7fWVsc2V7Sj1GLmRvTWV0aG9kLmNhbGwodGhpcyxHLEssSCk7fXJldHVybiBK O307Qy5zZXRSdW50aW1lQXR0cmlidXRlPWZ1bmN0aW9uKFApe2lmKHRoaXMucGF0 dGVybnMucG9pbnRzLnRlc3QoUCkpe3ZhciBIPXRoaXMuZ2V0RWwoKTt2YXIgSj10 aGlzLmF0dHJpYnV0ZXM7dmFyIEc7dmFyIEw9SlsicG9pbnRzIl1bImNvbnRyb2wi XXx8W107dmFyIEk7dmFyIE0sTztpZihMLmxlbmd0aD4wJiYhKExbMF0gaW5zdGFu Y2VvZiBBcnJheSkpe0w9W0xdO31lbHNle3ZhciBLPVtdO2ZvcihNPTAsTz1MLmxl bmd0aDtNPE87KytNKXtLW01dPUxbTV07fUw9Szt9aWYoRS5Eb20uZ2V0U3R5bGUo SCwicG9zaXRpb24iKT09InN0YXRpYyIpe0UuRG9tLnNldFN0eWxlKEgsInBvc2l0 aW9uIiwicmVsYXRpdmUiKTt9aWYoRChKWyJwb2ludHMiXVsiZnJvbSJdKSl7RS5E b20uc2V0WFkoSCxKWyJwb2ludHMiXVsiZnJvbSJdKTsKfWVsc2V7RS5Eb20uc2V0 WFkoSCxFLkRvbS5nZXRYWShIKSk7fUc9dGhpcy5nZXRBdHRyaWJ1dGUoInBvaW50 cyIpO2lmKEQoSlsicG9pbnRzIl1bInRvIl0pKXtJPUIuY2FsbCh0aGlzLEpbInBv aW50cyJdWyJ0byJdLEcpO3ZhciBOPUUuRG9tLmdldFhZKHRoaXMuZ2V0RWwoKSk7 Zm9yKE09MCxPPUwubGVuZ3RoO008TzsrK00pe0xbTV09Qi5jYWxsKHRoaXMsTFtN XSxHKTt9fWVsc2V7aWYoRChKWyJwb2ludHMiXVsiYnkiXSkpe0k9W0dbMF0rSlsi cG9pbnRzIl1bImJ5Il1bMF0sR1sxXStKWyJwb2ludHMiXVsiYnkiXVsxXV07Zm9y KE09MCxPPUwubGVuZ3RoO008TzsrK00pe0xbTV09W0dbMF0rTFtNXVswXSxHWzFd K0xbTV1bMV1dO319fXRoaXMucnVudGltZUF0dHJpYnV0ZXNbUF09W0ddO2lmKEwu bGVuZ3RoPjApe3RoaXMucnVudGltZUF0dHJpYnV0ZXNbUF09dGhpcy5ydW50aW1l QXR0cmlidXRlc1tQXS5jb25jYXQoTCk7fXRoaXMucnVudGltZUF0dHJpYnV0ZXNb UF1bdGhpcy5ydW50aW1lQXR0cmlidXRlc1tQXS5sZW5ndGhdPUk7fWVsc2V7Ri5z ZXRSdW50aW1lQXR0cmlidXRlLmNhbGwodGhpcyxQKTt9fTt2YXIgQj1mdW5jdGlv bihHLEkpe3ZhciBIPUUuRG9tLmdldFhZKHRoaXMuZ2V0RWwoKSk7Rz1bR1swXS1I WzBdK0lbMF0sR1sxXS1IWzFdK0lbMV1dO3JldHVybiBHO307dmFyIEQ9ZnVuY3Rp b24oRyl7cmV0dXJuKHR5cGVvZiBHIT09InVuZGVmaW5lZCIpO307RS5Nb3Rpb249 QTt9KSgpOyhmdW5jdGlvbigpe3ZhciBEPWZ1bmN0aW9uKEYsRSxHLEgpe2lmKEYp e0Quc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsRixFLEcsSCk7fX07 RC5OQU1FPSJTY3JvbGwiO3ZhciBCPVlBSE9PLnV0aWw7WUFIT08uZXh0ZW5kKEQs Qi5Db2xvckFuaW0pO3ZhciBDPUQuc3VwZXJjbGFzczt2YXIgQT1ELnByb3RvdHlw ZTtBLmRvTWV0aG9kPWZ1bmN0aW9uKEUsSCxGKXt2YXIgRz1udWxsO2lmKEU9PSJz Y3JvbGwiKXtHPVt0aGlzLm1ldGhvZCh0aGlzLmN1cnJlbnRGcmFtZSxIWzBdLEZb MF0tSFswXSx0aGlzLnRvdGFsRnJhbWVzKSx0aGlzLm1ldGhvZCh0aGlzLmN1cnJl bnRGcmFtZSxIWzFdLEZbMV0tSFsxXSx0aGlzLnRvdGFsRnJhbWVzKV07fWVsc2V7 Rz1DLmRvTWV0aG9kLmNhbGwodGhpcyxFLEgsRik7fXJldHVybiBHO307QS5nZXRB dHRyaWJ1dGU9ZnVuY3Rpb24oRSl7dmFyIEc9bnVsbDt2YXIgRj10aGlzLmdldEVs KCk7aWYoRT09InNjcm9sbCIpe0c9W0Yuc2Nyb2xsTGVmdCxGLnNjcm9sbFRvcF07 fWVsc2V7Rz1DLmdldEF0dHJpYnV0ZS5jYWxsKHRoaXMsRSk7fXJldHVybiBHO307 QS5zZXRBdHRyaWJ1dGU9ZnVuY3Rpb24oRSxILEcpe3ZhciBGPXRoaXMuZ2V0RWwo KTtpZihFPT0ic2Nyb2xsIil7Ri5zY3JvbGxMZWZ0PUhbMF07Ri5zY3JvbGxUb3A9 SFsxXTt9ZWxzZXtDLnNldEF0dHJpYnV0ZS5jYWxsKHRoaXMsRSxILEcpO319O0Iu U2Nyb2xsPUQ7fSkoKTtZQUhPTy5yZWdpc3RlcigiYW5pbWF0aW9uIixZQUhPTy51 dGlsLkFuaW0se3ZlcnNpb246IjIuNy4wIixidWlsZDoiMTc5OSJ9KTsvKgpDb3B5 cmlnaHQgKGMpIDIwMDksIFlhaG9vISBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu CkNvZGUgbGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlOgpodHRwOi8vZGV2 ZWxvcGVyLnlhaG9vLm5ldC95dWkvbGljZW5zZS50eHQKdmVyc2lvbjogMi43LjAK Ki8KKGZ1bmN0aW9uKCl7WUFIT08udXRpbC5Db25maWc9ZnVuY3Rpb24oRCl7aWYo RCl7dGhpcy5pbml0KEQpO319O3ZhciBCPVlBSE9PLmxhbmcsQz1ZQUhPTy51dGls LkN1c3RvbUV2ZW50LEE9WUFIT08udXRpbC5Db25maWc7QS5DT05GSUdfQ0hBTkdF RF9FVkVOVD0iY29uZmlnQ2hhbmdlZCI7QS5CT09MRUFOX1RZUEU9ImJvb2xlYW4i O0EucHJvdG90eXBlPXtvd25lcjpudWxsLHF1ZXVlSW5Qcm9ncmVzczpmYWxzZSxj b25maWc6bnVsbCxpbml0aWFsQ29uZmlnOm51bGwsZXZlbnRRdWV1ZTpudWxsLGNv bmZpZ0NoYW5nZWRFdmVudDpudWxsLGluaXQ6ZnVuY3Rpb24oRCl7dGhpcy5vd25l cj1EO3RoaXMuY29uZmlnQ2hhbmdlZEV2ZW50PXRoaXMuY3JlYXRlRXZlbnQoQS5D T05GSUdfQ0hBTkdFRF9FVkVOVCk7dGhpcy5jb25maWdDaGFuZ2VkRXZlbnQuc2ln bmF0dXJlPUMuTElTVDt0aGlzLnF1ZXVlSW5Qcm9ncmVzcz1mYWxzZTt0aGlzLmNv bmZpZz17fTt0aGlzLmluaXRpYWxDb25maWc9e307dGhpcy5ldmVudFF1ZXVlPVtd O30sY2hlY2tCb29sZWFuOmZ1bmN0aW9uKEQpe3JldHVybih0eXBlb2YgRD09QS5C T09MRUFOX1RZUEUpO30sY2hlY2tOdW1iZXI6ZnVuY3Rpb24oRCl7cmV0dXJuKCFp c05hTihEKSk7fSxmaXJlRXZlbnQ6ZnVuY3Rpb24oRCxGKXt2YXIgRT10aGlzLmNv bmZpZ1tEXTtpZihFJiZFLmV2ZW50KXtFLmV2ZW50LmZpcmUoRik7fX0sYWRkUHJv cGVydHk6ZnVuY3Rpb24oRSxEKXtFPUUudG9Mb3dlckNhc2UoKTt0aGlzLmNvbmZp Z1tFXT1EO0QuZXZlbnQ9dGhpcy5jcmVhdGVFdmVudChFLHtzY29wZTp0aGlzLm93 bmVyfSk7RC5ldmVudC5zaWduYXR1cmU9Qy5MSVNUO0Qua2V5PUU7aWYoRC5oYW5k bGVyKXtELmV2ZW50LnN1YnNjcmliZShELmhhbmRsZXIsdGhpcy5vd25lcik7fXRo aXMuc2V0UHJvcGVydHkoRSxELnZhbHVlLHRydWUpO2lmKCFELnN1cHByZXNzRXZl bnQpe3RoaXMucXVldWVQcm9wZXJ0eShFLEQudmFsdWUpO319LGdldENvbmZpZzpm dW5jdGlvbigpe3ZhciBEPXt9LEY9dGhpcy5jb25maWcsRyxFO2ZvcihHIGluIEYp e2lmKEIuaGFzT3duUHJvcGVydHkoRixHKSl7RT1GW0ddO2lmKEUmJkUuZXZlbnQp e0RbR109RS52YWx1ZTt9fX1yZXR1cm4gRDt9LGdldFByb3BlcnR5OmZ1bmN0aW9u KEQpe3ZhciBFPXRoaXMuY29uZmlnW0QudG9Mb3dlckNhc2UoKV07aWYoRSYmRS5l dmVudCl7cmV0dXJuIEUudmFsdWU7fWVsc2V7cmV0dXJuIHVuZGVmaW5lZDt9fSxy ZXNldFByb3BlcnR5OmZ1bmN0aW9uKEQpe0Q9RC50b0xvd2VyQ2FzZSgpO3ZhciBF PXRoaXMuY29uZmlnW0RdO2lmKEUmJkUuZXZlbnQpe2lmKHRoaXMuaW5pdGlhbENv bmZpZ1tEXSYmIUIuaXNVbmRlZmluZWQodGhpcy5pbml0aWFsQ29uZmlnW0RdKSl7 dGhpcy5zZXRQcm9wZXJ0eShELHRoaXMuaW5pdGlhbENvbmZpZ1tEXSk7cmV0dXJu IHRydWU7fX1lbHNle3JldHVybiBmYWxzZTt9fSxzZXRQcm9wZXJ0eTpmdW5jdGlv bihFLEcsRCl7dmFyIEY7RT1FLnRvTG93ZXJDYXNlKCk7aWYodGhpcy5xdWV1ZUlu UHJvZ3Jlc3MmJiFEKXt0aGlzLnF1ZXVlUHJvcGVydHkoRSxHKTtyZXR1cm4gdHJ1 ZTt9ZWxzZXtGPXRoaXMuY29uZmlnW0VdO2lmKEYmJkYuZXZlbnQpe2lmKEYudmFs aWRhdG9yJiYhRi52YWxpZGF0b3IoRykpe3JldHVybiBmYWxzZTt9ZWxzZXtGLnZh bHVlPUc7aWYoIUQpe3RoaXMuZmlyZUV2ZW50KEUsRyk7dGhpcy5jb25maWdDaGFu Z2VkRXZlbnQuZmlyZShbRSxHXSk7fXJldHVybiB0cnVlO319ZWxzZXtyZXR1cm4g ZmFsc2U7fX19LHF1ZXVlUHJvcGVydHk6ZnVuY3Rpb24oUyxQKXtTPVMudG9Mb3dl ckNhc2UoKTt2YXIgUj10aGlzLmNvbmZpZ1tTXSxLPWZhbHNlLEosRyxILEksTyxR LEYsTSxOLEQsTCxULEU7aWYoUiYmUi5ldmVudCl7aWYoIUIuaXNVbmRlZmluZWQo UCkmJlIudmFsaWRhdG9yJiYhUi52YWxpZGF0b3IoUCkpe3JldHVybiBmYWxzZTt9 ZWxzZXtpZighQi5pc1VuZGVmaW5lZChQKSl7Ui52YWx1ZT1QO31lbHNle1A9Ui52 YWx1ZTt9Sz1mYWxzZTtKPXRoaXMuZXZlbnRRdWV1ZS5sZW5ndGg7Zm9yKEw9MDtM PEo7TCsrKXtHPXRoaXMuZXZlbnRRdWV1ZVtMXTtpZihHKXtIPUdbMF07ST1HWzFd O2lmKEg9PVMpe3RoaXMuZXZlbnRRdWV1ZVtMXT1udWxsO3RoaXMuZXZlbnRRdWV1 ZS5wdXNoKFtTLCghQi5pc1VuZGVmaW5lZChQKT9QOkkpXSk7Sz10cnVlO2JyZWFr O319fWlmKCFLJiYhQi5pc1VuZGVmaW5lZChQKSl7dGhpcy5ldmVudFF1ZXVlLnB1 c2goW1MsUF0pO319aWYoUi5zdXBlcmNlZGVzKXtPPVIuc3VwZXJjZWRlcy5sZW5n dGg7Zm9yKFQ9MDtUPE87VCsrKXtRPVIuc3VwZXJjZWRlc1tUXTtGPXRoaXMuZXZl bnRRdWV1ZS5sZW5ndGg7Zm9yKEU9MDtFPEY7RSsrKXtNPXRoaXMuZXZlbnRRdWV1 ZVtFXTtpZihNKXtOPU1bMF07RD1NWzFdO2lmKE49PVEudG9Mb3dlckNhc2UoKSl7 dGhpcy5ldmVudFF1ZXVlLnB1c2goW04sRF0pO3RoaXMuZXZlbnRRdWV1ZVtFXT1u dWxsO2JyZWFrO319fX19cmV0dXJuIHRydWU7fWVsc2V7cmV0dXJuIGZhbHNlO319 LHJlZmlyZUV2ZW50OmZ1bmN0aW9uKEQpe0Q9RC50b0xvd2VyQ2FzZSgpO3ZhciBF PXRoaXMuY29uZmlnW0RdO2lmKEUmJkUuZXZlbnQmJiFCLmlzVW5kZWZpbmVkKEUu dmFsdWUpKXtpZih0aGlzLnF1ZXVlSW5Qcm9ncmVzcyl7dGhpcy5xdWV1ZVByb3Bl cnR5KEQpO31lbHNle3RoaXMuZmlyZUV2ZW50KEQsRS52YWx1ZSk7fX19LGFwcGx5 Q29uZmlnOmZ1bmN0aW9uKEQsRyl7dmFyIEYsRTtpZihHKXtFPXt9O2ZvcihGIGlu IEQpe2lmKEIuaGFzT3duUHJvcGVydHkoRCxGKSl7RVtGLnRvTG93ZXJDYXNlKCld PURbRl07fX10aGlzLmluaXRpYWxDb25maWc9RTt9Zm9yKEYgaW4gRCl7aWYoQi5o YXNPd25Qcm9wZXJ0eShELEYpKXt0aGlzLnF1ZXVlUHJvcGVydHkoRixEW0ZdKTt9 fX0scmVmcmVzaDpmdW5jdGlvbigpe3ZhciBEO2ZvcihEIGluIHRoaXMuY29uZmln KXtpZihCLmhhc093blByb3BlcnR5KHRoaXMuY29uZmlnLEQpKXt0aGlzLnJlZmly ZUV2ZW50KEQpO319fSxmaXJlUXVldWU6ZnVuY3Rpb24oKXt2YXIgRSxILEQsRyxG O3RoaXMucXVldWVJblByb2dyZXNzPXRydWU7Zm9yKEU9MDtFPHRoaXMuZXZlbnRR dWV1ZS5sZW5ndGg7RSsrKXtIPXRoaXMuZXZlbnRRdWV1ZVtFXTtpZihIKXtEPUhb MF07Rz1IWzFdO0Y9dGhpcy5jb25maWdbRF07Ri52YWx1ZT1HO3RoaXMuZXZlbnRR dWV1ZVtFXT1udWxsO3RoaXMuZmlyZUV2ZW50KEQsRyk7fX10aGlzLnF1ZXVlSW5Q cm9ncmVzcz1mYWxzZTt0aGlzLmV2ZW50UXVldWU9W107fSxzdWJzY3JpYmVUb0Nv bmZpZ0V2ZW50OmZ1bmN0aW9uKEUsRixILEQpe3ZhciBHPXRoaXMuY29uZmlnW0Uu dG9Mb3dlckNhc2UoKV07aWYoRyYmRy5ldmVudCl7aWYoIUEuYWxyZWFkeVN1YnNj cmliZWQoRy5ldmVudCxGLEgpKXtHLmV2ZW50LnN1YnNjcmliZShGLEgsRCk7fXJl dHVybiB0cnVlO31lbHNle3JldHVybiBmYWxzZTt9fSx1bnN1YnNjcmliZUZyb21D b25maWdFdmVudDpmdW5jdGlvbihELEUsRyl7dmFyIEY9dGhpcy5jb25maWdbRC50 b0xvd2VyQ2FzZSgpXTtpZihGJiZGLmV2ZW50KXtyZXR1cm4gRi5ldmVudC51bnN1 YnNjcmliZShFLEcpO31lbHNle3JldHVybiBmYWxzZTt9fSx0b1N0cmluZzpmdW5j dGlvbigpe3ZhciBEPSJDb25maWciO2lmKHRoaXMub3duZXIpe0QrPSIgWyIrdGhp cy5vd25lci50b1N0cmluZygpKyJdIjt9cmV0dXJuIEQ7fSxvdXRwdXRFdmVudFF1 ZXVlOmZ1bmN0aW9uKCl7dmFyIEQ9IiIsRyxFLEY9dGhpcy5ldmVudFF1ZXVlLmxl bmd0aDtmb3IoRT0wO0U8RjtFKyspe0c9dGhpcy5ldmVudFF1ZXVlW0VdO2lmKEcp e0QrPUdbMF0rIj0iK0dbMV0rIiwgIjt9fXJldHVybiBEO30sZGVzdHJveTpmdW5j dGlvbigpe3ZhciBFPXRoaXMuY29uZmlnLEQsRjtmb3IoRCBpbiBFKXtpZihCLmhh c093blByb3BlcnR5KEUsRCkpe0Y9RVtEXTtGLmV2ZW50LnVuc3Vic2NyaWJlQWxs KCk7Ri5ldmVudD1udWxsO319dGhpcy5jb25maWdDaGFuZ2VkRXZlbnQudW5zdWJz Y3JpYmVBbGwoKTt0aGlzLmNvbmZpZ0NoYW5nZWRFdmVudD1udWxsO3RoaXMub3du ZXI9bnVsbDt0aGlzLmNvbmZpZz1udWxsO3RoaXMuaW5pdGlhbENvbmZpZz1udWxs O3RoaXMuZXZlbnRRdWV1ZT1udWxsO319O0EuYWxyZWFkeVN1YnNjcmliZWQ9ZnVu Y3Rpb24oRSxILEkpe3ZhciBGPUUuc3Vic2NyaWJlcnMubGVuZ3RoLEQsRztpZihG PjApe0c9Ri0xO2Rve0Q9RS5zdWJzY3JpYmVyc1tHXTtpZihEJiZELm9iaj09SSYm RC5mbj09SCl7cmV0dXJuIHRydWU7fX13aGlsZShHLS0pO31yZXR1cm4gZmFsc2U7 fTtZQUhPTy5sYW5nLmF1Z21lbnRQcm90byhBLFlBSE9PLnV0aWwuRXZlbnRQcm92 aWRlcik7fSgpKTsoZnVuY3Rpb24oKXtZQUhPTy53aWRnZXQuTW9kdWxlPWZ1bmN0 aW9uKFIsUSl7aWYoUil7dGhpcy5pbml0KFIsUSk7fWVsc2V7fX07dmFyIEY9WUFI T08udXRpbC5Eb20sRD1ZQUhPTy51dGlsLkNvbmZpZyxOPVlBSE9PLnV0aWwuRXZl bnQsTT1ZQUhPTy51dGlsLkN1c3RvbUV2ZW50LEc9WUFIT08ud2lkZ2V0Lk1vZHVs ZSxJPVlBSE9PLmVudi51YSxILFAsTyxFLEE9eyJCRUZPUkVfSU5JVCI6ImJlZm9y ZUluaXQiLCJJTklUIjoiaW5pdCIsIkFQUEVORCI6ImFwcGVuZCIsIkJFRk9SRV9S RU5ERVIiOiJiZWZvcmVSZW5kZXIiLCJSRU5ERVIiOiJyZW5kZXIiLCJDSEFOR0Vf SEVBREVSIjoiY2hhbmdlSGVhZGVyIiwiQ0hBTkdFX0JPRFkiOiJjaGFuZ2VCb2R5 IiwiQ0hBTkdFX0ZPT1RFUiI6ImNoYW5nZUZvb3RlciIsIkNIQU5HRV9DT05URU5U IjoiY2hhbmdlQ29udGVudCIsIkRFU1RPUlkiOiJkZXN0cm95IiwiQkVGT1JFX1NI T1ciOiJiZWZvcmVTaG93IiwiU0hPVyI6InNob3ciLCJCRUZPUkVfSElERSI6ImJl Zm9yZUhpZGUiLCJISURFIjoiaGlkZSJ9LEo9eyJWSVNJQkxFIjp7a2V5OiJ2aXNp YmxlIix2YWx1ZTp0cnVlLHZhbGlkYXRvcjpZQUhPTy5sYW5nLmlzQm9vbGVhbn0s IkVGRkVDVCI6e2tleToiZWZmZWN0IixzdXBwcmVzc0V2ZW50OnRydWUsc3VwZXJj ZWRlczpbInZpc2libGUiXX0sIk1PTklUT1JfUkVTSVpFIjp7a2V5OiJtb25pdG9y cmVzaXplIix2YWx1ZTp0cnVlfSwiQVBQRU5EX1RPX0RPQ1VNRU5UX0JPRFkiOntr ZXk6ImFwcGVuZHRvZG9jdW1lbnRib2R5Iix2YWx1ZTpmYWxzZX19O0cuSU1HX1JP T1Q9bnVsbDtHLklNR19ST09UX1NTTD1udWxsO0cuQ1NTX01PRFVMRT0ieXVpLW1v ZHVsZSI7Ry5DU1NfSEVBREVSPSJoZCI7Ry5DU1NfQk9EWT0iYmQiO0cuQ1NTX0ZP T1RFUj0iZnQiO0cuUkVTSVpFX01PTklUT1JfU0VDVVJFX1VSTD0iamF2YXNjcmlw dDpmYWxzZTsiO0cuUkVTSVpFX01PTklUT1JfQlVGRkVSPTE7Ry50ZXh0UmVzaXpl RXZlbnQ9bmV3IE0oInRleHRSZXNpemUiKTtHLmZvcmNlRG9jdW1lbnRSZWRyYXc9 ZnVuY3Rpb24oKXt2YXIgUT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7aWYoUSl7 US5jbGFzc05hbWUrPSIgIjtRLmNsYXNzTmFtZT1ZQUhPTy5sYW5nLnRyaW0oUS5j bGFzc05hbWUpO319O2Z1bmN0aW9uIEwoKXtpZighSCl7SD1kb2N1bWVudC5jcmVh dGVFbGVtZW50KCJkaXYiKTtILmlubmVySFRNTD0oJzxkaXYgY2xhc3M9IicrRy5D U1NfSEVBREVSKyciPjwvZGl2PicrJzxkaXYgY2xhc3M9IicrRy5DU1NfQk9EWSsn Ij48L2Rpdj48ZGl2IGNsYXNzPSInK0cuQ1NTX0ZPT1RFUisnIj48L2Rpdj4nKTtQ PUguZmlyc3RDaGlsZDtPPVAubmV4dFNpYmxpbmc7RT1PLm5leHRTaWJsaW5nO31y ZXR1cm4gSDt9ZnVuY3Rpb24gSygpe2lmKCFQKXtMKCk7fXJldHVybihQLmNsb25l Tm9kZShmYWxzZSkpO31mdW5jdGlvbiBCKCl7aWYoIU8pe0woKTt9cmV0dXJuKE8u Y2xvbmVOb2RlKGZhbHNlKSk7fWZ1bmN0aW9uIEMoKXtpZighRSl7TCgpO31yZXR1 cm4oRS5jbG9uZU5vZGUoZmFsc2UpKTt9Ry5wcm90b3R5cGU9e2NvbnN0cnVjdG9y OkcsZWxlbWVudDpudWxsLGhlYWRlcjpudWxsLGJvZHk6bnVsbCxmb290ZXI6bnVs bCxpZDpudWxsLGltYWdlUm9vdDpHLklNR19ST09ULGluaXRFdmVudHM6ZnVuY3Rp b24oKXt2YXIgUT1NLkxJU1Q7CnRoaXMuYmVmb3JlSW5pdEV2ZW50PXRoaXMuY3Jl YXRlRXZlbnQoQS5CRUZPUkVfSU5JVCk7dGhpcy5iZWZvcmVJbml0RXZlbnQuc2ln bmF0dXJlPVE7dGhpcy5pbml0RXZlbnQ9dGhpcy5jcmVhdGVFdmVudChBLklOSVQp O3RoaXMuaW5pdEV2ZW50LnNpZ25hdHVyZT1RO3RoaXMuYXBwZW5kRXZlbnQ9dGhp cy5jcmVhdGVFdmVudChBLkFQUEVORCk7dGhpcy5hcHBlbmRFdmVudC5zaWduYXR1 cmU9UTt0aGlzLmJlZm9yZVJlbmRlckV2ZW50PXRoaXMuY3JlYXRlRXZlbnQoQS5C RUZPUkVfUkVOREVSKTt0aGlzLmJlZm9yZVJlbmRlckV2ZW50LnNpZ25hdHVyZT1R O3RoaXMucmVuZGVyRXZlbnQ9dGhpcy5jcmVhdGVFdmVudChBLlJFTkRFUik7dGhp cy5yZW5kZXJFdmVudC5zaWduYXR1cmU9UTt0aGlzLmNoYW5nZUhlYWRlckV2ZW50 PXRoaXMuY3JlYXRlRXZlbnQoQS5DSEFOR0VfSEVBREVSKTt0aGlzLmNoYW5nZUhl YWRlckV2ZW50LnNpZ25hdHVyZT1RO3RoaXMuY2hhbmdlQm9keUV2ZW50PXRoaXMu Y3JlYXRlRXZlbnQoQS5DSEFOR0VfQk9EWSk7dGhpcy5jaGFuZ2VCb2R5RXZlbnQu c2lnbmF0dXJlPVE7dGhpcy5jaGFuZ2VGb290ZXJFdmVudD10aGlzLmNyZWF0ZUV2 ZW50KEEuQ0hBTkdFX0ZPT1RFUik7dGhpcy5jaGFuZ2VGb290ZXJFdmVudC5zaWdu YXR1cmU9UTt0aGlzLmNoYW5nZUNvbnRlbnRFdmVudD10aGlzLmNyZWF0ZUV2ZW50 KEEuQ0hBTkdFX0NPTlRFTlQpO3RoaXMuY2hhbmdlQ29udGVudEV2ZW50LnNpZ25h dHVyZT1RO3RoaXMuZGVzdHJveUV2ZW50PXRoaXMuY3JlYXRlRXZlbnQoQS5ERVNU T1JZKTt0aGlzLmRlc3Ryb3lFdmVudC5zaWduYXR1cmU9UTt0aGlzLmJlZm9yZVNo b3dFdmVudD10aGlzLmNyZWF0ZUV2ZW50KEEuQkVGT1JFX1NIT1cpO3RoaXMuYmVm b3JlU2hvd0V2ZW50LnNpZ25hdHVyZT1RO3RoaXMuc2hvd0V2ZW50PXRoaXMuY3Jl YXRlRXZlbnQoQS5TSE9XKTt0aGlzLnNob3dFdmVudC5zaWduYXR1cmU9UTt0aGlz LmJlZm9yZUhpZGVFdmVudD10aGlzLmNyZWF0ZUV2ZW50KEEuQkVGT1JFX0hJREUp O3RoaXMuYmVmb3JlSGlkZUV2ZW50LnNpZ25hdHVyZT1RO3RoaXMuaGlkZUV2ZW50 PXRoaXMuY3JlYXRlRXZlbnQoQS5ISURFKTt0aGlzLmhpZGVFdmVudC5zaWduYXR1 cmU9UTt9LHBsYXRmb3JtOmZ1bmN0aW9uKCl7dmFyIFE9bmF2aWdhdG9yLnVzZXJB Z2VudC50b0xvd2VyQ2FzZSgpO2lmKFEuaW5kZXhPZigid2luZG93cyIpIT0tMXx8 US5pbmRleE9mKCJ3aW4zMiIpIT0tMSl7cmV0dXJuIndpbmRvd3MiO31lbHNle2lm KFEuaW5kZXhPZigibWFjaW50b3NoIikhPS0xKXtyZXR1cm4ibWFjIjt9ZWxzZXty ZXR1cm4gZmFsc2U7fX19KCksYnJvd3NlcjpmdW5jdGlvbigpe3ZhciBRPW5hdmln YXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtpZihRLmluZGV4T2YoIm9wZXJh IikhPS0xKXtyZXR1cm4ib3BlcmEiO31lbHNle2lmKFEuaW5kZXhPZigibXNpZSA3 IikhPS0xKXtyZXR1cm4iaWU3Ijt9ZWxzZXtpZihRLmluZGV4T2YoIm1zaWUiKSE9 LTEpe3JldHVybiJpZSI7fWVsc2V7aWYoUS5pbmRleE9mKCJzYWZhcmkiKSE9LTEp e3JldHVybiJzYWZhcmkiO31lbHNle2lmKFEuaW5kZXhPZigiZ2Vja28iKSE9LTEp e3JldHVybiJnZWNrbyI7fWVsc2V7cmV0dXJuIGZhbHNlO319fX19fSgpLGlzU2Vj dXJlOmZ1bmN0aW9uKCl7aWYod2luZG93LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNh c2UoKS5pbmRleE9mKCJodHRwcyIpPT09MCl7cmV0dXJuIHRydWU7fWVsc2V7cmV0 dXJuIGZhbHNlO319KCksaW5pdERlZmF1bHRDb25maWc6ZnVuY3Rpb24oKXt0aGlz LmNmZy5hZGRQcm9wZXJ0eShKLlZJU0lCTEUua2V5LHtoYW5kbGVyOnRoaXMuY29u ZmlnVmlzaWJsZSx2YWx1ZTpKLlZJU0lCTEUudmFsdWUsdmFsaWRhdG9yOkouVklT SUJMRS52YWxpZGF0b3J9KTt0aGlzLmNmZy5hZGRQcm9wZXJ0eShKLkVGRkVDVC5r ZXkse3N1cHByZXNzRXZlbnQ6Si5FRkZFQ1Quc3VwcHJlc3NFdmVudCxzdXBlcmNl ZGVzOkouRUZGRUNULnN1cGVyY2VkZXN9KTt0aGlzLmNmZy5hZGRQcm9wZXJ0eShK Lk1PTklUT1JfUkVTSVpFLmtleSx7aGFuZGxlcjp0aGlzLmNvbmZpZ01vbml0b3JS ZXNpemUsdmFsdWU6Si5NT05JVE9SX1JFU0laRS52YWx1ZX0pO3RoaXMuY2ZnLmFk ZFByb3BlcnR5KEouQVBQRU5EX1RPX0RPQ1VNRU5UX0JPRFkua2V5LHt2YWx1ZTpK LkFQUEVORF9UT19ET0NVTUVOVF9CT0RZLnZhbHVlfSk7fSxpbml0OmZ1bmN0aW9u KFYsVSl7dmFyIFMsVzt0aGlzLmluaXRFdmVudHMoKTt0aGlzLmJlZm9yZUluaXRF dmVudC5maXJlKEcpO3RoaXMuY2ZnPW5ldyBEKHRoaXMpO2lmKHRoaXMuaXNTZWN1 cmUpe3RoaXMuaW1hZ2VSb290PUcuSU1HX1JPT1RfU1NMO31pZih0eXBlb2YgVj09 InN0cmluZyIpe1M9VjtWPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFYpO2lmKCFW KXtWPShMKCkpLmNsb25lTm9kZShmYWxzZSk7Vi5pZD1TO319dGhpcy5pZD1GLmdl bmVyYXRlSWQoVik7dGhpcy5lbGVtZW50PVY7Vz10aGlzLmVsZW1lbnQuZmlyc3RD aGlsZDtpZihXKXt2YXIgUj1mYWxzZSxRPWZhbHNlLFQ9ZmFsc2U7ZG97aWYoMT09 Vy5ub2RlVHlwZSl7aWYoIVImJkYuaGFzQ2xhc3MoVyxHLkNTU19IRUFERVIpKXt0 aGlzLmhlYWRlcj1XO1I9dHJ1ZTt9ZWxzZXtpZighUSYmRi5oYXNDbGFzcyhXLEcu Q1NTX0JPRFkpKXt0aGlzLmJvZHk9VztRPXRydWU7fWVsc2V7aWYoIVQmJkYuaGFz Q2xhc3MoVyxHLkNTU19GT09URVIpKXt0aGlzLmZvb3Rlcj1XO1Q9dHJ1ZTt9fX19 fXdoaWxlKChXPVcubmV4dFNpYmxpbmcpKTt9dGhpcy5pbml0RGVmYXVsdENvbmZp ZygpO0YuYWRkQ2xhc3ModGhpcy5lbGVtZW50LEcuQ1NTX01PRFVMRSk7aWYoVSl7 dGhpcy5jZmcuYXBwbHlDb25maWcoVSx0cnVlKTt9aWYoIUQuYWxyZWFkeVN1YnNj cmliZWQodGhpcy5yZW5kZXJFdmVudCx0aGlzLmNmZy5maXJlUXVldWUsdGhpcy5j ZmcpKXt0aGlzLnJlbmRlckV2ZW50LnN1YnNjcmliZSh0aGlzLmNmZy5maXJlUXVl dWUsdGhpcy5jZmcsdHJ1ZSk7fXRoaXMuaW5pdEV2ZW50LmZpcmUoRyk7fSxpbml0 UmVzaXplTW9uaXRvcjpmdW5jdGlvbigpe3ZhciBSPShJLmdlY2tvJiZ0aGlzLnBs YXRmb3JtPT0id2luZG93cyIpO2lmKFIpe3ZhciBRPXRoaXM7c2V0VGltZW91dChm dW5jdGlvbigpe1EuX2luaXRSZXNpemVNb25pdG9yKCk7fSwwKTt9ZWxzZXt0aGlz Ll9pbml0UmVzaXplTW9uaXRvcigpO319LF9pbml0UmVzaXplTW9uaXRvcjpmdW5j dGlvbigpe3ZhciBRLFMsVTtmdW5jdGlvbiBXKCl7Ry50ZXh0UmVzaXplRXZlbnQu ZmlyZSgpO31pZighSS5vcGVyYSl7Uz1GLmdldCgiX3l1aVJlc2l6ZU1vbml0b3Ii KTt2YXIgVj10aGlzLl9zdXBwb3J0c0NXUmVzaXplKCk7aWYoIVMpe1M9ZG9jdW1l bnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7aWYodGhpcy5pc1NlY3VyZSYmRy5S RVNJWkVfTU9OSVRPUl9TRUNVUkVfVVJMJiZJLmllKXtTLnNyYz1HLlJFU0laRV9N T05JVE9SX1NFQ1VSRV9VUkw7fWlmKCFWKXtVPVsiPGh0bWw+PGhlYWQ+PHNjcmlw dCAiLCd0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPicsIndpbmRvdy5vbnJlc2l6ZT1m dW5jdGlvbigpe3dpbmRvdy5wYXJlbnQuIiwiWUFIT08ud2lkZ2V0Lk1vZHVsZS50 ZXh0UmVzaXplRXZlbnQuIiwiZmlyZSgpO307PCIsIi9zY3JpcHQ+PC9oZWFkPiIs Ijxib2R5PjwvYm9keT48L2h0bWw+Il0uam9pbigiIik7Uy5zcmM9ImRhdGE6dGV4 dC9odG1sO2NoYXJzZXQ9dXRmLTgsIitlbmNvZGVVUklDb21wb25lbnQoVSk7fVMu aWQ9Il95dWlSZXNpemVNb25pdG9yIjtTLnRpdGxlPSJUZXh0IFJlc2l6ZSBNb25p dG9yIjtTLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7Uy5zdHlsZS52aXNpYmls aXR5PSJoaWRkZW4iO3ZhciBSPWRvY3VtZW50LmJvZHksVD1SLmZpcnN0Q2hpbGQ7 aWYoVCl7Ui5pbnNlcnRCZWZvcmUoUyxUKTt9ZWxzZXtSLmFwcGVuZENoaWxkKFMp O31TLnN0eWxlLndpZHRoPSIyZW0iO1Muc3R5bGUuaGVpZ2h0PSIyZW0iO1Muc3R5 bGUudG9wPSgtMSooUy5vZmZzZXRIZWlnaHQrRy5SRVNJWkVfTU9OSVRPUl9CVUZG RVIpKSsicHgiO1Muc3R5bGUubGVmdD0iMCI7Uy5zdHlsZS5ib3JkZXJXaWR0aD0i MCI7Uy5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIjtpZihJLndlYmtpdCl7UT1T LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7US5vcGVuKCk7US5jbG9zZSgpO319aWYo UyYmUy5jb250ZW50V2luZG93KXtHLnRleHRSZXNpemVFdmVudC5zdWJzY3JpYmUo dGhpcy5vbkRvbVJlc2l6ZSx0aGlzLHRydWUpO2lmKCFHLnRleHRSZXNpemVJbml0 aWFsaXplZCl7aWYoVil7aWYoIU4ub24oUy5jb250ZW50V2luZG93LCJyZXNpemUi LFcpKXtOLm9uKFMsInJlc2l6ZSIsVyk7fX1HLnRleHRSZXNpemVJbml0aWFsaXpl ZD10cnVlO310aGlzLnJlc2l6ZU1vbml0b3I9Uzt9fX0sX3N1cHBvcnRzQ1dSZXNp emU6ZnVuY3Rpb24oKXt2YXIgUT10cnVlO2lmKEkuZ2Vja28mJkkuZ2Vja288PTEu OCl7UT1mYWxzZTt9cmV0dXJuIFE7fSxvbkRvbVJlc2l6ZTpmdW5jdGlvbihTLFIp e3ZhciBRPS0xKih0aGlzLnJlc2l6ZU1vbml0b3Iub2Zmc2V0SGVpZ2h0K0cuUkVT SVpFX01PTklUT1JfQlVGRkVSKTt0aGlzLnJlc2l6ZU1vbml0b3Iuc3R5bGUudG9w PVErInB4Ijt0aGlzLnJlc2l6ZU1vbml0b3Iuc3R5bGUubGVmdD0iMCI7fSxzZXRI ZWFkZXI6ZnVuY3Rpb24oUil7dmFyIFE9dGhpcy5oZWFkZXJ8fCh0aGlzLmhlYWRl cj1LKCkpO2lmKFIubm9kZU5hbWUpe1EuaW5uZXJIVE1MPSIiO1EuYXBwZW5kQ2hp bGQoUik7fWVsc2V7US5pbm5lckhUTUw9Ujt9dGhpcy5jaGFuZ2VIZWFkZXJFdmVu dC5maXJlKFIpO3RoaXMuY2hhbmdlQ29udGVudEV2ZW50LmZpcmUoKTt9LGFwcGVu ZFRvSGVhZGVyOmZ1bmN0aW9uKFIpe3ZhciBRPXRoaXMuaGVhZGVyfHwodGhpcy5o ZWFkZXI9SygpKTtRLmFwcGVuZENoaWxkKFIpO3RoaXMuY2hhbmdlSGVhZGVyRXZl bnQuZmlyZShSKTt0aGlzLmNoYW5nZUNvbnRlbnRFdmVudC5maXJlKCk7fSxzZXRC b2R5OmZ1bmN0aW9uKFIpe3ZhciBRPXRoaXMuYm9keXx8KHRoaXMuYm9keT1CKCkp O2lmKFIubm9kZU5hbWUpe1EuaW5uZXJIVE1MPSIiO1EuYXBwZW5kQ2hpbGQoUik7 fWVsc2V7US5pbm5lckhUTUw9Ujt9dGhpcy5jaGFuZ2VCb2R5RXZlbnQuZmlyZShS KTt0aGlzLmNoYW5nZUNvbnRlbnRFdmVudC5maXJlKCk7fSxhcHBlbmRUb0JvZHk6 ZnVuY3Rpb24oUil7dmFyIFE9dGhpcy5ib2R5fHwodGhpcy5ib2R5PUIoKSk7US5h cHBlbmRDaGlsZChSKTt0aGlzLmNoYW5nZUJvZHlFdmVudC5maXJlKFIpO3RoaXMu Y2hhbmdlQ29udGVudEV2ZW50LmZpcmUoKTt9LHNldEZvb3RlcjpmdW5jdGlvbihS KXt2YXIgUT10aGlzLmZvb3Rlcnx8KHRoaXMuZm9vdGVyPUMoKSk7aWYoUi5ub2Rl TmFtZSl7US5pbm5lckhUTUw9IiI7US5hcHBlbmRDaGlsZChSKTt9ZWxzZXtRLmlu bmVySFRNTD1SO310aGlzLmNoYW5nZUZvb3RlckV2ZW50LmZpcmUoUik7dGhpcy5j aGFuZ2VDb250ZW50RXZlbnQuZmlyZSgpO30sYXBwZW5kVG9Gb290ZXI6ZnVuY3Rp b24oUil7dmFyIFE9dGhpcy5mb290ZXJ8fCh0aGlzLmZvb3Rlcj1DKCkpO1EuYXBw ZW5kQ2hpbGQoUik7dGhpcy5jaGFuZ2VGb290ZXJFdmVudC5maXJlKFIpO3RoaXMu Y2hhbmdlQ29udGVudEV2ZW50LmZpcmUoKTt9LHJlbmRlcjpmdW5jdGlvbihTLFEp e3ZhciBUPXRoaXMsVTtmdW5jdGlvbiBSKFYpe2lmKHR5cGVvZiBWPT0ic3RyaW5n Iil7Vj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChWKTt9aWYoVil7VC5fYWRkVG9Q YXJlbnQoVixULmVsZW1lbnQpO1QuYXBwZW5kRXZlbnQuZmlyZSgpO319dGhpcy5i ZWZvcmVSZW5kZXJFdmVudC5maXJlKCk7aWYoIVEpe1E9dGhpcy5lbGVtZW50O31p ZihTKXtSKFMpO31lbHNle2lmKCFGLmluRG9jdW1lbnQodGhpcy5lbGVtZW50KSl7 cmV0dXJuIGZhbHNlO319aWYodGhpcy5oZWFkZXImJiFGLmluRG9jdW1lbnQodGhp cy5oZWFkZXIpKXtVPVEuZmlyc3RDaGlsZDsKaWYoVSl7US5pbnNlcnRCZWZvcmUo dGhpcy5oZWFkZXIsVSk7fWVsc2V7US5hcHBlbmRDaGlsZCh0aGlzLmhlYWRlcik7 fX1pZih0aGlzLmJvZHkmJiFGLmluRG9jdW1lbnQodGhpcy5ib2R5KSl7aWYodGhp cy5mb290ZXImJkYuaXNBbmNlc3Rvcih0aGlzLm1vZHVsZUVsZW1lbnQsdGhpcy5m b290ZXIpKXtRLmluc2VydEJlZm9yZSh0aGlzLmJvZHksdGhpcy5mb290ZXIpO31l bHNle1EuYXBwZW5kQ2hpbGQodGhpcy5ib2R5KTt9fWlmKHRoaXMuZm9vdGVyJiYh Ri5pbkRvY3VtZW50KHRoaXMuZm9vdGVyKSl7US5hcHBlbmRDaGlsZCh0aGlzLmZv b3Rlcik7fXRoaXMucmVuZGVyRXZlbnQuZmlyZSgpO3JldHVybiB0cnVlO30sZGVz dHJveTpmdW5jdGlvbigpe3ZhciBRO2lmKHRoaXMuZWxlbWVudCl7Ti5wdXJnZUVs ZW1lbnQodGhpcy5lbGVtZW50LHRydWUpO1E9dGhpcy5lbGVtZW50LnBhcmVudE5v ZGU7fWlmKFEpe1EucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KTt9dGhpcy5lbGVt ZW50PW51bGw7dGhpcy5oZWFkZXI9bnVsbDt0aGlzLmJvZHk9bnVsbDt0aGlzLmZv b3Rlcj1udWxsO0cudGV4dFJlc2l6ZUV2ZW50LnVuc3Vic2NyaWJlKHRoaXMub25E b21SZXNpemUsdGhpcyk7dGhpcy5jZmcuZGVzdHJveSgpO3RoaXMuY2ZnPW51bGw7 dGhpcy5kZXN0cm95RXZlbnQuZmlyZSgpO30sc2hvdzpmdW5jdGlvbigpe3RoaXMu Y2ZnLnNldFByb3BlcnR5KCJ2aXNpYmxlIix0cnVlKTt9LGhpZGU6ZnVuY3Rpb24o KXt0aGlzLmNmZy5zZXRQcm9wZXJ0eSgidmlzaWJsZSIsZmFsc2UpO30sY29uZmln VmlzaWJsZTpmdW5jdGlvbihSLFEsUyl7dmFyIFQ9UVswXTtpZihUKXt0aGlzLmJl Zm9yZVNob3dFdmVudC5maXJlKCk7Ri5zZXRTdHlsZSh0aGlzLmVsZW1lbnQsImRp c3BsYXkiLCJibG9jayIpO3RoaXMuc2hvd0V2ZW50LmZpcmUoKTt9ZWxzZXt0aGlz LmJlZm9yZUhpZGVFdmVudC5maXJlKCk7Ri5zZXRTdHlsZSh0aGlzLmVsZW1lbnQs ImRpc3BsYXkiLCJub25lIik7dGhpcy5oaWRlRXZlbnQuZmlyZSgpO319LGNvbmZp Z01vbml0b3JSZXNpemU6ZnVuY3Rpb24oUyxSLFQpe3ZhciBRPVJbMF07aWYoUSl7 dGhpcy5pbml0UmVzaXplTW9uaXRvcigpO31lbHNle0cudGV4dFJlc2l6ZUV2ZW50 LnVuc3Vic2NyaWJlKHRoaXMub25Eb21SZXNpemUsdGhpcyx0cnVlKTt0aGlzLnJl c2l6ZU1vbml0b3I9bnVsbDt9fSxfYWRkVG9QYXJlbnQ6ZnVuY3Rpb24oUSxSKXtp ZighdGhpcy5jZmcuZ2V0UHJvcGVydHkoImFwcGVuZHRvZG9jdW1lbnRib2R5Iikm JlE9PT1kb2N1bWVudC5ib2R5JiZRLmZpcnN0Q2hpbGQpe1EuaW5zZXJ0QmVmb3Jl KFIsUS5maXJzdENoaWxkKTt9ZWxzZXtRLmFwcGVuZENoaWxkKFIpO319LHRvU3Ry aW5nOmZ1bmN0aW9uKCl7cmV0dXJuIk1vZHVsZSAiK3RoaXMuaWQ7fX07WUFIT08u bGFuZy5hdWdtZW50UHJvdG8oRyxZQUhPTy51dGlsLkV2ZW50UHJvdmlkZXIpO30o KSk7KGZ1bmN0aW9uKCl7WUFIT08ud2lkZ2V0Lk92ZXJsYXk9ZnVuY3Rpb24oUCxP KXtZQUhPTy53aWRnZXQuT3ZlcmxheS5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNh bGwodGhpcyxQLE8pO307dmFyIEk9WUFIT08ubGFuZyxNPVlBSE9PLnV0aWwuQ3Vz dG9tRXZlbnQsRz1ZQUhPTy53aWRnZXQuTW9kdWxlLE49WUFIT08udXRpbC5FdmVu dCxGPVlBSE9PLnV0aWwuRG9tLEQ9WUFIT08udXRpbC5Db25maWcsSz1ZQUhPTy5l bnYudWEsQj1ZQUhPTy53aWRnZXQuT3ZlcmxheSxIPSJzdWJzY3JpYmUiLEU9InVu c3Vic2NyaWJlIixDPSJjb250YWluZWQiLEosQT17IkJFRk9SRV9NT1ZFIjoiYmVm b3JlTW92ZSIsIk1PVkUiOiJtb3ZlIn0sTD17IlgiOntrZXk6IngiLHZhbGlkYXRv cjpJLmlzTnVtYmVyLHN1cHByZXNzRXZlbnQ6dHJ1ZSxzdXBlcmNlZGVzOlsiaWZy YW1lIl19LCJZIjp7a2V5OiJ5Iix2YWxpZGF0b3I6SS5pc051bWJlcixzdXBwcmVz c0V2ZW50OnRydWUsc3VwZXJjZWRlczpbImlmcmFtZSJdfSwiWFkiOntrZXk6Inh5 IixzdXBwcmVzc0V2ZW50OnRydWUsc3VwZXJjZWRlczpbImlmcmFtZSJdfSwiQ09O VEVYVCI6e2tleToiY29udGV4dCIsc3VwcHJlc3NFdmVudDp0cnVlLHN1cGVyY2Vk ZXM6WyJpZnJhbWUiXX0sIkZJWEVEX0NFTlRFUiI6e2tleToiZml4ZWRjZW50ZXIi LHZhbHVlOmZhbHNlLHN1cGVyY2VkZXM6WyJpZnJhbWUiLCJ2aXNpYmxlIl19LCJX SURUSCI6e2tleToid2lkdGgiLHN1cHByZXNzRXZlbnQ6dHJ1ZSxzdXBlcmNlZGVz OlsiY29udGV4dCIsImZpeGVkY2VudGVyIiwiaWZyYW1lIl19LCJIRUlHSFQiOntr ZXk6ImhlaWdodCIsc3VwcHJlc3NFdmVudDp0cnVlLHN1cGVyY2VkZXM6WyJjb250 ZXh0IiwiZml4ZWRjZW50ZXIiLCJpZnJhbWUiXX0sIkFVVE9fRklMTF9IRUlHSFQi OntrZXk6ImF1dG9maWxsaGVpZ2h0IixzdXBlcmNlZGVzOlsiaGVpZ2h0Il0sdmFs dWU6ImJvZHkifSwiWklOREVYIjp7a2V5OiJ6aW5kZXgiLHZhbHVlOm51bGx9LCJD T05TVFJBSU5fVE9fVklFV1BPUlQiOntrZXk6ImNvbnN0cmFpbnRvdmlld3BvcnQi LHZhbHVlOmZhbHNlLHZhbGlkYXRvcjpJLmlzQm9vbGVhbixzdXBlcmNlZGVzOlsi aWZyYW1lIiwieCIsInkiLCJ4eSJdfSwiSUZSQU1FIjp7a2V5OiJpZnJhbWUiLHZh bHVlOihLLmllPT02P3RydWU6ZmFsc2UpLHZhbGlkYXRvcjpJLmlzQm9vbGVhbixz dXBlcmNlZGVzOlsiemluZGV4Il19LCJQUkVWRU5UX0NPTlRFWFRfT1ZFUkxBUCI6 e2tleToicHJldmVudGNvbnRleHRvdmVybGFwIix2YWx1ZTpmYWxzZSx2YWxpZGF0 b3I6SS5pc0Jvb2xlYW4sc3VwZXJjZWRlczpbImNvbnN0cmFpbnRvdmlld3BvcnQi XX19O0IuSUZSQU1FX1NSQz0iamF2YXNjcmlwdDpmYWxzZTsiO0IuSUZSQU1FX09G RlNFVD0zO0IuVklFV1BPUlRfT0ZGU0VUPTEwO0IuVE9QX0xFRlQ9InRsIjtCLlRP UF9SSUdIVD0idHIiO0IuQk9UVE9NX0xFRlQ9ImJsIjtCLkJPVFRPTV9SSUdIVD0i YnIiO0IuQ1NTX09WRVJMQVk9Inl1aS1vdmVybGF5IjtCLlNURF9NT0RfUkU9L15c cyo/KGJvZHl8Zm9vdGVyfGhlYWRlcilccyo/JC9pO0Iud2luZG93U2Nyb2xsRXZl bnQ9bmV3IE0oIndpbmRvd1Njcm9sbCIpO0Iud2luZG93UmVzaXplRXZlbnQ9bmV3 IE0oIndpbmRvd1Jlc2l6ZSIpO0Iud2luZG93U2Nyb2xsSGFuZGxlcj1mdW5jdGlv bihQKXt2YXIgTz1OLmdldFRhcmdldChQKTtpZighT3x8Tz09PXdpbmRvd3x8Tz09 PXdpbmRvdy5kb2N1bWVudCl7aWYoSy5pZSl7aWYoIXdpbmRvdy5zY3JvbGxFbmQp e3dpbmRvdy5zY3JvbGxFbmQ9LTE7fWNsZWFyVGltZW91dCh3aW5kb3cuc2Nyb2xs RW5kKTt3aW5kb3cuc2Nyb2xsRW5kPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtCLndp bmRvd1Njcm9sbEV2ZW50LmZpcmUoKTt9LDEpO31lbHNle0Iud2luZG93U2Nyb2xs RXZlbnQuZmlyZSgpO319fTtCLndpbmRvd1Jlc2l6ZUhhbmRsZXI9ZnVuY3Rpb24o Tyl7aWYoSy5pZSl7aWYoIXdpbmRvdy5yZXNpemVFbmQpe3dpbmRvdy5yZXNpemVF bmQ9LTE7fWNsZWFyVGltZW91dCh3aW5kb3cucmVzaXplRW5kKTt3aW5kb3cucmVz aXplRW5kPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtCLndpbmRvd1Jlc2l6ZUV2ZW50 LmZpcmUoKTt9LDEwMCk7fWVsc2V7Qi53aW5kb3dSZXNpemVFdmVudC5maXJlKCk7 fX07Qi5faW5pdGlhbGl6ZWQ9bnVsbDtpZihCLl9pbml0aWFsaXplZD09PW51bGwp e04ub24od2luZG93LCJzY3JvbGwiLEIud2luZG93U2Nyb2xsSGFuZGxlcik7Ti5v bih3aW5kb3csInJlc2l6ZSIsQi53aW5kb3dSZXNpemVIYW5kbGVyKTtCLl9pbml0 aWFsaXplZD10cnVlO31CLl9UUklHR0VSX01BUD17IndpbmRvd1Njcm9sbCI6Qi53 aW5kb3dTY3JvbGxFdmVudCwid2luZG93UmVzaXplIjpCLndpbmRvd1Jlc2l6ZUV2 ZW50LCJ0ZXh0UmVzaXplIjpHLnRleHRSZXNpemVFdmVudH07WUFIT08uZXh0ZW5k KEIsRyx7Q09OVEVYVF9UUklHR0VSUzpbXSxpbml0OmZ1bmN0aW9uKFAsTyl7Qi5z dXBlcmNsYXNzLmluaXQuY2FsbCh0aGlzLFApO3RoaXMuYmVmb3JlSW5pdEV2ZW50 LmZpcmUoQik7Ri5hZGRDbGFzcyh0aGlzLmVsZW1lbnQsQi5DU1NfT1ZFUkxBWSk7 aWYoTyl7dGhpcy5jZmcuYXBwbHlDb25maWcoTyx0cnVlKTt9aWYodGhpcy5wbGF0 Zm9ybT09Im1hYyImJksuZ2Vja28pe2lmKCFELmFscmVhZHlTdWJzY3JpYmVkKHRo aXMuc2hvd0V2ZW50LHRoaXMuc2hvd01hY0dlY2tvU2Nyb2xsYmFycyx0aGlzKSl7 dGhpcy5zaG93RXZlbnQuc3Vic2NyaWJlKHRoaXMuc2hvd01hY0dlY2tvU2Nyb2xs YmFycyx0aGlzLHRydWUpO31pZighRC5hbHJlYWR5U3Vic2NyaWJlZCh0aGlzLmhp ZGVFdmVudCx0aGlzLmhpZGVNYWNHZWNrb1Njcm9sbGJhcnMsdGhpcykpe3RoaXMu aGlkZUV2ZW50LnN1YnNjcmliZSh0aGlzLmhpZGVNYWNHZWNrb1Njcm9sbGJhcnMs dGhpcyx0cnVlKTt9fXRoaXMuaW5pdEV2ZW50LmZpcmUoQik7fSxpbml0RXZlbnRz OmZ1bmN0aW9uKCl7Qi5zdXBlcmNsYXNzLmluaXRFdmVudHMuY2FsbCh0aGlzKTt2 YXIgTz1NLkxJU1Q7dGhpcy5iZWZvcmVNb3ZlRXZlbnQ9dGhpcy5jcmVhdGVFdmVu dChBLkJFRk9SRV9NT1ZFKTt0aGlzLmJlZm9yZU1vdmVFdmVudC5zaWduYXR1cmU9 Tzt0aGlzLm1vdmVFdmVudD10aGlzLmNyZWF0ZUV2ZW50KEEuTU9WRSk7dGhpcy5t b3ZlRXZlbnQuc2lnbmF0dXJlPU87fSxpbml0RGVmYXVsdENvbmZpZzpmdW5jdGlv bigpe0Iuc3VwZXJjbGFzcy5pbml0RGVmYXVsdENvbmZpZy5jYWxsKHRoaXMpO3Zh ciBPPXRoaXMuY2ZnO08uYWRkUHJvcGVydHkoTC5YLmtleSx7aGFuZGxlcjp0aGlz LmNvbmZpZ1gsdmFsaWRhdG9yOkwuWC52YWxpZGF0b3Isc3VwcHJlc3NFdmVudDpM Llguc3VwcHJlc3NFdmVudCxzdXBlcmNlZGVzOkwuWC5zdXBlcmNlZGVzfSk7Ty5h ZGRQcm9wZXJ0eShMLlkua2V5LHtoYW5kbGVyOnRoaXMuY29uZmlnWSx2YWxpZGF0 b3I6TC5ZLnZhbGlkYXRvcixzdXBwcmVzc0V2ZW50OkwuWS5zdXBwcmVzc0V2ZW50 LHN1cGVyY2VkZXM6TC5ZLnN1cGVyY2VkZXN9KTtPLmFkZFByb3BlcnR5KEwuWFku a2V5LHtoYW5kbGVyOnRoaXMuY29uZmlnWFksc3VwcHJlc3NFdmVudDpMLlhZLnN1 cHByZXNzRXZlbnQsc3VwZXJjZWRlczpMLlhZLnN1cGVyY2VkZXN9KTtPLmFkZFBy b3BlcnR5KEwuQ09OVEVYVC5rZXkse2hhbmRsZXI6dGhpcy5jb25maWdDb250ZXh0 LHN1cHByZXNzRXZlbnQ6TC5DT05URVhULnN1cHByZXNzRXZlbnQsc3VwZXJjZWRl czpMLkNPTlRFWFQuc3VwZXJjZWRlc30pO08uYWRkUHJvcGVydHkoTC5GSVhFRF9D RU5URVIua2V5LHtoYW5kbGVyOnRoaXMuY29uZmlnRml4ZWRDZW50ZXIsdmFsdWU6 TC5GSVhFRF9DRU5URVIudmFsdWUsdmFsaWRhdG9yOkwuRklYRURfQ0VOVEVSLnZh bGlkYXRvcixzdXBlcmNlZGVzOkwuRklYRURfQ0VOVEVSLnN1cGVyY2VkZXN9KTtP LmFkZFByb3BlcnR5KEwuV0lEVEgua2V5LHtoYW5kbGVyOnRoaXMuY29uZmlnV2lk dGgsc3VwcHJlc3NFdmVudDpMLldJRFRILnN1cHByZXNzRXZlbnQsc3VwZXJjZWRl czpMLldJRFRILnN1cGVyY2VkZXN9KTtPLmFkZFByb3BlcnR5KEwuSEVJR0hULmtl eSx7aGFuZGxlcjp0aGlzLmNvbmZpZ0hlaWdodCxzdXBwcmVzc0V2ZW50OkwuSEVJ R0hULnN1cHByZXNzRXZlbnQsc3VwZXJjZWRlczpMLkhFSUdIVC5zdXBlcmNlZGVz fSk7Ty5hZGRQcm9wZXJ0eShMLkFVVE9fRklMTF9IRUlHSFQua2V5LHtoYW5kbGVy OnRoaXMuY29uZmlnQXV0b0ZpbGxIZWlnaHQsdmFsdWU6TC5BVVRPX0ZJTExfSEVJ R0hULnZhbHVlLHZhbGlkYXRvcjp0aGlzLl92YWxpZGF0ZUF1dG9GaWxsLHN1cGVy Y2VkZXM6TC5BVVRPX0ZJTExfSEVJR0hULnN1cGVyY2VkZXN9KTtPLmFkZFByb3Bl cnR5KEwuWklOREVYLmtleSx7aGFuZGxlcjp0aGlzLmNvbmZpZ3pJbmRleCx2YWx1 ZTpMLlpJTkRFWC52YWx1ZX0pO08uYWRkUHJvcGVydHkoTC5DT05TVFJBSU5fVE9f VklFV1BPUlQua2V5LHtoYW5kbGVyOnRoaXMuY29uZmlnQ29uc3RyYWluVG9WaWV3 cG9ydCx2YWx1ZTpMLkNPTlNUUkFJTl9UT19WSUVXUE9SVC52YWx1ZSx2YWxpZGF0 b3I6TC5DT05TVFJBSU5fVE9fVklFV1BPUlQudmFsaWRhdG9yLHN1cGVyY2VkZXM6 TC5DT05TVFJBSU5fVE9fVklFV1BPUlQuc3VwZXJjZWRlc30pOwpPLmFkZFByb3Bl cnR5KEwuSUZSQU1FLmtleSx7aGFuZGxlcjp0aGlzLmNvbmZpZ0lmcmFtZSx2YWx1 ZTpMLklGUkFNRS52YWx1ZSx2YWxpZGF0b3I6TC5JRlJBTUUudmFsaWRhdG9yLHN1 cGVyY2VkZXM6TC5JRlJBTUUuc3VwZXJjZWRlc30pO08uYWRkUHJvcGVydHkoTC5Q UkVWRU5UX0NPTlRFWFRfT1ZFUkxBUC5rZXkse3ZhbHVlOkwuUFJFVkVOVF9DT05U RVhUX09WRVJMQVAudmFsdWUsdmFsaWRhdG9yOkwuUFJFVkVOVF9DT05URVhUX09W RVJMQVAudmFsaWRhdG9yLHN1cGVyY2VkZXM6TC5QUkVWRU5UX0NPTlRFWFRfT1ZF UkxBUC5zdXBlcmNlZGVzfSk7fSxtb3ZlVG86ZnVuY3Rpb24oTyxQKXt0aGlzLmNm Zy5zZXRQcm9wZXJ0eSgieHkiLFtPLFBdKTt9LGhpZGVNYWNHZWNrb1Njcm9sbGJh cnM6ZnVuY3Rpb24oKXtGLnJlcGxhY2VDbGFzcyh0aGlzLmVsZW1lbnQsInNob3ct c2Nyb2xsYmFycyIsImhpZGUtc2Nyb2xsYmFycyIpO30sc2hvd01hY0dlY2tvU2Ny b2xsYmFyczpmdW5jdGlvbigpe0YucmVwbGFjZUNsYXNzKHRoaXMuZWxlbWVudCwi aGlkZS1zY3JvbGxiYXJzIiwic2hvdy1zY3JvbGxiYXJzIik7fSxfc2V0RG9tVmlz aWJpbGl0eTpmdW5jdGlvbihPKXtGLnNldFN0eWxlKHRoaXMuZWxlbWVudCwidmlz aWJpbGl0eSIsKE8pPyJ2aXNpYmxlIjoiaGlkZGVuIik7aWYoTyl7Ri5yZW1vdmVD bGFzcyh0aGlzLmVsZW1lbnQsInl1aS1vdmVybGF5LWhpZGRlbiIpO31lbHNle0Yu YWRkQ2xhc3ModGhpcy5lbGVtZW50LCJ5dWktb3ZlcmxheS1oaWRkZW4iKTt9fSxj b25maWdWaXNpYmxlOmZ1bmN0aW9uKFIsTyxYKXt2YXIgUT1PWzBdLFM9Ri5nZXRT dHlsZSh0aGlzLmVsZW1lbnQsInZpc2liaWxpdHkiKSxZPXRoaXMuY2ZnLmdldFBy b3BlcnR5KCJlZmZlY3QiKSxWPVtdLFU9KHRoaXMucGxhdGZvcm09PSJtYWMiJiZL LmdlY2tvKSxnPUQuYWxyZWFkeVN1YnNjcmliZWQsVyxQLGYsYyxiLGEsZCxaLFQ7 aWYoUz09ImluaGVyaXQiKXtmPXRoaXMuZWxlbWVudC5wYXJlbnROb2RlO3doaWxl KGYubm9kZVR5cGUhPTkmJmYubm9kZVR5cGUhPTExKXtTPUYuZ2V0U3R5bGUoZiwi dmlzaWJpbGl0eSIpO2lmKFMhPSJpbmhlcml0Iil7YnJlYWs7fWY9Zi5wYXJlbnRO b2RlO31pZihTPT0iaW5oZXJpdCIpe1M9InZpc2libGUiO319aWYoWSl7aWYoWSBp bnN0YW5jZW9mIEFycmF5KXtaPVkubGVuZ3RoO2ZvcihjPTA7YzxaO2MrKyl7Vz1Z W2NdO1ZbVi5sZW5ndGhdPVcuZWZmZWN0KHRoaXMsVy5kdXJhdGlvbik7fX1lbHNl e1ZbVi5sZW5ndGhdPVkuZWZmZWN0KHRoaXMsWS5kdXJhdGlvbik7fX1pZihRKXtp ZihVKXt0aGlzLnNob3dNYWNHZWNrb1Njcm9sbGJhcnMoKTt9aWYoWSl7aWYoUSl7 aWYoUyE9InZpc2libGUifHxTPT09IiIpe3RoaXMuYmVmb3JlU2hvd0V2ZW50LmZp cmUoKTtUPVYubGVuZ3RoO2ZvcihiPTA7YjxUO2IrKyl7UD1WW2JdO2lmKGI9PT0w JiYhZyhQLmFuaW1hdGVJbkNvbXBsZXRlRXZlbnQsdGhpcy5zaG93RXZlbnQuZmly ZSx0aGlzLnNob3dFdmVudCkpe1AuYW5pbWF0ZUluQ29tcGxldGVFdmVudC5zdWJz Y3JpYmUodGhpcy5zaG93RXZlbnQuZmlyZSx0aGlzLnNob3dFdmVudCx0cnVlKTt9 UC5hbmltYXRlSW4oKTt9fX19ZWxzZXtpZihTIT0idmlzaWJsZSJ8fFM9PT0iIil7 dGhpcy5iZWZvcmVTaG93RXZlbnQuZmlyZSgpO3RoaXMuX3NldERvbVZpc2liaWxp dHkodHJ1ZSk7dGhpcy5jZmcucmVmaXJlRXZlbnQoImlmcmFtZSIpO3RoaXMuc2hv d0V2ZW50LmZpcmUoKTt9ZWxzZXt0aGlzLl9zZXREb21WaXNpYmlsaXR5KHRydWUp O319fWVsc2V7aWYoVSl7dGhpcy5oaWRlTWFjR2Vja29TY3JvbGxiYXJzKCk7fWlm KFkpe2lmKFM9PSJ2aXNpYmxlIil7dGhpcy5iZWZvcmVIaWRlRXZlbnQuZmlyZSgp O1Q9Vi5sZW5ndGg7Zm9yKGE9MDthPFQ7YSsrKXtkPVZbYV07aWYoYT09PTAmJiFn KGQuYW5pbWF0ZU91dENvbXBsZXRlRXZlbnQsdGhpcy5oaWRlRXZlbnQuZmlyZSx0 aGlzLmhpZGVFdmVudCkpe2QuYW5pbWF0ZU91dENvbXBsZXRlRXZlbnQuc3Vic2Ny aWJlKHRoaXMuaGlkZUV2ZW50LmZpcmUsdGhpcy5oaWRlRXZlbnQsdHJ1ZSk7fWQu YW5pbWF0ZU91dCgpO319ZWxzZXtpZihTPT09IiIpe3RoaXMuX3NldERvbVZpc2li aWxpdHkoZmFsc2UpO319fWVsc2V7aWYoUz09InZpc2libGUifHxTPT09IiIpe3Ro aXMuYmVmb3JlSGlkZUV2ZW50LmZpcmUoKTt0aGlzLl9zZXREb21WaXNpYmlsaXR5 KGZhbHNlKTt0aGlzLmhpZGVFdmVudC5maXJlKCk7fWVsc2V7dGhpcy5fc2V0RG9t VmlzaWJpbGl0eShmYWxzZSk7fX19fSxkb0NlbnRlck9uRE9NRXZlbnQ6ZnVuY3Rp b24oKXt2YXIgTz10aGlzLmNmZyxQPU8uZ2V0UHJvcGVydHkoImZpeGVkY2VudGVy Iik7aWYoTy5nZXRQcm9wZXJ0eSgidmlzaWJsZSIpKXtpZihQJiYoUCE9PUN8fHRo aXMuZml0c0luVmlld3BvcnQoKSkpe3RoaXMuY2VudGVyKCk7fX19LGZpdHNJblZp ZXdwb3J0OmZ1bmN0aW9uKCl7dmFyIFM9Qi5WSUVXUE9SVF9PRkZTRVQsUT10aGlz LmVsZW1lbnQsVD1RLm9mZnNldFdpZHRoLFI9US5vZmZzZXRIZWlnaHQsTz1GLmdl dFZpZXdwb3J0V2lkdGgoKSxQPUYuZ2V0Vmlld3BvcnRIZWlnaHQoKTtyZXR1cm4o KFQrUzxPKSYmKFIrUzxQKSk7fSxjb25maWdGaXhlZENlbnRlcjpmdW5jdGlvbihT LFEsVCl7dmFyIFU9UVswXSxQPUQuYWxyZWFkeVN1YnNjcmliZWQsUj1CLndpbmRv d1Jlc2l6ZUV2ZW50LE89Qi53aW5kb3dTY3JvbGxFdmVudDtpZihVKXt0aGlzLmNl bnRlcigpO2lmKCFQKHRoaXMuYmVmb3JlU2hvd0V2ZW50LHRoaXMuY2VudGVyKSl7 dGhpcy5iZWZvcmVTaG93RXZlbnQuc3Vic2NyaWJlKHRoaXMuY2VudGVyKTt9aWYo IVAoUix0aGlzLmRvQ2VudGVyT25ET01FdmVudCx0aGlzKSl7Ui5zdWJzY3JpYmUo dGhpcy5kb0NlbnRlck9uRE9NRXZlbnQsdGhpcyx0cnVlKTt9aWYoIVAoTyx0aGlz LmRvQ2VudGVyT25ET01FdmVudCx0aGlzKSl7Ty5zdWJzY3JpYmUodGhpcy5kb0Nl bnRlck9uRE9NRXZlbnQsdGhpcyx0cnVlKTt9fWVsc2V7dGhpcy5iZWZvcmVTaG93 RXZlbnQudW5zdWJzY3JpYmUodGhpcy5jZW50ZXIpO1IudW5zdWJzY3JpYmUodGhp cy5kb0NlbnRlck9uRE9NRXZlbnQsdGhpcyk7Ty51bnN1YnNjcmliZSh0aGlzLmRv Q2VudGVyT25ET01FdmVudCx0aGlzKTt9fSxjb25maWdIZWlnaHQ6ZnVuY3Rpb24o UixQLFMpe3ZhciBPPVBbMF0sUT10aGlzLmVsZW1lbnQ7Ri5zZXRTdHlsZShRLCJo ZWlnaHQiLE8pO3RoaXMuY2ZnLnJlZmlyZUV2ZW50KCJpZnJhbWUiKTt9LGNvbmZp Z0F1dG9GaWxsSGVpZ2h0OmZ1bmN0aW9uKFQsUyxQKXt2YXIgVj1TWzBdLFE9dGhp cy5jZmcsVT0iYXV0b2ZpbGxoZWlnaHQiLFc9ImhlaWdodCIsUj1RLmdldFByb3Bl cnR5KFUpLE89dGhpcy5fYXV0b0ZpbGxPbkhlaWdodENoYW5nZTtRLnVuc3Vic2Ny aWJlRnJvbUNvbmZpZ0V2ZW50KFcsTyk7Ry50ZXh0UmVzaXplRXZlbnQudW5zdWJz Y3JpYmUoTyk7dGhpcy5jaGFuZ2VDb250ZW50RXZlbnQudW5zdWJzY3JpYmUoTyk7 aWYoUiYmViE9PVImJnRoaXNbUl0pe0Yuc2V0U3R5bGUodGhpc1tSXSxXLCIiKTt9 aWYoVil7Vj1JLnRyaW0oVi50b0xvd2VyQ2FzZSgpKTtRLnN1YnNjcmliZVRvQ29u ZmlnRXZlbnQoVyxPLHRoaXNbVl0sdGhpcyk7Ry50ZXh0UmVzaXplRXZlbnQuc3Vi c2NyaWJlKE8sdGhpc1tWXSx0aGlzKTt0aGlzLmNoYW5nZUNvbnRlbnRFdmVudC5z dWJzY3JpYmUoTyx0aGlzW1ZdLHRoaXMpO1Euc2V0UHJvcGVydHkoVSxWLHRydWUp O319LGNvbmZpZ1dpZHRoOmZ1bmN0aW9uKFIsTyxTKXt2YXIgUT1PWzBdLFA9dGhp cy5lbGVtZW50O0Yuc2V0U3R5bGUoUCwid2lkdGgiLFEpO3RoaXMuY2ZnLnJlZmly ZUV2ZW50KCJpZnJhbWUiKTt9LGNvbmZpZ3pJbmRleDpmdW5jdGlvbihRLE8sUil7 dmFyIFM9T1swXSxQPXRoaXMuZWxlbWVudDtpZighUyl7Uz1GLmdldFN0eWxlKFAs InpJbmRleCIpO2lmKCFTfHxpc05hTihTKSl7Uz0wO319aWYodGhpcy5pZnJhbWV8 fHRoaXMuY2ZnLmdldFByb3BlcnR5KCJpZnJhbWUiKT09PXRydWUpe2lmKFM8PTAp e1M9MTt9fUYuc2V0U3R5bGUoUCwiekluZGV4IixTKTt0aGlzLmNmZy5zZXRQcm9w ZXJ0eSgiekluZGV4IixTLHRydWUpO2lmKHRoaXMuaWZyYW1lKXt0aGlzLnN0YWNr SWZyYW1lKCk7fX0sY29uZmlnWFk6ZnVuY3Rpb24oUSxQLFIpe3ZhciBUPVBbMF0s Tz1UWzBdLFM9VFsxXTt0aGlzLmNmZy5zZXRQcm9wZXJ0eSgieCIsTyk7dGhpcy5j Zmcuc2V0UHJvcGVydHkoInkiLFMpO3RoaXMuYmVmb3JlTW92ZUV2ZW50LmZpcmUo W08sU10pO089dGhpcy5jZmcuZ2V0UHJvcGVydHkoIngiKTtTPXRoaXMuY2ZnLmdl dFByb3BlcnR5KCJ5Iik7dGhpcy5jZmcucmVmaXJlRXZlbnQoImlmcmFtZSIpO3Ro aXMubW92ZUV2ZW50LmZpcmUoW08sU10pO30sY29uZmlnWDpmdW5jdGlvbihRLFAs Uil7dmFyIE89UFswXSxTPXRoaXMuY2ZnLmdldFByb3BlcnR5KCJ5Iik7dGhpcy5j Zmcuc2V0UHJvcGVydHkoIngiLE8sdHJ1ZSk7dGhpcy5jZmcuc2V0UHJvcGVydHko InkiLFMsdHJ1ZSk7dGhpcy5iZWZvcmVNb3ZlRXZlbnQuZmlyZShbTyxTXSk7Tz10 aGlzLmNmZy5nZXRQcm9wZXJ0eSgieCIpO1M9dGhpcy5jZmcuZ2V0UHJvcGVydHko InkiKTtGLnNldFgodGhpcy5lbGVtZW50LE8sdHJ1ZSk7dGhpcy5jZmcuc2V0UHJv cGVydHkoInh5IixbTyxTXSx0cnVlKTt0aGlzLmNmZy5yZWZpcmVFdmVudCgiaWZy YW1lIik7dGhpcy5tb3ZlRXZlbnQuZmlyZShbTyxTXSk7fSxjb25maWdZOmZ1bmN0 aW9uKFEsUCxSKXt2YXIgTz10aGlzLmNmZy5nZXRQcm9wZXJ0eSgieCIpLFM9UFsw XTt0aGlzLmNmZy5zZXRQcm9wZXJ0eSgieCIsTyx0cnVlKTt0aGlzLmNmZy5zZXRQ cm9wZXJ0eSgieSIsUyx0cnVlKTt0aGlzLmJlZm9yZU1vdmVFdmVudC5maXJlKFtP LFNdKTtPPXRoaXMuY2ZnLmdldFByb3BlcnR5KCJ4Iik7Uz10aGlzLmNmZy5nZXRQ cm9wZXJ0eSgieSIpO0Yuc2V0WSh0aGlzLmVsZW1lbnQsUyx0cnVlKTt0aGlzLmNm Zy5zZXRQcm9wZXJ0eSgieHkiLFtPLFNdLHRydWUpO3RoaXMuY2ZnLnJlZmlyZUV2 ZW50KCJpZnJhbWUiKTt0aGlzLm1vdmVFdmVudC5maXJlKFtPLFNdKTt9LHNob3dJ ZnJhbWU6ZnVuY3Rpb24oKXt2YXIgUD10aGlzLmlmcmFtZSxPO2lmKFApe089dGhp cy5lbGVtZW50LnBhcmVudE5vZGU7aWYoTyE9UC5wYXJlbnROb2RlKXt0aGlzLl9h ZGRUb1BhcmVudChPLFApO31QLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjt9fSxoaWRl SWZyYW1lOmZ1bmN0aW9uKCl7aWYodGhpcy5pZnJhbWUpe3RoaXMuaWZyYW1lLnN0 eWxlLmRpc3BsYXk9Im5vbmUiO319LHN5bmNJZnJhbWU6ZnVuY3Rpb24oKXt2YXIg Tz10aGlzLmlmcmFtZSxRPXRoaXMuZWxlbWVudCxTPUIuSUZSQU1FX09GRlNFVCxQ PShTKjIpLFI7aWYoTyl7Ty5zdHlsZS53aWR0aD0oUS5vZmZzZXRXaWR0aCtQKyJw eCIpO08uc3R5bGUuaGVpZ2h0PShRLm9mZnNldEhlaWdodCtQKyJweCIpO1I9dGhp cy5jZmcuZ2V0UHJvcGVydHkoInh5Iik7aWYoIUkuaXNBcnJheShSKXx8KGlzTmFO KFJbMF0pfHxpc05hTihSWzFdKSkpe3RoaXMuc3luY1Bvc2l0aW9uKCk7Uj10aGlz LmNmZy5nZXRQcm9wZXJ0eSgieHkiKTt9Ri5zZXRYWShPLFsoUlswXS1TKSwoUlsx XS1TKV0pO319LHN0YWNrSWZyYW1lOmZ1bmN0aW9uKCl7aWYodGhpcy5pZnJhbWUp e3ZhciBPPUYuZ2V0U3R5bGUodGhpcy5lbGVtZW50LCJ6SW5kZXgiKTtpZighWUFI T08ubGFuZy5pc1VuZGVmaW5lZChPKSYmIWlzTmFOKE8pKXtGLnNldFN0eWxlKHRo aXMuaWZyYW1lLCJ6SW5kZXgiLChPLTEpKTt9fX0sY29uZmlnSWZyYW1lOmZ1bmN0 aW9uKFIsUSxTKXt2YXIgTz1RWzBdO2Z1bmN0aW9uIFQoKXt2YXIgVj10aGlzLmlm cmFtZSxXPXRoaXMuZWxlbWVudCxYO2lmKCFWKXtpZighSil7Sj1kb2N1bWVudC5j cmVhdGVFbGVtZW50KCJpZnJhbWUiKTtpZih0aGlzLmlzU2VjdXJlKXtKLnNyYz1C LklGUkFNRV9TUkM7fWlmKEsuaWUpe0ouc3R5bGUuZmlsdGVyPSJhbHBoYShvcGFj aXR5PTApIjsKSi5mcmFtZUJvcmRlcj0wO31lbHNle0ouc3R5bGUub3BhY2l0eT0i MCI7fUouc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtKLnN0eWxlLmJvcmRlcj0i bm9uZSI7Si5zdHlsZS5tYXJnaW49IjAiO0ouc3R5bGUucGFkZGluZz0iMCI7Si5z dHlsZS5kaXNwbGF5PSJub25lIjtKLnRhYkluZGV4PS0xO31WPUouY2xvbmVOb2Rl KGZhbHNlKTtYPVcucGFyZW50Tm9kZTt2YXIgVT1YfHxkb2N1bWVudC5ib2R5O3Ro aXMuX2FkZFRvUGFyZW50KFUsVik7dGhpcy5pZnJhbWU9Vjt9dGhpcy5zaG93SWZy YW1lKCk7dGhpcy5zeW5jSWZyYW1lKCk7dGhpcy5zdGFja0lmcmFtZSgpO2lmKCF0 aGlzLl9oYXNJZnJhbWVFdmVudExpc3RlbmVycyl7dGhpcy5zaG93RXZlbnQuc3Vi c2NyaWJlKHRoaXMuc2hvd0lmcmFtZSk7dGhpcy5oaWRlRXZlbnQuc3Vic2NyaWJl KHRoaXMuaGlkZUlmcmFtZSk7dGhpcy5jaGFuZ2VDb250ZW50RXZlbnQuc3Vic2Ny aWJlKHRoaXMuc3luY0lmcmFtZSk7dGhpcy5faGFzSWZyYW1lRXZlbnRMaXN0ZW5l cnM9dHJ1ZTt9fWZ1bmN0aW9uIFAoKXtULmNhbGwodGhpcyk7dGhpcy5iZWZvcmVT aG93RXZlbnQudW5zdWJzY3JpYmUoUCk7dGhpcy5faWZyYW1lRGVmZXJyZWQ9ZmFs c2U7fWlmKE8pe2lmKHRoaXMuY2ZnLmdldFByb3BlcnR5KCJ2aXNpYmxlIikpe1Qu Y2FsbCh0aGlzKTt9ZWxzZXtpZighdGhpcy5faWZyYW1lRGVmZXJyZWQpe3RoaXMu YmVmb3JlU2hvd0V2ZW50LnN1YnNjcmliZShQKTt0aGlzLl9pZnJhbWVEZWZlcnJl ZD10cnVlO319fWVsc2V7dGhpcy5oaWRlSWZyYW1lKCk7aWYodGhpcy5faGFzSWZy YW1lRXZlbnRMaXN0ZW5lcnMpe3RoaXMuc2hvd0V2ZW50LnVuc3Vic2NyaWJlKHRo aXMuc2hvd0lmcmFtZSk7dGhpcy5oaWRlRXZlbnQudW5zdWJzY3JpYmUodGhpcy5o aWRlSWZyYW1lKTt0aGlzLmNoYW5nZUNvbnRlbnRFdmVudC51bnN1YnNjcmliZSh0 aGlzLnN5bmNJZnJhbWUpO3RoaXMuX2hhc0lmcmFtZUV2ZW50TGlzdGVuZXJzPWZh bHNlO319fSxfcHJpbWVYWUZyb21ET006ZnVuY3Rpb24oKXtpZihZQUhPTy5sYW5n LmlzVW5kZWZpbmVkKHRoaXMuY2ZnLmdldFByb3BlcnR5KCJ4eSIpKSl7dGhpcy5z eW5jUG9zaXRpb24oKTt0aGlzLmNmZy5yZWZpcmVFdmVudCgieHkiKTt0aGlzLmJl Zm9yZVNob3dFdmVudC51bnN1YnNjcmliZSh0aGlzLl9wcmltZVhZRnJvbURPTSk7 fX0sY29uZmlnQ29uc3RyYWluVG9WaWV3cG9ydDpmdW5jdGlvbihQLE8sUSl7dmFy IFI9T1swXTtpZihSKXtpZighRC5hbHJlYWR5U3Vic2NyaWJlZCh0aGlzLmJlZm9y ZU1vdmVFdmVudCx0aGlzLmVuZm9yY2VDb25zdHJhaW50cyx0aGlzKSl7dGhpcy5i ZWZvcmVNb3ZlRXZlbnQuc3Vic2NyaWJlKHRoaXMuZW5mb3JjZUNvbnN0cmFpbnRz LHRoaXMsdHJ1ZSk7fWlmKCFELmFscmVhZHlTdWJzY3JpYmVkKHRoaXMuYmVmb3Jl U2hvd0V2ZW50LHRoaXMuX3ByaW1lWFlGcm9tRE9NKSl7dGhpcy5iZWZvcmVTaG93 RXZlbnQuc3Vic2NyaWJlKHRoaXMuX3ByaW1lWFlGcm9tRE9NKTt9fWVsc2V7dGhp cy5iZWZvcmVTaG93RXZlbnQudW5zdWJzY3JpYmUodGhpcy5fcHJpbWVYWUZyb21E T00pO3RoaXMuYmVmb3JlTW92ZUV2ZW50LnVuc3Vic2NyaWJlKHRoaXMuZW5mb3Jj ZUNvbnN0cmFpbnRzLHRoaXMpO319LGNvbmZpZ0NvbnRleHQ6ZnVuY3Rpb24oVCxT LFApe3ZhciBXPVNbMF0sUSxPLFUsUixWPXRoaXMuQ09OVEVYVF9UUklHR0VSUztp ZihXKXtRPVdbMF07Tz1XWzFdO1U9V1syXTtSPVdbM107aWYoViYmVi5sZW5ndGg+ MCl7Uj0oUnx8W10pLmNvbmNhdChWKTt9aWYoUSl7aWYodHlwZW9mIFE9PSJzdHJp bmciKXt0aGlzLmNmZy5zZXRQcm9wZXJ0eSgiY29udGV4dCIsW2RvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKFEpLE8sVSxSXSx0cnVlKTt9aWYoTyYmVSl7dGhpcy5hbGln bihPLFUpO31pZih0aGlzLl9jb250ZXh0VHJpZ2dlcnMpe3RoaXMuX3Byb2Nlc3NU cmlnZ2Vycyh0aGlzLl9jb250ZXh0VHJpZ2dlcnMsRSx0aGlzLl9hbGlnbk9uVHJp Z2dlcik7fWlmKFIpe3RoaXMuX3Byb2Nlc3NUcmlnZ2VycyhSLEgsdGhpcy5fYWxp Z25PblRyaWdnZXIpO3RoaXMuX2NvbnRleHRUcmlnZ2Vycz1SO319fX0sX2FsaWdu T25UcmlnZ2VyOmZ1bmN0aW9uKFAsTyl7dGhpcy5hbGlnbigpO30sX2ZpbmRUcmln Z2VyQ0U6ZnVuY3Rpb24oTyl7dmFyIFA9bnVsbDtpZihPIGluc3RhbmNlb2YgTSl7 UD1PO31lbHNle2lmKEIuX1RSSUdHRVJfTUFQW09dKXtQPUIuX1RSSUdHRVJfTUFQ W09dO319cmV0dXJuIFA7fSxfcHJvY2Vzc1RyaWdnZXJzOmZ1bmN0aW9uKFMsVSxS KXt2YXIgUSxUO2Zvcih2YXIgUD0wLE89Uy5sZW5ndGg7UDxPOysrUCl7UT1TW1Bd O1Q9dGhpcy5fZmluZFRyaWdnZXJDRShRKTtpZihUKXtUW1VdKFIsdGhpcyx0cnVl KTt9ZWxzZXt0aGlzW1VdKFEsUik7fX19LGFsaWduOmZ1bmN0aW9uKFAsTyl7dmFy IFU9dGhpcy5jZmcuZ2V0UHJvcGVydHkoImNvbnRleHQiKSxUPXRoaXMsUyxSLFY7 ZnVuY3Rpb24gUShXLFgpe3N3aXRjaChQKXtjYXNlIEIuVE9QX0xFRlQ6VC5tb3Zl VG8oWCxXKTticmVhaztjYXNlIEIuVE9QX1JJR0hUOlQubW92ZVRvKChYLVIub2Zm c2V0V2lkdGgpLFcpO2JyZWFrO2Nhc2UgQi5CT1RUT01fTEVGVDpULm1vdmVUbyhY LChXLVIub2Zmc2V0SGVpZ2h0KSk7YnJlYWs7Y2FzZSBCLkJPVFRPTV9SSUdIVDpU Lm1vdmVUbygoWC1SLm9mZnNldFdpZHRoKSwoVy1SLm9mZnNldEhlaWdodCkpO2Jy ZWFrO319aWYoVSl7Uz1VWzBdO1I9dGhpcy5lbGVtZW50O1Q9dGhpcztpZighUCl7 UD1VWzFdO31pZighTyl7Tz1VWzJdO31pZihSJiZTKXtWPUYuZ2V0UmVnaW9uKFMp O3N3aXRjaChPKXtjYXNlIEIuVE9QX0xFRlQ6UShWLnRvcCxWLmxlZnQpO2JyZWFr O2Nhc2UgQi5UT1BfUklHSFQ6UShWLnRvcCxWLnJpZ2h0KTticmVhaztjYXNlIEIu Qk9UVE9NX0xFRlQ6UShWLmJvdHRvbSxWLmxlZnQpO2JyZWFrO2Nhc2UgQi5CT1RU T01fUklHSFQ6UShWLmJvdHRvbSxWLnJpZ2h0KTticmVhazt9fX19LGVuZm9yY2VD b25zdHJhaW50czpmdW5jdGlvbihQLE8sUSl7dmFyIFM9T1swXTt2YXIgUj10aGlz LmdldENvbnN0cmFpbmVkWFkoU1swXSxTWzFdKTt0aGlzLmNmZy5zZXRQcm9wZXJ0 eSgieCIsUlswXSx0cnVlKTt0aGlzLmNmZy5zZXRQcm9wZXJ0eSgieSIsUlsxXSx0 cnVlKTt0aGlzLmNmZy5zZXRQcm9wZXJ0eSgieHkiLFIsdHJ1ZSk7fSxnZXRDb25z dHJhaW5lZFg6ZnVuY3Rpb24oVil7dmFyIFM9dGhpcyxPPVMuZWxlbWVudCxlPU8u b2Zmc2V0V2lkdGgsYz1CLlZJRVdQT1JUX09GRlNFVCxoPUYuZ2V0Vmlld3BvcnRX aWR0aCgpLGQ9Ri5nZXREb2N1bWVudFNjcm9sbExlZnQoKSxZPShlK2M8aCksYj10 aGlzLmNmZy5nZXRQcm9wZXJ0eSgiY29udGV4dCIpLFEsWCxqLFQ9ZmFsc2UsZixX LGc9ZCtjLFA9ZCtoLWUtYyxpPVYsVT17InRsdHIiOnRydWUsImJsYnIiOnRydWUs ImJyYmwiOnRydWUsInRydGwiOnRydWV9O3ZhciBaPWZ1bmN0aW9uKCl7dmFyIGs7 aWYoKFMuY2ZnLmdldFByb3BlcnR5KCJ4IiktZCk+WCl7az0oWC1lKTt9ZWxzZXtr PShYK2opO31TLmNmZy5zZXRQcm9wZXJ0eSgieCIsKGsrZCksdHJ1ZSk7cmV0dXJu IGs7fTt2YXIgUj1mdW5jdGlvbigpe2lmKChTLmNmZy5nZXRQcm9wZXJ0eSgieCIp LWQpPlgpe3JldHVybihXLWMpO31lbHNle3JldHVybihmLWMpO319O3ZhciBhPWZ1 bmN0aW9uKCl7dmFyIGs9UigpLGw7aWYoZT5rKXtpZihUKXtaKCk7fWVsc2V7Wigp O1Q9dHJ1ZTtsPWEoKTt9fXJldHVybiBsO307aWYoVjxnfHxWPlApe2lmKFkpe2lm KHRoaXMuY2ZnLmdldFByb3BlcnR5KCJwcmV2ZW50Y29udGV4dG92ZXJsYXAiKSYm YiYmVVsoYlsxXStiWzJdKV0pe1E9YlswXTtYPUYuZ2V0WChRKS1kO2o9US5vZmZz ZXRXaWR0aDtmPVg7Vz0oaC0oWCtqKSk7YSgpO2k9dGhpcy5jZmcuZ2V0UHJvcGVy dHkoIngiKTt9ZWxzZXtpZihWPGcpe2k9Zzt9ZWxzZXtpZihWPlApe2k9UDt9fX19 ZWxzZXtpPWMrZDt9fXJldHVybiBpO30sZ2V0Q29uc3RyYWluZWRZOmZ1bmN0aW9u KFope3ZhciBXPXRoaXMsUD1XLmVsZW1lbnQsaT1QLm9mZnNldEhlaWdodCxoPUIu VklFV1BPUlRfT0ZGU0VULGQ9Ri5nZXRWaWV3cG9ydEhlaWdodCgpLGc9Ri5nZXRE b2N1bWVudFNjcm9sbFRvcCgpLGU9KGkraDxkKSxmPXRoaXMuY2ZnLmdldFByb3Bl cnR5KCJjb250ZXh0IiksVSxhLGIsWD1mYWxzZSxWLFEsYz1nK2gsUz1nK2QtaS1o LE89WixZPXsidHJiciI6dHJ1ZSwidGxibCI6dHJ1ZSwiYmx0bCI6dHJ1ZSwiYnJ0 ciI6dHJ1ZX07dmFyIFQ9ZnVuY3Rpb24oKXt2YXIgaztpZigoVy5jZmcuZ2V0UHJv cGVydHkoInkiKS1nKT5hKXtrPShhLWkpO31lbHNle2s9KGErYik7fVcuY2ZnLnNl dFByb3BlcnR5KCJ5IiwoaytnKSx0cnVlKTtyZXR1cm4gazt9O3ZhciBSPWZ1bmN0 aW9uKCl7aWYoKFcuY2ZnLmdldFByb3BlcnR5KCJ5IiktZyk+YSl7cmV0dXJuKFEt aCk7fWVsc2V7cmV0dXJuKFYtaCk7fX07dmFyIGo9ZnVuY3Rpb24oKXt2YXIgbD1S KCksaztpZihpPmwpe2lmKFgpe1QoKTt9ZWxzZXtUKCk7WD10cnVlO2s9aigpO319 cmV0dXJuIGs7fTtpZihaPGN8fFo+Uyl7aWYoZSl7aWYodGhpcy5jZmcuZ2V0UHJv cGVydHkoInByZXZlbnRjb250ZXh0b3ZlcmxhcCIpJiZmJiZZWyhmWzFdK2ZbMl0p XSl7VT1mWzBdO2I9VS5vZmZzZXRIZWlnaHQ7YT0oRi5nZXRZKFUpLWcpO1Y9YTtR PShkLShhK2IpKTtqKCk7Tz1XLmNmZy5nZXRQcm9wZXJ0eSgieSIpO31lbHNle2lm KFo8Yyl7Tz1jO31lbHNle2lmKFo+Uyl7Tz1TO319fX1lbHNle089aCtnO319cmV0 dXJuIE87fSxnZXRDb25zdHJhaW5lZFhZOmZ1bmN0aW9uKE8sUCl7cmV0dXJuW3Ro aXMuZ2V0Q29uc3RyYWluZWRYKE8pLHRoaXMuZ2V0Q29uc3RyYWluZWRZKFApXTt9 LGNlbnRlcjpmdW5jdGlvbigpe3ZhciBSPUIuVklFV1BPUlRfT0ZGU0VULFM9dGhp cy5lbGVtZW50Lm9mZnNldFdpZHRoLFE9dGhpcy5lbGVtZW50Lm9mZnNldEhlaWdo dCxQPUYuZ2V0Vmlld3BvcnRXaWR0aCgpLFQ9Ri5nZXRWaWV3cG9ydEhlaWdodCgp LE8sVTtpZihTPFApe089KFAvMiktKFMvMikrRi5nZXREb2N1bWVudFNjcm9sbExl ZnQoKTt9ZWxzZXtPPVIrRi5nZXREb2N1bWVudFNjcm9sbExlZnQoKTt9aWYoUTxU KXtVPShULzIpLShRLzIpK0YuZ2V0RG9jdW1lbnRTY3JvbGxUb3AoKTt9ZWxzZXtV PVIrRi5nZXREb2N1bWVudFNjcm9sbFRvcCgpO310aGlzLmNmZy5zZXRQcm9wZXJ0 eSgieHkiLFtwYXJzZUludChPLDEwKSxwYXJzZUludChVLDEwKV0pO3RoaXMuY2Zn LnJlZmlyZUV2ZW50KCJpZnJhbWUiKTtpZihLLndlYmtpdCl7dGhpcy5mb3JjZUNv bnRhaW5lclJlZHJhdygpO319LHN5bmNQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciBP PUYuZ2V0WFkodGhpcy5lbGVtZW50KTt0aGlzLmNmZy5zZXRQcm9wZXJ0eSgieCIs T1swXSx0cnVlKTt0aGlzLmNmZy5zZXRQcm9wZXJ0eSgieSIsT1sxXSx0cnVlKTt0 aGlzLmNmZy5zZXRQcm9wZXJ0eSgieHkiLE8sdHJ1ZSk7fSxvbkRvbVJlc2l6ZTpm dW5jdGlvbihRLFApe3ZhciBPPXRoaXM7Qi5zdXBlcmNsYXNzLm9uRG9tUmVzaXpl LmNhbGwodGhpcyxRLFApO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtPLnN5bmNQb3Np dGlvbigpO08uY2ZnLnJlZmlyZUV2ZW50KCJpZnJhbWUiKTtPLmNmZy5yZWZpcmVF dmVudCgiY29udGV4dCIpO30sMCk7fSxfZ2V0Q29tcHV0ZWRIZWlnaHQ6KGZ1bmN0 aW9uKCl7aWYoZG9jdW1lbnQuZGVmYXVsdFZpZXcmJmRvY3VtZW50LmRlZmF1bHRW aWV3LmdldENvbXB1dGVkU3R5bGUpe3JldHVybiBmdW5jdGlvbihQKXt2YXIgTz1u dWxsO2lmKFAub3duZXJEb2N1bWVudCYmUC5vd25lckRvY3VtZW50LmRlZmF1bHRW aWV3KXt2YXIgUT1QLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0 ZWRTdHlsZShQLCIiKTtpZihRKXtPPXBhcnNlSW50KFEuaGVpZ2h0LDEwKTt9fXJl dHVybihJLmlzTnVtYmVyKE8pKT9POm51bGw7fTt9ZWxzZXtyZXR1cm4gZnVuY3Rp b24oUCl7dmFyIE89bnVsbDsKaWYoUC5zdHlsZS5waXhlbEhlaWdodCl7Tz1QLnN0 eWxlLnBpeGVsSGVpZ2h0O31yZXR1cm4oSS5pc051bWJlcihPKSk/TzpudWxsO307 fX0pKCksX3ZhbGlkYXRlQXV0b0ZpbGxIZWlnaHQ6ZnVuY3Rpb24oTyl7cmV0dXJu KCFPKXx8KEkuaXNTdHJpbmcoTykmJkIuU1REX01PRF9SRS50ZXN0KE8pKTt9LF9h dXRvRmlsbE9uSGVpZ2h0Q2hhbmdlOmZ1bmN0aW9uKFIsUCxRKXt2YXIgTz10aGlz LmNmZy5nZXRQcm9wZXJ0eSgiaGVpZ2h0Iik7aWYoKE8mJk8hPT0iYXV0byIpfHwo Tz09PTApKXt0aGlzLmZpbGxIZWlnaHQoUSk7fX0sX2dldFByZWNpc2VIZWlnaHQ6 ZnVuY3Rpb24oUCl7dmFyIE89UC5vZmZzZXRIZWlnaHQ7aWYoUC5nZXRCb3VuZGlu Z0NsaWVudFJlY3Qpe3ZhciBRPVAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Tz1R LmJvdHRvbS1RLnRvcDt9cmV0dXJuIE87fSxmaWxsSGVpZ2h0OmZ1bmN0aW9uKFIp e2lmKFIpe3ZhciBQPXRoaXMuaW5uZXJFbGVtZW50fHx0aGlzLmVsZW1lbnQsTz1b dGhpcy5oZWFkZXIsdGhpcy5ib2R5LHRoaXMuZm9vdGVyXSxWLFc9MCxYPTAsVD0w LFE9ZmFsc2U7Zm9yKHZhciBVPTAsUz1PLmxlbmd0aDtVPFM7VSsrKXtWPU9bVV07 aWYoVil7aWYoUiE9PVYpe1grPXRoaXMuX2dldFByZWNpc2VIZWlnaHQoVik7fWVs c2V7UT10cnVlO319fWlmKFEpe2lmKEsuaWV8fEsub3BlcmEpe0Yuc2V0U3R5bGUo UiwiaGVpZ2h0IiwwKyJweCIpO31XPXRoaXMuX2dldENvbXB1dGVkSGVpZ2h0KFAp O2lmKFc9PT1udWxsKXtGLmFkZENsYXNzKFAsInl1aS1vdmVycmlkZS1wYWRkaW5n Iik7Vz1QLmNsaWVudEhlaWdodDtGLnJlbW92ZUNsYXNzKFAsInl1aS1vdmVycmlk ZS1wYWRkaW5nIik7fVQ9TWF0aC5tYXgoVy1YLDApO0Yuc2V0U3R5bGUoUiwiaGVp Z2h0IixUKyJweCIpO2lmKFIub2Zmc2V0SGVpZ2h0IT1UKXtUPU1hdGgubWF4KFQt KFIub2Zmc2V0SGVpZ2h0LVQpLDApO31GLnNldFN0eWxlKFIsImhlaWdodCIsVCsi cHgiKTt9fX0sYnJpbmdUb1RvcDpmdW5jdGlvbigpe3ZhciBTPVtdLFI9dGhpcy5l bGVtZW50O2Z1bmN0aW9uIFYoWixZKXt2YXIgYj1GLmdldFN0eWxlKFosInpJbmRl eCIpLGE9Ri5nZXRTdHlsZShZLCJ6SW5kZXgiKSxYPSghYnx8aXNOYU4oYikpPzA6 cGFyc2VJbnQoYiwxMCksVz0oIWF8fGlzTmFOKGEpKT8wOnBhcnNlSW50KGEsMTAp O2lmKFg+Vyl7cmV0dXJuIC0xO31lbHNle2lmKFg8Vyl7cmV0dXJuIDE7fWVsc2V7 cmV0dXJuIDA7fX19ZnVuY3Rpb24gUShZKXt2YXIgWD1GLmhhc0NsYXNzKFksQi5D U1NfT1ZFUkxBWSksVz1ZQUhPTy53aWRnZXQuUGFuZWw7aWYoWCYmIUYuaXNBbmNl c3RvcihSLFkpKXtpZihXJiZGLmhhc0NsYXNzKFksVy5DU1NfUEFORUwpKXtTW1Mu bGVuZ3RoXT1ZLnBhcmVudE5vZGU7fWVsc2V7U1tTLmxlbmd0aF09WTt9fX1GLmdl dEVsZW1lbnRzQnkoUSwiRElWIixkb2N1bWVudC5ib2R5KTtTLnNvcnQoVik7dmFy IE89U1swXSxVO2lmKE8pe1U9Ri5nZXRTdHlsZShPLCJ6SW5kZXgiKTtpZighaXNO YU4oVSkpe3ZhciBUPWZhbHNlO2lmKE8hPVIpe1Q9dHJ1ZTt9ZWxzZXtpZihTLmxl bmd0aD4xKXt2YXIgUD1GLmdldFN0eWxlKFNbMV0sInpJbmRleCIpO2lmKCFpc05h TihQKSYmKFU9PVApKXtUPXRydWU7fX19aWYoVCl7dGhpcy5jZmcuc2V0UHJvcGVy dHkoInppbmRleCIsKHBhcnNlSW50KFUsMTApKzIpKTt9fX19LGRlc3Ryb3k6ZnVu Y3Rpb24oKXtpZih0aGlzLmlmcmFtZSl7dGhpcy5pZnJhbWUucGFyZW50Tm9kZS5y ZW1vdmVDaGlsZCh0aGlzLmlmcmFtZSk7fXRoaXMuaWZyYW1lPW51bGw7Qi53aW5k b3dSZXNpemVFdmVudC51bnN1YnNjcmliZSh0aGlzLmRvQ2VudGVyT25ET01FdmVu dCx0aGlzKTtCLndpbmRvd1Njcm9sbEV2ZW50LnVuc3Vic2NyaWJlKHRoaXMuZG9D ZW50ZXJPbkRPTUV2ZW50LHRoaXMpO0cudGV4dFJlc2l6ZUV2ZW50LnVuc3Vic2Ny aWJlKHRoaXMuX2F1dG9GaWxsT25IZWlnaHRDaGFuZ2UpO0Iuc3VwZXJjbGFzcy5k ZXN0cm95LmNhbGwodGhpcyk7fSxmb3JjZUNvbnRhaW5lclJlZHJhdzpmdW5jdGlv bigpe3ZhciBPPXRoaXM7Ri5hZGRDbGFzcyhPLmVsZW1lbnQsInl1aS1mb3JjZS1y ZWRyYXciKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Ri5yZW1vdmVDbGFzcyhPLmVs ZW1lbnQsInl1aS1mb3JjZS1yZWRyYXciKTt9LDApO30sdG9TdHJpbmc6ZnVuY3Rp b24oKXtyZXR1cm4iT3ZlcmxheSAiK3RoaXMuaWQ7fX0pO30oKSk7KGZ1bmN0aW9u KCl7WUFIT08ud2lkZ2V0Lk92ZXJsYXlNYW5hZ2VyPWZ1bmN0aW9uKEcpe3RoaXMu aW5pdChHKTt9O3ZhciBEPVlBSE9PLndpZGdldC5PdmVybGF5LEM9WUFIT08udXRp bC5FdmVudCxFPVlBSE9PLnV0aWwuRG9tLEI9WUFIT08udXRpbC5Db25maWcsRj1Z QUhPTy51dGlsLkN1c3RvbUV2ZW50LEE9WUFIT08ud2lkZ2V0Lk92ZXJsYXlNYW5h Z2VyO0EuQ1NTX0ZPQ1VTRUQ9ImZvY3VzZWQiO0EucHJvdG90eXBlPXtjb25zdHJ1 Y3RvcjpBLG92ZXJsYXlzOm51bGwsaW5pdERlZmF1bHRDb25maWc6ZnVuY3Rpb24o KXt0aGlzLmNmZy5hZGRQcm9wZXJ0eSgib3ZlcmxheXMiLHtzdXBwcmVzc0V2ZW50 OnRydWV9KTt0aGlzLmNmZy5hZGRQcm9wZXJ0eSgiZm9jdXNldmVudCIse3ZhbHVl OiJtb3VzZWRvd24ifSk7fSxpbml0OmZ1bmN0aW9uKEkpe3RoaXMuY2ZnPW5ldyBC KHRoaXMpO3RoaXMuaW5pdERlZmF1bHRDb25maWcoKTtpZihJKXt0aGlzLmNmZy5h cHBseUNvbmZpZyhJLHRydWUpO310aGlzLmNmZy5maXJlUXVldWUoKTt2YXIgSD1u dWxsO3RoaXMuZ2V0QWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuIEg7fTt0aGlzLmZv Y3VzPWZ1bmN0aW9uKEope3ZhciBLPXRoaXMuZmluZChKKTtpZihLKXtLLmZvY3Vz KCk7fX07dGhpcy5yZW1vdmU9ZnVuY3Rpb24oSyl7dmFyIE09dGhpcy5maW5kKEsp LEo7aWYoTSl7aWYoSD09TSl7SD1udWxsO312YXIgTD0oTS5lbGVtZW50PT09bnVs bCYmTS5jZmc9PT1udWxsKT90cnVlOmZhbHNlO2lmKCFMKXtKPUUuZ2V0U3R5bGUo TS5lbGVtZW50LCJ6SW5kZXgiKTtNLmNmZy5zZXRQcm9wZXJ0eSgiekluZGV4Iiwt MTAwMCx0cnVlKTt9dGhpcy5vdmVybGF5cy5zb3J0KHRoaXMuY29tcGFyZVpJbmRl eERlc2MpO3RoaXMub3ZlcmxheXM9dGhpcy5vdmVybGF5cy5zbGljZSgwLCh0aGlz Lm92ZXJsYXlzLmxlbmd0aC0xKSk7TS5oaWRlRXZlbnQudW5zdWJzY3JpYmUoTS5i bHVyKTtNLmRlc3Ryb3lFdmVudC51bnN1YnNjcmliZSh0aGlzLl9vbk92ZXJsYXlE ZXN0cm95LE0pO00uZm9jdXNFdmVudC51bnN1YnNjcmliZSh0aGlzLl9vbk92ZXJs YXlGb2N1c0hhbmRsZXIsTSk7TS5ibHVyRXZlbnQudW5zdWJzY3JpYmUodGhpcy5f b25PdmVybGF5Qmx1ckhhbmRsZXIsTSk7aWYoIUwpe0MucmVtb3ZlTGlzdGVuZXIo TS5lbGVtZW50LHRoaXMuY2ZnLmdldFByb3BlcnR5KCJmb2N1c2V2ZW50IiksdGhp cy5fb25PdmVybGF5RWxlbWVudEZvY3VzKTtNLmNmZy5zZXRQcm9wZXJ0eSgieklu ZGV4IixKLHRydWUpO00uY2ZnLnNldFByb3BlcnR5KCJtYW5hZ2VyIixudWxsKTt9 aWYoTS5mb2N1c0V2ZW50Ll9tYW5hZ2VkKXtNLmZvY3VzRXZlbnQ9bnVsbDt9aWYo TS5ibHVyRXZlbnQuX21hbmFnZWQpe00uYmx1ckV2ZW50PW51bGw7fWlmKE0uZm9j dXMuX21hbmFnZWQpe00uZm9jdXM9bnVsbDt9aWYoTS5ibHVyLl9tYW5hZ2VkKXtN LmJsdXI9bnVsbDt9fX07dGhpcy5ibHVyQWxsPWZ1bmN0aW9uKCl7dmFyIEs9dGhp cy5vdmVybGF5cy5sZW5ndGgsSjtpZihLPjApe0o9Sy0xO2Rve3RoaXMub3Zlcmxh eXNbSl0uYmx1cigpO313aGlsZShKLS0pO319O3RoaXMuX21hbmFnZUJsdXI9ZnVu Y3Rpb24oSil7dmFyIEs9ZmFsc2U7aWYoSD09Sil7RS5yZW1vdmVDbGFzcyhILmVs ZW1lbnQsQS5DU1NfRk9DVVNFRCk7SD1udWxsO0s9dHJ1ZTt9cmV0dXJuIEs7fTt0 aGlzLl9tYW5hZ2VGb2N1cz1mdW5jdGlvbihKKXt2YXIgSz1mYWxzZTtpZihIIT1K KXtpZihIKXtILmJsdXIoKTt9SD1KO3RoaXMuYnJpbmdUb1RvcChIKTtFLmFkZENs YXNzKEguZWxlbWVudCxBLkNTU19GT0NVU0VEKTtLPXRydWU7fXJldHVybiBLO307 dmFyIEc9dGhpcy5jZmcuZ2V0UHJvcGVydHkoIm92ZXJsYXlzIik7aWYoIXRoaXMu b3ZlcmxheXMpe3RoaXMub3ZlcmxheXM9W107fWlmKEcpe3RoaXMucmVnaXN0ZXIo Ryk7dGhpcy5vdmVybGF5cy5zb3J0KHRoaXMuY29tcGFyZVpJbmRleERlc2MpO319 LF9vbk92ZXJsYXlFbGVtZW50Rm9jdXM6ZnVuY3Rpb24oSSl7dmFyIEc9Qy5nZXRU YXJnZXQoSSksSD10aGlzLmNsb3NlO2lmKEgmJihHPT1IfHxFLmlzQW5jZXN0b3Io SCxHKSkpe3RoaXMuYmx1cigpO31lbHNle3RoaXMuZm9jdXMoKTt9fSxfb25PdmVy bGF5RGVzdHJveTpmdW5jdGlvbihILEcsSSl7dGhpcy5yZW1vdmUoSSk7fSxfb25P dmVybGF5Rm9jdXNIYW5kbGVyOmZ1bmN0aW9uKEgsRyxJKXt0aGlzLl9tYW5hZ2VG b2N1cyhJKTt9LF9vbk92ZXJsYXlCbHVySGFuZGxlcjpmdW5jdGlvbihILEcsSSl7 dGhpcy5fbWFuYWdlQmx1cihJKTt9LF9iaW5kRm9jdXM6ZnVuY3Rpb24oRyl7dmFy IEg9dGhpcztpZighRy5mb2N1c0V2ZW50KXtHLmZvY3VzRXZlbnQ9Ry5jcmVhdGVF dmVudCgiZm9jdXMiKTtHLmZvY3VzRXZlbnQuc2lnbmF0dXJlPUYuTElTVDtHLmZv Y3VzRXZlbnQuX21hbmFnZWQ9dHJ1ZTt9ZWxzZXtHLmZvY3VzRXZlbnQuc3Vic2Ny aWJlKEguX29uT3ZlcmxheUZvY3VzSGFuZGxlcixHLEgpO31pZighRy5mb2N1cyl7 Qy5vbihHLmVsZW1lbnQsSC5jZmcuZ2V0UHJvcGVydHkoImZvY3VzZXZlbnQiKSxI Ll9vbk92ZXJsYXlFbGVtZW50Rm9jdXMsbnVsbCxHKTtHLmZvY3VzPWZ1bmN0aW9u KCl7aWYoSC5fbWFuYWdlRm9jdXModGhpcykpe2lmKHRoaXMuY2ZnLmdldFByb3Bl cnR5KCJ2aXNpYmxlIikmJnRoaXMuZm9jdXNGaXJzdCl7dGhpcy5mb2N1c0ZpcnN0 KCk7fXRoaXMuZm9jdXNFdmVudC5maXJlKCk7fX07Ry5mb2N1cy5fbWFuYWdlZD10 cnVlO319LF9iaW5kQmx1cjpmdW5jdGlvbihHKXt2YXIgSD10aGlzO2lmKCFHLmJs dXJFdmVudCl7Ry5ibHVyRXZlbnQ9Ry5jcmVhdGVFdmVudCgiYmx1ciIpO0cuYmx1 ckV2ZW50LnNpZ25hdHVyZT1GLkxJU1Q7Ry5mb2N1c0V2ZW50Ll9tYW5hZ2VkPXRy dWU7fWVsc2V7Ry5ibHVyRXZlbnQuc3Vic2NyaWJlKEguX29uT3ZlcmxheUJsdXJI YW5kbGVyLEcsSCk7fWlmKCFHLmJsdXIpe0cuYmx1cj1mdW5jdGlvbigpe2lmKEgu X21hbmFnZUJsdXIodGhpcykpe3RoaXMuYmx1ckV2ZW50LmZpcmUoKTt9fTtHLmJs dXIuX21hbmFnZWQ9dHJ1ZTt9Ry5oaWRlRXZlbnQuc3Vic2NyaWJlKEcuYmx1cik7 fSxfYmluZERlc3Ryb3k6ZnVuY3Rpb24oRyl7dmFyIEg9dGhpcztHLmRlc3Ryb3lF dmVudC5zdWJzY3JpYmUoSC5fb25PdmVybGF5RGVzdHJveSxHLEgpO30sX3N5bmNa SW5kZXg6ZnVuY3Rpb24oRyl7dmFyIEg9RS5nZXRTdHlsZShHLmVsZW1lbnQsInpJ bmRleCIpO2lmKCFpc05hTihIKSl7Ry5jZmcuc2V0UHJvcGVydHkoInpJbmRleCIs cGFyc2VJbnQoSCwxMCkpO31lbHNle0cuY2ZnLnNldFByb3BlcnR5KCJ6SW5kZXgi LDApO319LHJlZ2lzdGVyOmZ1bmN0aW9uKEcpe3ZhciBKPWZhbHNlLEgsSTtpZihH IGluc3RhbmNlb2YgRCl7Ry5jZmcuYWRkUHJvcGVydHkoIm1hbmFnZXIiLHt2YWx1 ZTp0aGlzfSk7dGhpcy5fYmluZEZvY3VzKEcpO3RoaXMuX2JpbmRCbHVyKEcpO3Ro aXMuX2JpbmREZXN0cm95KEcpO3RoaXMuX3N5bmNaSW5kZXgoRyk7dGhpcy5vdmVy bGF5cy5wdXNoKEcpO3RoaXMuYnJpbmdUb1RvcChHKTtKPXRydWU7fWVsc2V7aWYo RyBpbnN0YW5jZW9mIEFycmF5KXtmb3IoSD0wLEk9Ry5sZW5ndGg7SDxJO0grKyl7 Sj10aGlzLnJlZ2lzdGVyKEdbSF0pfHxKO319fXJldHVybiBKO30sYnJpbmdUb1Rv cDpmdW5jdGlvbihNKXt2YXIgST10aGlzLmZpbmQoTSksTCxHLEo7aWYoSSl7Sj10 aGlzLm92ZXJsYXlzO0ouc29ydCh0aGlzLmNvbXBhcmVaSW5kZXhEZXNjKTtHPUpb MF07aWYoRyl7TD1FLmdldFN0eWxlKEcuZWxlbWVudCwiekluZGV4Iik7CmlmKCFp c05hTihMKSl7dmFyIEs9ZmFsc2U7aWYoRyE9PUkpe0s9dHJ1ZTt9ZWxzZXtpZihK Lmxlbmd0aD4xKXt2YXIgSD1FLmdldFN0eWxlKEpbMV0uZWxlbWVudCwiekluZGV4 Iik7aWYoIWlzTmFOKEgpJiYoTD09SCkpe0s9dHJ1ZTt9fX1pZihLKXtJLmNmZy5z ZXRQcm9wZXJ0eSgiemluZGV4IiwocGFyc2VJbnQoTCwxMCkrMikpO319Si5zb3J0 KHRoaXMuY29tcGFyZVpJbmRleERlc2MpO319fSxmaW5kOmZ1bmN0aW9uKEcpe3Zh ciBLPUcgaW5zdGFuY2VvZiBELEk9dGhpcy5vdmVybGF5cyxNPUkubGVuZ3RoLEo9 bnVsbCxMLEg7aWYoS3x8dHlwZW9mIEc9PSJzdHJpbmciKXtmb3IoSD1NLTE7SD49 MDtILS0pe0w9SVtIXTtpZigoSyYmKEw9PT1HKSl8fChMLmlkPT1HKSl7Sj1MO2Jy ZWFrO319fXJldHVybiBKO30sY29tcGFyZVpJbmRleERlc2M6ZnVuY3Rpb24oSixJ KXt2YXIgSD0oSi5jZmcpP0ouY2ZnLmdldFByb3BlcnR5KCJ6SW5kZXgiKTpudWxs LEc9KEkuY2ZnKT9JLmNmZy5nZXRQcm9wZXJ0eSgiekluZGV4Iik6bnVsbDtpZihI PT09bnVsbCYmRz09PW51bGwpe3JldHVybiAwO31lbHNle2lmKEg9PT1udWxsKXty ZXR1cm4gMTt9ZWxzZXtpZihHPT09bnVsbCl7cmV0dXJuIC0xO31lbHNle2lmKEg+ Ryl7cmV0dXJuIC0xO31lbHNle2lmKEg8Ryl7cmV0dXJuIDE7fWVsc2V7cmV0dXJu IDA7fX19fX19LHNob3dBbGw6ZnVuY3Rpb24oKXt2YXIgSD10aGlzLm92ZXJsYXlz LEk9SC5sZW5ndGgsRztmb3IoRz1JLTE7Rz49MDtHLS0pe0hbR10uc2hvdygpO319 LGhpZGVBbGw6ZnVuY3Rpb24oKXt2YXIgSD10aGlzLm92ZXJsYXlzLEk9SC5sZW5n dGgsRztmb3IoRz1JLTE7Rz49MDtHLS0pe0hbR10uaGlkZSgpO319LHRvU3RyaW5n OmZ1bmN0aW9uKCl7cmV0dXJuIk92ZXJsYXlNYW5hZ2VyIjt9fTt9KCkpOyhmdW5j dGlvbigpe1lBSE9PLndpZGdldC5Ub29sdGlwPWZ1bmN0aW9uKFAsTyl7WUFIT08u d2lkZ2V0LlRvb2x0aXAuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMs UCxPKTt9O3ZhciBFPVlBSE9PLmxhbmcsTj1ZQUhPTy51dGlsLkV2ZW50LE09WUFI T08udXRpbC5DdXN0b21FdmVudCxDPVlBSE9PLnV0aWwuRG9tLEo9WUFIT08ud2lk Z2V0LlRvb2x0aXAsSD1ZQUhPTy5lbnYudWEsRz0oSC5pZSYmKEguaWU8PTZ8fGRv Y3VtZW50LmNvbXBhdE1vZGU9PSJCYWNrQ29tcGF0IikpLEYsST17IlBSRVZFTlRf T1ZFUkxBUCI6e2tleToicHJldmVudG92ZXJsYXAiLHZhbHVlOnRydWUsdmFsaWRh dG9yOkUuaXNCb29sZWFuLHN1cGVyY2VkZXM6WyJ4IiwieSIsInh5Il19LCJTSE9X X0RFTEFZIjp7a2V5OiJzaG93ZGVsYXkiLHZhbHVlOjIwMCx2YWxpZGF0b3I6RS5p c051bWJlcn0sIkFVVE9fRElTTUlTU19ERUxBWSI6e2tleToiYXV0b2Rpc21pc3Nk ZWxheSIsdmFsdWU6NTAwMCx2YWxpZGF0b3I6RS5pc051bWJlcn0sIkhJREVfREVM QVkiOntrZXk6ImhpZGVkZWxheSIsdmFsdWU6MjUwLHZhbGlkYXRvcjpFLmlzTnVt YmVyfSwiVEVYVCI6e2tleToidGV4dCIsc3VwcHJlc3NFdmVudDp0cnVlfSwiQ09O VEFJTkVSIjp7a2V5OiJjb250YWluZXIifSwiRElTQUJMRUQiOntrZXk6ImRpc2Fi bGVkIix2YWx1ZTpmYWxzZSxzdXBwcmVzc0V2ZW50OnRydWV9fSxBPXsiQ09OVEVY VF9NT1VTRV9PVkVSIjoiY29udGV4dE1vdXNlT3ZlciIsIkNPTlRFWFRfTU9VU0Vf T1VUIjoiY29udGV4dE1vdXNlT3V0IiwiQ09OVEVYVF9UUklHR0VSIjoiY29udGV4 dFRyaWdnZXIifTtKLkNTU19UT09MVElQPSJ5dWktdHQiO2Z1bmN0aW9uIEsoUSxP KXt2YXIgUD10aGlzLmNmZyxSPVAuZ2V0UHJvcGVydHkoIndpZHRoIik7aWYoUj09 Tyl7UC5zZXRQcm9wZXJ0eSgid2lkdGgiLFEpO319ZnVuY3Rpb24gRChQLE8pe2lm KCJfb3JpZ2luYWxXaWR0aCIgaW4gdGhpcyl7Sy5jYWxsKHRoaXMsdGhpcy5fb3Jp Z2luYWxXaWR0aCx0aGlzLl9mb3JjZWRXaWR0aCk7fXZhciBRPWRvY3VtZW50LmJv ZHksVT10aGlzLmNmZyxUPVUuZ2V0UHJvcGVydHkoIndpZHRoIiksUixTO2lmKCgh VHx8VD09ImF1dG8iKSYmKFUuZ2V0UHJvcGVydHkoImNvbnRhaW5lciIpIT1RfHxV LmdldFByb3BlcnR5KCJ4Iik+PUMuZ2V0Vmlld3BvcnRXaWR0aCgpfHxVLmdldFBy b3BlcnR5KCJ5Iik+PUMuZ2V0Vmlld3BvcnRIZWlnaHQoKSkpe1M9dGhpcy5lbGVt ZW50LmNsb25lTm9kZSh0cnVlKTtTLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7 Uy5zdHlsZS50b3A9IjBweCI7Uy5zdHlsZS5sZWZ0PSIwcHgiO1EuYXBwZW5kQ2hp bGQoUyk7Uj0oUy5vZmZzZXRXaWR0aCsicHgiKTtRLnJlbW92ZUNoaWxkKFMpO1M9 bnVsbDtVLnNldFByb3BlcnR5KCJ3aWR0aCIsUik7VS5yZWZpcmVFdmVudCgieHki KTt0aGlzLl9vcmlnaW5hbFdpZHRoPVR8fCIiO3RoaXMuX2ZvcmNlZFdpZHRoPVI7 fX1mdW5jdGlvbiBCKFAsTyxRKXt0aGlzLnJlbmRlcihRKTt9ZnVuY3Rpb24gTCgp e04ub25ET01SZWFkeShCLHRoaXMuY2ZnLmdldFByb3BlcnR5KCJjb250YWluZXIi KSx0aGlzKTt9WUFIT08uZXh0ZW5kKEosWUFIT08ud2lkZ2V0Lk92ZXJsYXkse2lu aXQ6ZnVuY3Rpb24oUCxPKXtKLnN1cGVyY2xhc3MuaW5pdC5jYWxsKHRoaXMsUCk7 dGhpcy5iZWZvcmVJbml0RXZlbnQuZmlyZShKKTtDLmFkZENsYXNzKHRoaXMuZWxl bWVudCxKLkNTU19UT09MVElQKTtpZihPKXt0aGlzLmNmZy5hcHBseUNvbmZpZyhP LHRydWUpO310aGlzLmNmZy5xdWV1ZVByb3BlcnR5KCJ2aXNpYmxlIixmYWxzZSk7 dGhpcy5jZmcucXVldWVQcm9wZXJ0eSgiY29uc3RyYWludG92aWV3cG9ydCIsdHJ1 ZSk7dGhpcy5zZXRCb2R5KCIiKTt0aGlzLnN1YnNjcmliZSgiY2hhbmdlQ29udGVu dCIsRCk7dGhpcy5zdWJzY3JpYmUoImluaXQiLEwpO3RoaXMuc3Vic2NyaWJlKCJy ZW5kZXIiLHRoaXMub25SZW5kZXIpO3RoaXMuaW5pdEV2ZW50LmZpcmUoSik7fSxp bml0RXZlbnRzOmZ1bmN0aW9uKCl7Si5zdXBlcmNsYXNzLmluaXRFdmVudHMuY2Fs bCh0aGlzKTt2YXIgTz1NLkxJU1Q7dGhpcy5jb250ZXh0TW91c2VPdmVyRXZlbnQ9 dGhpcy5jcmVhdGVFdmVudChBLkNPTlRFWFRfTU9VU0VfT1ZFUik7dGhpcy5jb250 ZXh0TW91c2VPdmVyRXZlbnQuc2lnbmF0dXJlPU87dGhpcy5jb250ZXh0TW91c2VP dXRFdmVudD10aGlzLmNyZWF0ZUV2ZW50KEEuQ09OVEVYVF9NT1VTRV9PVVQpO3Ro aXMuY29udGV4dE1vdXNlT3V0RXZlbnQuc2lnbmF0dXJlPU87dGhpcy5jb250ZXh0 VHJpZ2dlckV2ZW50PXRoaXMuY3JlYXRlRXZlbnQoQS5DT05URVhUX1RSSUdHRVIp O3RoaXMuY29udGV4dFRyaWdnZXJFdmVudC5zaWduYXR1cmU9Tzt9LGluaXREZWZh dWx0Q29uZmlnOmZ1bmN0aW9uKCl7Si5zdXBlcmNsYXNzLmluaXREZWZhdWx0Q29u ZmlnLmNhbGwodGhpcyk7dGhpcy5jZmcuYWRkUHJvcGVydHkoSS5QUkVWRU5UX09W RVJMQVAua2V5LHt2YWx1ZTpJLlBSRVZFTlRfT1ZFUkxBUC52YWx1ZSx2YWxpZGF0 b3I6SS5QUkVWRU5UX09WRVJMQVAudmFsaWRhdG9yLHN1cGVyY2VkZXM6SS5QUkVW RU5UX09WRVJMQVAuc3VwZXJjZWRlc30pO3RoaXMuY2ZnLmFkZFByb3BlcnR5KEku U0hPV19ERUxBWS5rZXkse2hhbmRsZXI6dGhpcy5jb25maWdTaG93RGVsYXksdmFs dWU6MjAwLHZhbGlkYXRvcjpJLlNIT1dfREVMQVkudmFsaWRhdG9yfSk7dGhpcy5j ZmcuYWRkUHJvcGVydHkoSS5BVVRPX0RJU01JU1NfREVMQVkua2V5LHtoYW5kbGVy OnRoaXMuY29uZmlnQXV0b0Rpc21pc3NEZWxheSx2YWx1ZTpJLkFVVE9fRElTTUlT U19ERUxBWS52YWx1ZSx2YWxpZGF0b3I6SS5BVVRPX0RJU01JU1NfREVMQVkudmFs aWRhdG9yfSk7dGhpcy5jZmcuYWRkUHJvcGVydHkoSS5ISURFX0RFTEFZLmtleSx7 aGFuZGxlcjp0aGlzLmNvbmZpZ0hpZGVEZWxheSx2YWx1ZTpJLkhJREVfREVMQVku dmFsdWUsdmFsaWRhdG9yOkkuSElERV9ERUxBWS52YWxpZGF0b3J9KTt0aGlzLmNm Zy5hZGRQcm9wZXJ0eShJLlRFWFQua2V5LHtoYW5kbGVyOnRoaXMuY29uZmlnVGV4 dCxzdXBwcmVzc0V2ZW50OkkuVEVYVC5zdXBwcmVzc0V2ZW50fSk7dGhpcy5jZmcu YWRkUHJvcGVydHkoSS5DT05UQUlORVIua2V5LHtoYW5kbGVyOnRoaXMuY29uZmln Q29udGFpbmVyLHZhbHVlOmRvY3VtZW50LmJvZHl9KTt0aGlzLmNmZy5hZGRQcm9w ZXJ0eShJLkRJU0FCTEVELmtleSx7aGFuZGxlcjp0aGlzLmNvbmZpZ0NvbnRhaW5l cix2YWx1ZTpJLkRJU0FCTEVELnZhbHVlLHN1cHJlc3NFdmVudDpJLkRJU0FCTEVE LnN1cHByZXNzRXZlbnR9KTt9LGNvbmZpZ1RleHQ6ZnVuY3Rpb24oUCxPLFEpe3Zh ciBSPU9bMF07aWYoUil7dGhpcy5zZXRCb2R5KFIpO319LGNvbmZpZ0NvbnRhaW5l cjpmdW5jdGlvbihRLFAsUil7dmFyIE89UFswXTtpZih0eXBlb2YgTz09InN0cmlu ZyIpe3RoaXMuY2ZnLnNldFByb3BlcnR5KCJjb250YWluZXIiLGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKE8pLHRydWUpO319LF9yZW1vdmVFdmVudExpc3RlbmVyczpm dW5jdGlvbigpe3ZhciBSPXRoaXMuX2NvbnRleHQsTyxRLFA7aWYoUil7Tz1SLmxl bmd0aDtpZihPPjApe1A9Ty0xO2Rve1E9UltQXTtOLnJlbW92ZUxpc3RlbmVyKFEs Im1vdXNlb3ZlciIsdGhpcy5vbkNvbnRleHRNb3VzZU92ZXIpO04ucmVtb3ZlTGlz dGVuZXIoUSwibW91c2Vtb3ZlIix0aGlzLm9uQ29udGV4dE1vdXNlTW92ZSk7Ti5y ZW1vdmVMaXN0ZW5lcihRLCJtb3VzZW91dCIsdGhpcy5vbkNvbnRleHRNb3VzZU91 dCk7fXdoaWxlKFAtLSk7fX19LGNvbmZpZ0NvbnRleHQ6ZnVuY3Rpb24oVCxQLFUp e3ZhciBTPVBbMF0sVixPLFIsUTtpZihTKXtpZighKFMgaW5zdGFuY2VvZiBBcnJh eSkpe2lmKHR5cGVvZiBTPT0ic3RyaW5nIil7dGhpcy5jZmcuc2V0UHJvcGVydHko ImNvbnRleHQiLFtkb2N1bWVudC5nZXRFbGVtZW50QnlJZChTKV0sdHJ1ZSk7fWVs c2V7dGhpcy5jZmcuc2V0UHJvcGVydHkoImNvbnRleHQiLFtTXSx0cnVlKTt9Uz10 aGlzLmNmZy5nZXRQcm9wZXJ0eSgiY29udGV4dCIpO310aGlzLl9yZW1vdmVFdmVu dExpc3RlbmVycygpO3RoaXMuX2NvbnRleHQ9UztWPXRoaXMuX2NvbnRleHQ7aWYo Vil7Tz1WLmxlbmd0aDtpZihPPjApe1E9Ty0xO2Rve1I9VltRXTtOLm9uKFIsIm1v dXNlb3ZlciIsdGhpcy5vbkNvbnRleHRNb3VzZU92ZXIsdGhpcyk7Ti5vbihSLCJt b3VzZW1vdmUiLHRoaXMub25Db250ZXh0TW91c2VNb3ZlLHRoaXMpO04ub24oUiwi bW91c2VvdXQiLHRoaXMub25Db250ZXh0TW91c2VPdXQsdGhpcyk7fXdoaWxlKFEt LSk7fX19fSxvbkNvbnRleHRNb3VzZU1vdmU6ZnVuY3Rpb24oUCxPKXtPLnBhZ2VY PU4uZ2V0UGFnZVgoUCk7Ty5wYWdlWT1OLmdldFBhZ2VZKFApO30sb25Db250ZXh0 TW91c2VPdmVyOmZ1bmN0aW9uKFEsUCl7dmFyIE89dGhpcztpZihPLnRpdGxlKXtQ Ll90ZW1wVGl0bGU9Ty50aXRsZTtPLnRpdGxlPSIiO31pZihQLmZpcmVFdmVudCgi Y29udGV4dE1vdXNlT3ZlciIsTyxRKSE9PWZhbHNlJiYhUC5jZmcuZ2V0UHJvcGVy dHkoImRpc2FibGVkIikpe2lmKFAuaGlkZVByb2NJZCl7Y2xlYXJUaW1lb3V0KFAu aGlkZVByb2NJZCk7UC5oaWRlUHJvY0lkPW51bGw7fU4ub24oTywibW91c2Vtb3Zl IixQLm9uQ29udGV4dE1vdXNlTW92ZSxQKTtQLnNob3dQcm9jSWQ9UC5kb1Nob3co USxPKTt9fSxvbkNvbnRleHRNb3VzZU91dDpmdW5jdGlvbihRLFApe3ZhciBPPXRo aXM7aWYoUC5fdGVtcFRpdGxlKXtPLnRpdGxlPVAuX3RlbXBUaXRsZTtQLl90ZW1w VGl0bGU9bnVsbDt9aWYoUC5zaG93UHJvY0lkKXtjbGVhclRpbWVvdXQoUC5zaG93 UHJvY0lkKTtQLnNob3dQcm9jSWQ9bnVsbDt9aWYoUC5oaWRlUHJvY0lkKXtjbGVh clRpbWVvdXQoUC5oaWRlUHJvY0lkKTtQLmhpZGVQcm9jSWQ9bnVsbDt9UC5maXJl RXZlbnQoImNvbnRleHRNb3VzZU91dCIsTyxRKTtQLmhpZGVQcm9jSWQ9c2V0VGlt ZW91dChmdW5jdGlvbigpe1AuaGlkZSgpO30sUC5jZmcuZ2V0UHJvcGVydHkoImhp ZGVkZWxheSIpKTt9LGRvU2hvdzpmdW5jdGlvbihRLE8pe3ZhciBSPTI1LFA9dGhp czsKaWYoSC5vcGVyYSYmTy50YWdOYW1lJiZPLnRhZ05hbWUudG9VcHBlckNhc2Uo KT09IkEiKXtSKz0xMjt9cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIg Uz1QLmNmZy5nZXRQcm9wZXJ0eSgidGV4dCIpO2lmKFAuX3RlbXBUaXRsZSYmKFM9 PT0iInx8WUFIT08ubGFuZy5pc1VuZGVmaW5lZChTKXx8WUFIT08ubGFuZy5pc051 bGwoUykpKXtQLnNldEJvZHkoUC5fdGVtcFRpdGxlKTt9ZWxzZXtQLmNmZy5yZWZp cmVFdmVudCgidGV4dCIpO31QLm1vdmVUbyhQLnBhZ2VYLFAucGFnZVkrUik7aWYo UC5jZmcuZ2V0UHJvcGVydHkoInByZXZlbnRvdmVybGFwIikpe1AucHJldmVudE92 ZXJsYXAoUC5wYWdlWCxQLnBhZ2VZKTt9Ti5yZW1vdmVMaXN0ZW5lcihPLCJtb3Vz ZW1vdmUiLFAub25Db250ZXh0TW91c2VNb3ZlKTtQLmNvbnRleHRUcmlnZ2VyRXZl bnQuZmlyZShPKTtQLnNob3coKTtQLmhpZGVQcm9jSWQ9UC5kb0hpZGUoKTt9LHRo aXMuY2ZnLmdldFByb3BlcnR5KCJzaG93ZGVsYXkiKSk7fSxkb0hpZGU6ZnVuY3Rp b24oKXt2YXIgTz10aGlzO3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Ty5o aWRlKCk7fSx0aGlzLmNmZy5nZXRQcm9wZXJ0eSgiYXV0b2Rpc21pc3NkZWxheSIp KTt9LHByZXZlbnRPdmVybGFwOmZ1bmN0aW9uKFMsUil7dmFyIE89dGhpcy5lbGVt ZW50Lm9mZnNldEhlaWdodCxRPW5ldyBZQUhPTy51dGlsLlBvaW50KFMsUiksUD1D LmdldFJlZ2lvbih0aGlzLmVsZW1lbnQpO1AudG9wLT01O1AubGVmdC09NTtQLnJp Z2h0Kz01O1AuYm90dG9tKz01O2lmKFAuY29udGFpbnMoUSkpe3RoaXMuY2ZnLnNl dFByb3BlcnR5KCJ5IiwoUi1PLTUpKTt9fSxvblJlbmRlcjpmdW5jdGlvbihTLFIp e2Z1bmN0aW9uIFQoKXt2YXIgVz10aGlzLmVsZW1lbnQsVj10aGlzLnVuZGVybGF5 O2lmKFYpe1Yuc3R5bGUud2lkdGg9KFcub2Zmc2V0V2lkdGgrNikrInB4IjtWLnN0 eWxlLmhlaWdodD0oVy5vZmZzZXRIZWlnaHQrMSkrInB4Ijt9fWZ1bmN0aW9uIFAo KXtDLmFkZENsYXNzKHRoaXMudW5kZXJsYXksInl1aS10dC1zaGFkb3ctdmlzaWJs ZSIpO2lmKEguaWUpe3RoaXMuZm9yY2VVbmRlcmxheVJlZHJhdygpO319ZnVuY3Rp b24gTygpe0MucmVtb3ZlQ2xhc3ModGhpcy51bmRlcmxheSwieXVpLXR0LXNoYWRv dy12aXNpYmxlIik7fWZ1bmN0aW9uIFUoKXt2YXIgWD10aGlzLnVuZGVybGF5LFcs VixaLFk7aWYoIVgpe1c9dGhpcy5lbGVtZW50O1Y9WUFIT08ud2lkZ2V0Lk1vZHVs ZTtaPUguaWU7WT10aGlzO2lmKCFGKXtGPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo ImRpdiIpO0YuY2xhc3NOYW1lPSJ5dWktdHQtc2hhZG93Ijt9WD1GLmNsb25lTm9k ZShmYWxzZSk7Vy5hcHBlbmRDaGlsZChYKTt0aGlzLnVuZGVybGF5PVg7dGhpcy5f c2hhZG93PXRoaXMudW5kZXJsYXk7UC5jYWxsKHRoaXMpO3RoaXMuc3Vic2NyaWJl KCJiZWZvcmVTaG93IixQKTt0aGlzLnN1YnNjcmliZSgiaGlkZSIsTyk7aWYoRyl7 d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtULmNhbGwoWSk7fSwwKTt0aGlz LmNmZy5zdWJzY3JpYmVUb0NvbmZpZ0V2ZW50KCJ3aWR0aCIsVCk7dGhpcy5jZmcu c3Vic2NyaWJlVG9Db25maWdFdmVudCgiaGVpZ2h0IixUKTt0aGlzLnN1YnNjcmli ZSgiY2hhbmdlQ29udGVudCIsVCk7Vi50ZXh0UmVzaXplRXZlbnQuc3Vic2NyaWJl KFQsdGhpcyx0cnVlKTt0aGlzLnN1YnNjcmliZSgiZGVzdHJveSIsZnVuY3Rpb24o KXtWLnRleHRSZXNpemVFdmVudC51bnN1YnNjcmliZShULHRoaXMpO30pO319fWZ1 bmN0aW9uIFEoKXtVLmNhbGwodGhpcyk7dGhpcy51bnN1YnNjcmliZSgiYmVmb3Jl U2hvdyIsUSk7fWlmKHRoaXMuY2ZnLmdldFByb3BlcnR5KCJ2aXNpYmxlIikpe1Uu Y2FsbCh0aGlzKTt9ZWxzZXt0aGlzLnN1YnNjcmliZSgiYmVmb3JlU2hvdyIsUSk7 fX0sZm9yY2VVbmRlcmxheVJlZHJhdzpmdW5jdGlvbigpe3ZhciBPPXRoaXM7Qy5h ZGRDbGFzcyhPLnVuZGVybGF5LCJ5dWktZm9yY2UtcmVkcmF3Iik7c2V0VGltZW91 dChmdW5jdGlvbigpe0MucmVtb3ZlQ2xhc3MoTy51bmRlcmxheSwieXVpLWZvcmNl LXJlZHJhdyIpO30sMCk7fSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5fcmVtb3Zl RXZlbnRMaXN0ZW5lcnMoKTtKLnN1cGVyY2xhc3MuZGVzdHJveS5jYWxsKHRoaXMp O30sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iVG9vbHRpcCAiK3RoaXMuaWQ7 fX0pO30oKSk7KGZ1bmN0aW9uKCl7WUFIT08ud2lkZ2V0LlBhbmVsPWZ1bmN0aW9u KFYsVSl7WUFIT08ud2lkZ2V0LlBhbmVsLnN1cGVyY2xhc3MuY29uc3RydWN0b3Iu Y2FsbCh0aGlzLFYsVSk7fTt2YXIgUz1udWxsO3ZhciBFPVlBSE9PLmxhbmcsRj1Z QUhPTy51dGlsLEE9Ri5Eb20sVD1GLkV2ZW50LE09Ri5DdXN0b21FdmVudCxLPVlB SE9PLnV0aWwuS2V5TGlzdGVuZXIsST1GLkNvbmZpZyxIPVlBSE9PLndpZGdldC5P dmVybGF5LE89WUFIT08ud2lkZ2V0LlBhbmVsLEw9WUFIT08uZW52LnVhLFA9KEwu aWUmJihMLmllPD02fHxkb2N1bWVudC5jb21wYXRNb2RlPT0iQmFja0NvbXBhdCIp KSxHLFEsQyxEPXsiU0hPV19NQVNLIjoic2hvd01hc2siLCJISURFX01BU0siOiJo aWRlTWFzayIsIkRSQUciOiJkcmFnIn0sTj17IkNMT1NFIjp7a2V5OiJjbG9zZSIs dmFsdWU6dHJ1ZSx2YWxpZGF0b3I6RS5pc0Jvb2xlYW4sc3VwZXJjZWRlczpbInZp c2libGUiXX0sIkRSQUdHQUJMRSI6e2tleToiZHJhZ2dhYmxlIix2YWx1ZTooRi5E RD90cnVlOmZhbHNlKSx2YWxpZGF0b3I6RS5pc0Jvb2xlYW4sc3VwZXJjZWRlczpb InZpc2libGUiXX0sIkRSQUdfT05MWSI6e2tleToiZHJhZ29ubHkiLHZhbHVlOmZh bHNlLHZhbGlkYXRvcjpFLmlzQm9vbGVhbixzdXBlcmNlZGVzOlsiZHJhZ2dhYmxl Il19LCJVTkRFUkxBWSI6e2tleToidW5kZXJsYXkiLHZhbHVlOiJzaGFkb3ciLHN1 cGVyY2VkZXM6WyJ2aXNpYmxlIl19LCJNT0RBTCI6e2tleToibW9kYWwiLHZhbHVl OmZhbHNlLHZhbGlkYXRvcjpFLmlzQm9vbGVhbixzdXBlcmNlZGVzOlsidmlzaWJs ZSIsInppbmRleCJdfSwiS0VZX0xJU1RFTkVSUyI6e2tleToia2V5bGlzdGVuZXJz IixzdXBwcmVzc0V2ZW50OnRydWUsc3VwZXJjZWRlczpbInZpc2libGUiXX0sIlNU UklOR1MiOntrZXk6InN0cmluZ3MiLHN1cGVyY2VkZXM6WyJjbG9zZSJdLHZhbGlk YXRvcjpFLmlzT2JqZWN0LHZhbHVlOntjbG9zZToiQ2xvc2UifX19O08uQ1NTX1BB TkVMPSJ5dWktcGFuZWwiO08uQ1NTX1BBTkVMX0NPTlRBSU5FUj0ieXVpLXBhbmVs LWNvbnRhaW5lciI7Ty5GT0NVU0FCTEU9WyJhIiwiYnV0dG9uIiwic2VsZWN0Iiwi dGV4dGFyZWEiLCJpbnB1dCIsImlmcmFtZSJdO2Z1bmN0aW9uIEooVixVKXtpZigh dGhpcy5oZWFkZXImJnRoaXMuY2ZnLmdldFByb3BlcnR5KCJkcmFnZ2FibGUiKSl7 dGhpcy5zZXRIZWFkZXIoIiYjMTYwOyIpO319ZnVuY3Rpb24gUihWLFUsVyl7dmFy IFo9V1swXSxYPVdbMV0sWT10aGlzLmNmZyxhPVkuZ2V0UHJvcGVydHkoIndpZHRo Iik7aWYoYT09WCl7WS5zZXRQcm9wZXJ0eSgid2lkdGgiLFopO310aGlzLnVuc3Vi c2NyaWJlKCJoaWRlIixSLFcpO31mdW5jdGlvbiBCKFYsVSl7dmFyIFksWCxXO2lm KFApe1k9dGhpcy5jZmc7WD1ZLmdldFByb3BlcnR5KCJ3aWR0aCIpO2lmKCFYfHxY PT0iYXV0byIpe1c9KHRoaXMuZWxlbWVudC5vZmZzZXRXaWR0aCsicHgiKTtZLnNl dFByb3BlcnR5KCJ3aWR0aCIsVyk7dGhpcy5zdWJzY3JpYmUoImhpZGUiLFIsWyhY fHwiIiksV10pO319fVlBSE9PLmV4dGVuZChPLEgse2luaXQ6ZnVuY3Rpb24oVixV KXtPLnN1cGVyY2xhc3MuaW5pdC5jYWxsKHRoaXMsVik7dGhpcy5iZWZvcmVJbml0 RXZlbnQuZmlyZShPKTtBLmFkZENsYXNzKHRoaXMuZWxlbWVudCxPLkNTU19QQU5F TCk7dGhpcy5idWlsZFdyYXBwZXIoKTtpZihVKXt0aGlzLmNmZy5hcHBseUNvbmZp ZyhVLHRydWUpO310aGlzLnN1YnNjcmliZSgic2hvd01hc2siLHRoaXMuX2FkZEZv Y3VzSGFuZGxlcnMpO3RoaXMuc3Vic2NyaWJlKCJoaWRlTWFzayIsdGhpcy5fcmVt b3ZlRm9jdXNIYW5kbGVycyk7dGhpcy5zdWJzY3JpYmUoImJlZm9yZVJlbmRlciIs Sik7dGhpcy5zdWJzY3JpYmUoInJlbmRlciIsZnVuY3Rpb24oKXt0aGlzLnNldEZp cnN0TGFzdEZvY3VzYWJsZSgpO3RoaXMuc3Vic2NyaWJlKCJjaGFuZ2VDb250ZW50 Iix0aGlzLnNldEZpcnN0TGFzdEZvY3VzYWJsZSk7fSk7dGhpcy5zdWJzY3JpYmUo InNob3ciLHRoaXMuZm9jdXNGaXJzdCk7dGhpcy5pbml0RXZlbnQuZmlyZShPKTt9 LF9vbkVsZW1lbnRGb2N1czpmdW5jdGlvbihaKXtpZihTPT09dGhpcyl7dmFyIFk9 VC5nZXRUYXJnZXQoWiksWD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsVj0oWSE9 PVgmJlkhPT13aW5kb3cpO2lmKFYmJlkhPT10aGlzLmVsZW1lbnQmJlkhPT10aGlz Lm1hc2smJiFBLmlzQW5jZXN0b3IodGhpcy5lbGVtZW50LFkpKXt0cnl7aWYodGhp cy5maXJzdEVsZW1lbnQpe3RoaXMuZmlyc3RFbGVtZW50LmZvY3VzKCk7fWVsc2V7 aWYodGhpcy5fbW9kYWxGb2N1cyl7dGhpcy5fbW9kYWxGb2N1cy5mb2N1cygpO31l bHNle3RoaXMuaW5uZXJFbGVtZW50LmZvY3VzKCk7fX19Y2F0Y2goVyl7dHJ5e2lm KFYmJlkhPT1kb2N1bWVudC5ib2R5KXtZLmJsdXIoKTt9fWNhdGNoKFUpe319fX19 LF9hZGRGb2N1c0hhbmRsZXJzOmZ1bmN0aW9uKFYsVSl7aWYoIXRoaXMuZmlyc3RF bGVtZW50KXtpZihMLndlYmtpdHx8TC5vcGVyYSl7aWYoIXRoaXMuX21vZGFsRm9j dXMpe3RoaXMuX2NyZWF0ZUhpZGRlbkZvY3VzRWxlbWVudCgpO319ZWxzZXt0aGlz LmlubmVyRWxlbWVudC50YWJJbmRleD0wO319dGhpcy5zZXRUYWJMb29wKHRoaXMu Zmlyc3RFbGVtZW50LHRoaXMubGFzdEVsZW1lbnQpO1Qub25Gb2N1cyhkb2N1bWVu dC5kb2N1bWVudEVsZW1lbnQsdGhpcy5fb25FbGVtZW50Rm9jdXMsdGhpcyx0cnVl KTtTPXRoaXM7fSxfY3JlYXRlSGlkZGVuRm9jdXNFbGVtZW50OmZ1bmN0aW9uKCl7 dmFyIFU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7VS5zdHlsZS5o ZWlnaHQ9IjFweCI7VS5zdHlsZS53aWR0aD0iMXB4IjtVLnN0eWxlLnBvc2l0aW9u PSJhYnNvbHV0ZSI7VS5zdHlsZS5sZWZ0PSItMTAwMDBlbSI7VS5zdHlsZS5vcGFj aXR5PTA7VS50YWJJbmRleD0tMTt0aGlzLmlubmVyRWxlbWVudC5hcHBlbmRDaGls ZChVKTt0aGlzLl9tb2RhbEZvY3VzPVU7fSxfcmVtb3ZlRm9jdXNIYW5kbGVyczpm dW5jdGlvbihWLFUpe1QucmVtb3ZlRm9jdXNMaXN0ZW5lcihkb2N1bWVudC5kb2N1 bWVudEVsZW1lbnQsdGhpcy5fb25FbGVtZW50Rm9jdXMsdGhpcyk7aWYoUz09dGhp cyl7Uz1udWxsO319LGZvY3VzRmlyc3Q6ZnVuY3Rpb24oVyxVLFkpe3ZhciBWPXRo aXMuZmlyc3RFbGVtZW50O2lmKFUmJlVbMV0pe1Quc3RvcEV2ZW50KFVbMV0pO31p ZihWKXt0cnl7Vi5mb2N1cygpO31jYXRjaChYKXt9fX0sZm9jdXNMYXN0OmZ1bmN0 aW9uKFcsVSxZKXt2YXIgVj10aGlzLmxhc3RFbGVtZW50O2lmKFUmJlVbMV0pe1Qu c3RvcEV2ZW50KFVbMV0pO31pZihWKXt0cnl7Vi5mb2N1cygpO31jYXRjaChYKXt9 fX0sc2V0VGFiTG9vcDpmdW5jdGlvbihYLFope3ZhciBWPXRoaXMucHJldmVudEJh Y2tUYWIsVz10aGlzLnByZXZlbnRUYWJPdXQsVT10aGlzLnNob3dFdmVudCxZPXRo aXMuaGlkZUV2ZW50O2lmKFYpe1YuZGlzYWJsZSgpO1UudW5zdWJzY3JpYmUoVi5l bmFibGUsVik7WS51bnN1YnNjcmliZShWLmRpc2FibGUsVik7Vj10aGlzLnByZXZl bnRCYWNrVGFiPW51bGw7fWlmKFcpe1cuZGlzYWJsZSgpO1UudW5zdWJzY3JpYmUo Vy5lbmFibGUsVyk7WS51bnN1YnNjcmliZShXLmRpc2FibGUsVyk7Vz10aGlzLnBy ZXZlbnRUYWJPdXQ9bnVsbDt9aWYoWCl7dGhpcy5wcmV2ZW50QmFja1RhYj1uZXcg SyhYLHtzaGlmdDp0cnVlLGtleXM6OX0se2ZuOnRoaXMuZm9jdXNMYXN0LHNjb3Bl OnRoaXMsY29ycmVjdFNjb3BlOnRydWV9KTtWPXRoaXMucHJldmVudEJhY2tUYWI7 VS5zdWJzY3JpYmUoVi5lbmFibGUsVix0cnVlKTsKWS5zdWJzY3JpYmUoVi5kaXNh YmxlLFYsdHJ1ZSk7fWlmKFope3RoaXMucHJldmVudFRhYk91dD1uZXcgSyhaLHtz aGlmdDpmYWxzZSxrZXlzOjl9LHtmbjp0aGlzLmZvY3VzRmlyc3Qsc2NvcGU6dGhp cyxjb3JyZWN0U2NvcGU6dHJ1ZX0pO1c9dGhpcy5wcmV2ZW50VGFiT3V0O1Uuc3Vi c2NyaWJlKFcuZW5hYmxlLFcsdHJ1ZSk7WS5zdWJzY3JpYmUoVy5kaXNhYmxlLFcs dHJ1ZSk7fX0sZ2V0Rm9jdXNhYmxlRWxlbWVudHM6ZnVuY3Rpb24oVSl7VT1VfHx0 aGlzLmlubmVyRWxlbWVudDt2YXIgWD17fTtmb3IodmFyIFc9MDtXPE8uRk9DVVNB QkxFLmxlbmd0aDtXKyspe1hbTy5GT0NVU0FCTEVbV11dPXRydWU7fWZ1bmN0aW9u IFYoWSl7aWYoWS5mb2N1cyYmWS50eXBlIT09ImhpZGRlbiImJiFZLmRpc2FibGVk JiZYW1kudGFnTmFtZS50b0xvd2VyQ2FzZSgpXSl7cmV0dXJuIHRydWU7fXJldHVy biBmYWxzZTt9cmV0dXJuIEEuZ2V0RWxlbWVudHNCeShWLG51bGwsVSk7fSxzZXRG aXJzdExhc3RGb2N1c2FibGU6ZnVuY3Rpb24oKXt0aGlzLmZpcnN0RWxlbWVudD1u dWxsO3RoaXMubGFzdEVsZW1lbnQ9bnVsbDt2YXIgVT10aGlzLmdldEZvY3VzYWJs ZUVsZW1lbnRzKCk7dGhpcy5mb2N1c2FibGVFbGVtZW50cz1VO2lmKFUubGVuZ3Ro PjApe3RoaXMuZmlyc3RFbGVtZW50PVVbMF07dGhpcy5sYXN0RWxlbWVudD1VW1Uu bGVuZ3RoLTFdO31pZih0aGlzLmNmZy5nZXRQcm9wZXJ0eSgibW9kYWwiKSl7dGhp cy5zZXRUYWJMb29wKHRoaXMuZmlyc3RFbGVtZW50LHRoaXMubGFzdEVsZW1lbnQp O319LGluaXRFdmVudHM6ZnVuY3Rpb24oKXtPLnN1cGVyY2xhc3MuaW5pdEV2ZW50 cy5jYWxsKHRoaXMpO3ZhciBVPU0uTElTVDt0aGlzLnNob3dNYXNrRXZlbnQ9dGhp cy5jcmVhdGVFdmVudChELlNIT1dfTUFTSyk7dGhpcy5zaG93TWFza0V2ZW50LnNp Z25hdHVyZT1VO3RoaXMuaGlkZU1hc2tFdmVudD10aGlzLmNyZWF0ZUV2ZW50KEQu SElERV9NQVNLKTt0aGlzLmhpZGVNYXNrRXZlbnQuc2lnbmF0dXJlPVU7dGhpcy5k cmFnRXZlbnQ9dGhpcy5jcmVhdGVFdmVudChELkRSQUcpO3RoaXMuZHJhZ0V2ZW50 LnNpZ25hdHVyZT1VO30saW5pdERlZmF1bHRDb25maWc6ZnVuY3Rpb24oKXtPLnN1 cGVyY2xhc3MuaW5pdERlZmF1bHRDb25maWcuY2FsbCh0aGlzKTt0aGlzLmNmZy5h ZGRQcm9wZXJ0eShOLkNMT1NFLmtleSx7aGFuZGxlcjp0aGlzLmNvbmZpZ0Nsb3Nl LHZhbHVlOk4uQ0xPU0UudmFsdWUsdmFsaWRhdG9yOk4uQ0xPU0UudmFsaWRhdG9y LHN1cGVyY2VkZXM6Ti5DTE9TRS5zdXBlcmNlZGVzfSk7dGhpcy5jZmcuYWRkUHJv cGVydHkoTi5EUkFHR0FCTEUua2V5LHtoYW5kbGVyOnRoaXMuY29uZmlnRHJhZ2dh YmxlLHZhbHVlOihGLkREKT90cnVlOmZhbHNlLHZhbGlkYXRvcjpOLkRSQUdHQUJM RS52YWxpZGF0b3Isc3VwZXJjZWRlczpOLkRSQUdHQUJMRS5zdXBlcmNlZGVzfSk7 dGhpcy5jZmcuYWRkUHJvcGVydHkoTi5EUkFHX09OTFkua2V5LHt2YWx1ZTpOLkRS QUdfT05MWS52YWx1ZSx2YWxpZGF0b3I6Ti5EUkFHX09OTFkudmFsaWRhdG9yLHN1 cGVyY2VkZXM6Ti5EUkFHX09OTFkuc3VwZXJjZWRlc30pO3RoaXMuY2ZnLmFkZFBy b3BlcnR5KE4uVU5ERVJMQVkua2V5LHtoYW5kbGVyOnRoaXMuY29uZmlnVW5kZXJs YXksdmFsdWU6Ti5VTkRFUkxBWS52YWx1ZSxzdXBlcmNlZGVzOk4uVU5ERVJMQVku c3VwZXJjZWRlc30pO3RoaXMuY2ZnLmFkZFByb3BlcnR5KE4uTU9EQUwua2V5LHto YW5kbGVyOnRoaXMuY29uZmlnTW9kYWwsdmFsdWU6Ti5NT0RBTC52YWx1ZSx2YWxp ZGF0b3I6Ti5NT0RBTC52YWxpZGF0b3Isc3VwZXJjZWRlczpOLk1PREFMLnN1cGVy Y2VkZXN9KTt0aGlzLmNmZy5hZGRQcm9wZXJ0eShOLktFWV9MSVNURU5FUlMua2V5 LHtoYW5kbGVyOnRoaXMuY29uZmlnS2V5TGlzdGVuZXJzLHN1cHByZXNzRXZlbnQ6 Ti5LRVlfTElTVEVORVJTLnN1cHByZXNzRXZlbnQsc3VwZXJjZWRlczpOLktFWV9M SVNURU5FUlMuc3VwZXJjZWRlc30pO3RoaXMuY2ZnLmFkZFByb3BlcnR5KE4uU1RS SU5HUy5rZXkse3ZhbHVlOk4uU1RSSU5HUy52YWx1ZSxoYW5kbGVyOnRoaXMuY29u ZmlnU3RyaW5ncyx2YWxpZGF0b3I6Ti5TVFJJTkdTLnZhbGlkYXRvcixzdXBlcmNl ZGVzOk4uU1RSSU5HUy5zdXBlcmNlZGVzfSk7fSxjb25maWdDbG9zZTpmdW5jdGlv bihYLFYsWSl7dmFyIFo9VlswXSxXPXRoaXMuY2xvc2UsVT10aGlzLmNmZy5nZXRQ cm9wZXJ0eSgic3RyaW5ncyIpO2lmKFope2lmKCFXKXtpZighQyl7Qz1kb2N1bWVu dC5jcmVhdGVFbGVtZW50KCJhIik7Qy5jbGFzc05hbWU9ImNvbnRhaW5lci1jbG9z ZSI7Qy5ocmVmPSIjIjt9Vz1DLmNsb25lTm9kZSh0cnVlKTt0aGlzLmlubmVyRWxl bWVudC5hcHBlbmRDaGlsZChXKTtXLmlubmVySFRNTD0oVSYmVS5jbG9zZSk/VS5j bG9zZToiJiMxNjA7IjtULm9uKFcsImNsaWNrIix0aGlzLl9kb0Nsb3NlLHRoaXMs dHJ1ZSk7dGhpcy5jbG9zZT1XO31lbHNle1cuc3R5bGUuZGlzcGxheT0iYmxvY2si O319ZWxzZXtpZihXKXtXLnN0eWxlLmRpc3BsYXk9Im5vbmUiO319fSxfZG9DbG9z ZTpmdW5jdGlvbihVKXtULnByZXZlbnREZWZhdWx0KFUpO3RoaXMuaGlkZSgpO30s Y29uZmlnRHJhZ2dhYmxlOmZ1bmN0aW9uKFYsVSxXKXt2YXIgWD1VWzBdO2lmKFgp e2lmKCFGLkREKXt0aGlzLmNmZy5zZXRQcm9wZXJ0eSgiZHJhZ2dhYmxlIixmYWxz ZSk7cmV0dXJuO31pZih0aGlzLmhlYWRlcil7QS5zZXRTdHlsZSh0aGlzLmhlYWRl ciwiY3Vyc29yIiwibW92ZSIpO3RoaXMucmVnaXN0ZXJEcmFnRHJvcCgpO310aGlz LnN1YnNjcmliZSgiYmVmb3JlU2hvdyIsQik7fWVsc2V7aWYodGhpcy5kZCl7dGhp cy5kZC51bnJlZygpO31pZih0aGlzLmhlYWRlcil7QS5zZXRTdHlsZSh0aGlzLmhl YWRlciwiY3Vyc29yIiwiYXV0byIpO310aGlzLnVuc3Vic2NyaWJlKCJiZWZvcmVT aG93IixCKTt9fSxjb25maWdVbmRlcmxheTpmdW5jdGlvbihkLGMsWil7dmFyIGI9 KHRoaXMucGxhdGZvcm09PSJtYWMiJiZMLmdlY2tvKSxlPWNbMF0udG9Mb3dlckNh c2UoKSxWPXRoaXMudW5kZXJsYXksVz10aGlzLmVsZW1lbnQ7ZnVuY3Rpb24gWCgp e3ZhciBmPWZhbHNlO2lmKCFWKXtpZighUSl7UT1kb2N1bWVudC5jcmVhdGVFbGVt ZW50KCJkaXYiKTtRLmNsYXNzTmFtZT0idW5kZXJsYXkiO31WPVEuY2xvbmVOb2Rl KGZhbHNlKTt0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoVik7dGhpcy51bmRlcmxh eT1WO2lmKFApe3RoaXMuc2l6ZVVuZGVybGF5KCk7dGhpcy5jZmcuc3Vic2NyaWJl VG9Db25maWdFdmVudCgid2lkdGgiLHRoaXMuc2l6ZVVuZGVybGF5KTt0aGlzLmNm Zy5zdWJzY3JpYmVUb0NvbmZpZ0V2ZW50KCJoZWlnaHQiLHRoaXMuc2l6ZVVuZGVy bGF5KTt0aGlzLmNoYW5nZUNvbnRlbnRFdmVudC5zdWJzY3JpYmUodGhpcy5zaXpl VW5kZXJsYXkpO1lBSE9PLndpZGdldC5Nb2R1bGUudGV4dFJlc2l6ZUV2ZW50LnN1 YnNjcmliZSh0aGlzLnNpemVVbmRlcmxheSx0aGlzLHRydWUpO31pZihMLndlYmtp dCYmTC53ZWJraXQ8NDIwKXt0aGlzLmNoYW5nZUNvbnRlbnRFdmVudC5zdWJzY3Jp YmUodGhpcy5mb3JjZVVuZGVybGF5UmVkcmF3KTt9Zj10cnVlO319ZnVuY3Rpb24g YSgpe3ZhciBmPVguY2FsbCh0aGlzKTtpZighZiYmUCl7dGhpcy5zaXplVW5kZXJs YXkoKTt9dGhpcy5fdW5kZXJsYXlEZWZlcnJlZD1mYWxzZTt0aGlzLmJlZm9yZVNo b3dFdmVudC51bnN1YnNjcmliZShhKTt9ZnVuY3Rpb24gWSgpe2lmKHRoaXMuX3Vu ZGVybGF5RGVmZXJyZWQpe3RoaXMuYmVmb3JlU2hvd0V2ZW50LnVuc3Vic2NyaWJl KGEpO3RoaXMuX3VuZGVybGF5RGVmZXJyZWQ9ZmFsc2U7fWlmKFYpe3RoaXMuY2Zn LnVuc3Vic2NyaWJlRnJvbUNvbmZpZ0V2ZW50KCJ3aWR0aCIsdGhpcy5zaXplVW5k ZXJsYXkpO3RoaXMuY2ZnLnVuc3Vic2NyaWJlRnJvbUNvbmZpZ0V2ZW50KCJoZWln aHQiLHRoaXMuc2l6ZVVuZGVybGF5KTt0aGlzLmNoYW5nZUNvbnRlbnRFdmVudC51 bnN1YnNjcmliZSh0aGlzLnNpemVVbmRlcmxheSk7dGhpcy5jaGFuZ2VDb250ZW50 RXZlbnQudW5zdWJzY3JpYmUodGhpcy5mb3JjZVVuZGVybGF5UmVkcmF3KTtZQUhP Ty53aWRnZXQuTW9kdWxlLnRleHRSZXNpemVFdmVudC51bnN1YnNjcmliZSh0aGlz LnNpemVVbmRlcmxheSx0aGlzLHRydWUpO3RoaXMuZWxlbWVudC5yZW1vdmVDaGls ZChWKTt0aGlzLnVuZGVybGF5PW51bGw7fX1zd2l0Y2goZSl7Y2FzZSJzaGFkb3ci OkEucmVtb3ZlQ2xhc3MoVywibWF0dGUiKTtBLmFkZENsYXNzKFcsInNoYWRvdyIp O2JyZWFrO2Nhc2UibWF0dGUiOmlmKCFiKXtZLmNhbGwodGhpcyk7fUEucmVtb3Zl Q2xhc3MoVywic2hhZG93Iik7QS5hZGRDbGFzcyhXLCJtYXR0ZSIpO2JyZWFrO2Rl ZmF1bHQ6aWYoIWIpe1kuY2FsbCh0aGlzKTt9QS5yZW1vdmVDbGFzcyhXLCJzaGFk b3ciKTtBLnJlbW92ZUNsYXNzKFcsIm1hdHRlIik7YnJlYWs7fWlmKChlPT0ic2hh ZG93Iil8fChiJiYhVikpe2lmKHRoaXMuY2ZnLmdldFByb3BlcnR5KCJ2aXNpYmxl Iikpe3ZhciBVPVguY2FsbCh0aGlzKTtpZighVSYmUCl7dGhpcy5zaXplVW5kZXJs YXkoKTt9fWVsc2V7aWYoIXRoaXMuX3VuZGVybGF5RGVmZXJyZWQpe3RoaXMuYmVm b3JlU2hvd0V2ZW50LnN1YnNjcmliZShhKTt0aGlzLl91bmRlcmxheURlZmVycmVk PXRydWU7fX19fSxjb25maWdNb2RhbDpmdW5jdGlvbihWLFUsWCl7dmFyIFc9VVsw XTtpZihXKXtpZighdGhpcy5faGFzTW9kYWxpdHlFdmVudExpc3RlbmVycyl7dGhp cy5zdWJzY3JpYmUoImJlZm9yZVNob3ciLHRoaXMuYnVpbGRNYXNrKTt0aGlzLnN1 YnNjcmliZSgiYmVmb3JlU2hvdyIsdGhpcy5icmluZ1RvVG9wKTt0aGlzLnN1YnNj cmliZSgiYmVmb3JlU2hvdyIsdGhpcy5zaG93TWFzayk7dGhpcy5zdWJzY3JpYmUo ImhpZGUiLHRoaXMuaGlkZU1hc2spO0gud2luZG93UmVzaXplRXZlbnQuc3Vic2Ny aWJlKHRoaXMuc2l6ZU1hc2ssdGhpcyx0cnVlKTt0aGlzLl9oYXNNb2RhbGl0eUV2 ZW50TGlzdGVuZXJzPXRydWU7fX1lbHNle2lmKHRoaXMuX2hhc01vZGFsaXR5RXZl bnRMaXN0ZW5lcnMpe2lmKHRoaXMuY2ZnLmdldFByb3BlcnR5KCJ2aXNpYmxlIikp e3RoaXMuaGlkZU1hc2soKTt0aGlzLnJlbW92ZU1hc2soKTt9dGhpcy51bnN1YnNj cmliZSgiYmVmb3JlU2hvdyIsdGhpcy5idWlsZE1hc2spO3RoaXMudW5zdWJzY3Jp YmUoImJlZm9yZVNob3ciLHRoaXMuYnJpbmdUb1RvcCk7dGhpcy51bnN1YnNjcmli ZSgiYmVmb3JlU2hvdyIsdGhpcy5zaG93TWFzayk7dGhpcy51bnN1YnNjcmliZSgi aGlkZSIsdGhpcy5oaWRlTWFzayk7SC53aW5kb3dSZXNpemVFdmVudC51bnN1YnNj cmliZSh0aGlzLnNpemVNYXNrLHRoaXMpO3RoaXMuX2hhc01vZGFsaXR5RXZlbnRM aXN0ZW5lcnM9ZmFsc2U7fX19LHJlbW92ZU1hc2s6ZnVuY3Rpb24oKXt2YXIgVj10 aGlzLm1hc2ssVTtpZihWKXt0aGlzLmhpZGVNYXNrKCk7VT1WLnBhcmVudE5vZGU7 aWYoVSl7VS5yZW1vdmVDaGlsZChWKTt9dGhpcy5tYXNrPW51bGw7fX0sY29uZmln S2V5TGlzdGVuZXJzOmZ1bmN0aW9uKFgsVSxhKXt2YXIgVz1VWzBdLFosWSxWO2lm KFcpe2lmKFcgaW5zdGFuY2VvZiBBcnJheSl7WT1XLmxlbmd0aDtmb3IoVj0wO1Y8 WTtWKyspe1o9V1tWXTtpZighSS5hbHJlYWR5U3Vic2NyaWJlZCh0aGlzLnNob3dF dmVudCxaLmVuYWJsZSxaKSl7dGhpcy5zaG93RXZlbnQuc3Vic2NyaWJlKFouZW5h YmxlLFosdHJ1ZSk7fWlmKCFJLmFscmVhZHlTdWJzY3JpYmVkKHRoaXMuaGlkZUV2 ZW50LFouZGlzYWJsZSxaKSl7dGhpcy5oaWRlRXZlbnQuc3Vic2NyaWJlKFouZGlz YWJsZSxaLHRydWUpO3RoaXMuZGVzdHJveUV2ZW50LnN1YnNjcmliZShaLmRpc2Fi bGUsWix0cnVlKTt9fX1lbHNle2lmKCFJLmFscmVhZHlTdWJzY3JpYmVkKHRoaXMu c2hvd0V2ZW50LFcuZW5hYmxlLFcpKXt0aGlzLnNob3dFdmVudC5zdWJzY3JpYmUo Vy5lbmFibGUsVyx0cnVlKTt9aWYoIUkuYWxyZWFkeVN1YnNjcmliZWQodGhpcy5o aWRlRXZlbnQsVy5kaXNhYmxlLFcpKXt0aGlzLmhpZGVFdmVudC5zdWJzY3JpYmUo Vy5kaXNhYmxlLFcsdHJ1ZSk7CnRoaXMuZGVzdHJveUV2ZW50LnN1YnNjcmliZShX LmRpc2FibGUsVyx0cnVlKTt9fX19LGNvbmZpZ1N0cmluZ3M6ZnVuY3Rpb24oVixV LFcpe3ZhciBYPUUubWVyZ2UoTi5TVFJJTkdTLnZhbHVlLFVbMF0pO3RoaXMuY2Zn LnNldFByb3BlcnR5KE4uU1RSSU5HUy5rZXksWCx0cnVlKTt9LGNvbmZpZ0hlaWdo dDpmdW5jdGlvbihYLFYsWSl7dmFyIFU9VlswXSxXPXRoaXMuaW5uZXJFbGVtZW50 O0Euc2V0U3R5bGUoVywiaGVpZ2h0IixVKTt0aGlzLmNmZy5yZWZpcmVFdmVudCgi aWZyYW1lIik7fSxfYXV0b0ZpbGxPbkhlaWdodENoYW5nZTpmdW5jdGlvbihYLFYs Vyl7Ty5zdXBlcmNsYXNzLl9hdXRvRmlsbE9uSGVpZ2h0Q2hhbmdlLmFwcGx5KHRo aXMsYXJndW1lbnRzKTtpZihQKXt2YXIgVT10aGlzO3NldFRpbWVvdXQoZnVuY3Rp b24oKXtVLnNpemVVbmRlcmxheSgpO30sMCk7fX0sY29uZmlnV2lkdGg6ZnVuY3Rp b24oWCxVLFkpe3ZhciBXPVVbMF0sVj10aGlzLmlubmVyRWxlbWVudDtBLnNldFN0 eWxlKFYsIndpZHRoIixXKTt0aGlzLmNmZy5yZWZpcmVFdmVudCgiaWZyYW1lIik7 fSxjb25maWd6SW5kZXg6ZnVuY3Rpb24oVixVLFgpe08uc3VwZXJjbGFzcy5jb25m aWd6SW5kZXguY2FsbCh0aGlzLFYsVSxYKTtpZih0aGlzLm1hc2t8fHRoaXMuY2Zn LmdldFByb3BlcnR5KCJtb2RhbCIpPT09dHJ1ZSl7dmFyIFc9QS5nZXRTdHlsZSh0 aGlzLmVsZW1lbnQsInpJbmRleCIpO2lmKCFXfHxpc05hTihXKSl7Vz0wO31pZihX PT09MCl7dGhpcy5jZmcuc2V0UHJvcGVydHkoInpJbmRleCIsMSk7fWVsc2V7dGhp cy5zdGFja01hc2soKTt9fX0sYnVpbGRXcmFwcGVyOmZ1bmN0aW9uKCl7dmFyIFc9 dGhpcy5lbGVtZW50LnBhcmVudE5vZGUsVT10aGlzLmVsZW1lbnQsVj1kb2N1bWVu dC5jcmVhdGVFbGVtZW50KCJkaXYiKTtWLmNsYXNzTmFtZT1PLkNTU19QQU5FTF9D T05UQUlORVI7Vi5pZD1VLmlkKyJfYyI7aWYoVyl7Vy5pbnNlcnRCZWZvcmUoVixV KTt9Vi5hcHBlbmRDaGlsZChVKTt0aGlzLmVsZW1lbnQ9Vjt0aGlzLmlubmVyRWxl bWVudD1VO0Euc2V0U3R5bGUodGhpcy5pbm5lckVsZW1lbnQsInZpc2liaWxpdHki LCJpbmhlcml0Iik7fSxzaXplVW5kZXJsYXk6ZnVuY3Rpb24oKXt2YXIgVj10aGlz LnVuZGVybGF5LFU7aWYoVil7VT10aGlzLmVsZW1lbnQ7Vi5zdHlsZS53aWR0aD1V Lm9mZnNldFdpZHRoKyJweCI7Vi5zdHlsZS5oZWlnaHQ9VS5vZmZzZXRIZWlnaHQr InB4Ijt9fSxyZWdpc3RlckRyYWdEcm9wOmZ1bmN0aW9uKCl7dmFyIFY9dGhpcztp Zih0aGlzLmhlYWRlcil7aWYoIUYuREQpe3JldHVybjt9dmFyIFU9KHRoaXMuY2Zn LmdldFByb3BlcnR5KCJkcmFnb25seSIpPT09dHJ1ZSk7dGhpcy5kZD1uZXcgRi5E RCh0aGlzLmVsZW1lbnQuaWQsdGhpcy5pZCx7ZHJhZ09ubHk6VX0pO2lmKCF0aGlz LmhlYWRlci5pZCl7dGhpcy5oZWFkZXIuaWQ9dGhpcy5pZCsiX2giO310aGlzLmRk LnN0YXJ0RHJhZz1mdW5jdGlvbigpe3ZhciBYLFosVyxjLGIsYTtpZihZQUhPTy5l bnYudWEuaWU9PTYpe0EuYWRkQ2xhc3MoVi5lbGVtZW50LCJkcmFnIik7fWlmKFYu Y2ZnLmdldFByb3BlcnR5KCJjb25zdHJhaW50b3ZpZXdwb3J0Iikpe3ZhciBZPUgu VklFV1BPUlRfT0ZGU0VUO1g9Vi5lbGVtZW50Lm9mZnNldEhlaWdodDtaPVYuZWxl bWVudC5vZmZzZXRXaWR0aDtXPUEuZ2V0Vmlld3BvcnRXaWR0aCgpO2M9QS5nZXRW aWV3cG9ydEhlaWdodCgpO2I9QS5nZXREb2N1bWVudFNjcm9sbExlZnQoKTthPUEu Z2V0RG9jdW1lbnRTY3JvbGxUb3AoKTtpZihYK1k8Yyl7dGhpcy5taW5ZPWErWTt0 aGlzLm1heFk9YStjLVgtWTt9ZWxzZXt0aGlzLm1pblk9YStZO3RoaXMubWF4WT1h K1k7fWlmKForWTxXKXt0aGlzLm1pblg9YitZO3RoaXMubWF4WD1iK1ctWi1ZO31l bHNle3RoaXMubWluWD1iK1k7dGhpcy5tYXhYPWIrWTt9dGhpcy5jb25zdHJhaW5Y PXRydWU7dGhpcy5jb25zdHJhaW5ZPXRydWU7fWVsc2V7dGhpcy5jb25zdHJhaW5Y PWZhbHNlO3RoaXMuY29uc3RyYWluWT1mYWxzZTt9Vi5kcmFnRXZlbnQuZmlyZSgi c3RhcnREcmFnIixhcmd1bWVudHMpO307dGhpcy5kZC5vbkRyYWc9ZnVuY3Rpb24o KXtWLnN5bmNQb3NpdGlvbigpO1YuY2ZnLnJlZmlyZUV2ZW50KCJpZnJhbWUiKTtp Zih0aGlzLnBsYXRmb3JtPT0ibWFjIiYmWUFIT08uZW52LnVhLmdlY2tvKXt0aGlz LnNob3dNYWNHZWNrb1Njcm9sbGJhcnMoKTt9Vi5kcmFnRXZlbnQuZmlyZSgib25E cmFnIixhcmd1bWVudHMpO307dGhpcy5kZC5lbmREcmFnPWZ1bmN0aW9uKCl7aWYo WUFIT08uZW52LnVhLmllPT02KXtBLnJlbW92ZUNsYXNzKFYuZWxlbWVudCwiZHJh ZyIpO31WLmRyYWdFdmVudC5maXJlKCJlbmREcmFnIixhcmd1bWVudHMpO1YubW92 ZUV2ZW50LmZpcmUoVi5jZmcuZ2V0UHJvcGVydHkoInh5IikpO307dGhpcy5kZC5z ZXRIYW5kbGVFbElkKHRoaXMuaGVhZGVyLmlkKTt0aGlzLmRkLmFkZEludmFsaWRI YW5kbGVUeXBlKCJJTlBVVCIpO3RoaXMuZGQuYWRkSW52YWxpZEhhbmRsZVR5cGUo IlNFTEVDVCIpO3RoaXMuZGQuYWRkSW52YWxpZEhhbmRsZVR5cGUoIlRFWFRBUkVB Iik7fX0sYnVpbGRNYXNrOmZ1bmN0aW9uKCl7dmFyIFU9dGhpcy5tYXNrO2lmKCFV KXtpZighRyl7Rz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtHLmNsYXNz TmFtZT0ibWFzayI7Ry5pbm5lckhUTUw9IiYjMTYwOyI7fVU9Ry5jbG9uZU5vZGUo dHJ1ZSk7VS5pZD10aGlzLmlkKyJfbWFzayI7ZG9jdW1lbnQuYm9keS5pbnNlcnRC ZWZvcmUoVSxkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpO3RoaXMubWFzaz1VO2lm KFlBSE9PLmVudi51YS5nZWNrbyYmdGhpcy5wbGF0Zm9ybT09Im1hYyIpe0EuYWRk Q2xhc3ModGhpcy5tYXNrLCJibG9jay1zY3JvbGxiYXJzIik7fXRoaXMuc3RhY2tN YXNrKCk7fX0saGlkZU1hc2s6ZnVuY3Rpb24oKXtpZih0aGlzLmNmZy5nZXRQcm9w ZXJ0eSgibW9kYWwiKSYmdGhpcy5tYXNrKXt0aGlzLm1hc2suc3R5bGUuZGlzcGxh eT0ibm9uZSI7QS5yZW1vdmVDbGFzcyhkb2N1bWVudC5ib2R5LCJtYXNrZWQiKTt0 aGlzLmhpZGVNYXNrRXZlbnQuZmlyZSgpO319LHNob3dNYXNrOmZ1bmN0aW9uKCl7 aWYodGhpcy5jZmcuZ2V0UHJvcGVydHkoIm1vZGFsIikmJnRoaXMubWFzayl7QS5h ZGRDbGFzcyhkb2N1bWVudC5ib2R5LCJtYXNrZWQiKTt0aGlzLnNpemVNYXNrKCk7 dGhpcy5tYXNrLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjt0aGlzLnNob3dNYXNrRXZl bnQuZmlyZSgpO319LHNpemVNYXNrOmZ1bmN0aW9uKCl7aWYodGhpcy5tYXNrKXt2 YXIgVj10aGlzLm1hc2ssVz1BLmdldFZpZXdwb3J0V2lkdGgoKSxVPUEuZ2V0Vmll d3BvcnRIZWlnaHQoKTtpZihWLm9mZnNldEhlaWdodD5VKXtWLnN0eWxlLmhlaWdo dD1VKyJweCI7fWlmKFYub2Zmc2V0V2lkdGg+Vyl7Vi5zdHlsZS53aWR0aD1XKyJw eCI7fVYuc3R5bGUuaGVpZ2h0PUEuZ2V0RG9jdW1lbnRIZWlnaHQoKSsicHgiO1Yu c3R5bGUud2lkdGg9QS5nZXREb2N1bWVudFdpZHRoKCkrInB4Ijt9fSxzdGFja01h c2s6ZnVuY3Rpb24oKXtpZih0aGlzLm1hc2spe3ZhciBVPUEuZ2V0U3R5bGUodGhp cy5lbGVtZW50LCJ6SW5kZXgiKTtpZighWUFIT08ubGFuZy5pc1VuZGVmaW5lZChV KSYmIWlzTmFOKFUpKXtBLnNldFN0eWxlKHRoaXMubWFzaywiekluZGV4IixVLTEp O319fSxyZW5kZXI6ZnVuY3Rpb24oVSl7cmV0dXJuIE8uc3VwZXJjbGFzcy5yZW5k ZXIuY2FsbCh0aGlzLFUsdGhpcy5pbm5lckVsZW1lbnQpO30sZGVzdHJveTpmdW5j dGlvbigpe0gud2luZG93UmVzaXplRXZlbnQudW5zdWJzY3JpYmUodGhpcy5zaXpl TWFzayx0aGlzKTt0aGlzLnJlbW92ZU1hc2soKTtpZih0aGlzLmNsb3NlKXtULnB1 cmdlRWxlbWVudCh0aGlzLmNsb3NlKTt9Ty5zdXBlcmNsYXNzLmRlc3Ryb3kuY2Fs bCh0aGlzKTt9LGZvcmNlVW5kZXJsYXlSZWRyYXc6ZnVuY3Rpb24oKXt2YXIgVT10 aGlzLnVuZGVybGF5O0EuYWRkQ2xhc3MoVSwieXVpLWZvcmNlLXJlZHJhdyIpO3Nl dFRpbWVvdXQoZnVuY3Rpb24oKXtBLnJlbW92ZUNsYXNzKFUsInl1aS1mb3JjZS1y ZWRyYXciKTt9LDApO30sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iUGFuZWwg Iit0aGlzLmlkO319KTt9KCkpOyhmdW5jdGlvbigpe1lBSE9PLndpZGdldC5EaWFs b2c9ZnVuY3Rpb24oSixJKXtZQUhPTy53aWRnZXQuRGlhbG9nLnN1cGVyY2xhc3Mu Y29uc3RydWN0b3IuY2FsbCh0aGlzLEosSSk7fTt2YXIgQj1ZQUhPTy51dGlsLkV2 ZW50LEc9WUFIT08udXRpbC5DdXN0b21FdmVudCxFPVlBSE9PLnV0aWwuRG9tLEE9 WUFIT08ud2lkZ2V0LkRpYWxvZyxGPVlBSE9PLmxhbmcsSD17IkJFRk9SRV9TVUJN SVQiOiJiZWZvcmVTdWJtaXQiLCJTVUJNSVQiOiJzdWJtaXQiLCJNQU5VQUxfU1VC TUlUIjoibWFudWFsU3VibWl0IiwiQVNZTkNfU1VCTUlUIjoiYXN5bmNTdWJtaXQi LCJGT1JNX1NVQk1JVCI6ImZvcm1TdWJtaXQiLCJDQU5DRUwiOiJjYW5jZWwifSxD PXsiUE9TVF9NRVRIT0QiOntrZXk6InBvc3RtZXRob2QiLHZhbHVlOiJhc3luYyJ9 LCJQT1NUX0RBVEEiOntrZXk6InBvc3RkYXRhIix2YWx1ZTpudWxsfSwiQlVUVE9O UyI6e2tleToiYnV0dG9ucyIsdmFsdWU6Im5vbmUiLHN1cGVyY2VkZXM6WyJ2aXNp YmxlIl19LCJISURFQUZURVJTVUJNSVQiOntrZXk6ImhpZGVhZnRlcnN1Ym1pdCIs dmFsdWU6dHJ1ZX19O0EuQ1NTX0RJQUxPRz0ieXVpLWRpYWxvZyI7ZnVuY3Rpb24g RCgpe3ZhciBMPXRoaXMuX2FCdXR0b25zLEosSyxJO2lmKEYuaXNBcnJheShMKSl7 Sj1MLmxlbmd0aDtpZihKPjApe0k9Si0xO2Rve0s9TFtJXTtpZihZQUhPTy53aWRn ZXQuQnV0dG9uJiZLIGluc3RhbmNlb2YgWUFIT08ud2lkZ2V0LkJ1dHRvbil7Sy5k ZXN0cm95KCk7fWVsc2V7aWYoSy50YWdOYW1lLnRvVXBwZXJDYXNlKCk9PSJCVVRU T04iKXtCLnB1cmdlRWxlbWVudChLKTtCLnB1cmdlRWxlbWVudChLLGZhbHNlKTt9 fX13aGlsZShJLS0pO319fVlBSE9PLmV4dGVuZChBLFlBSE9PLndpZGdldC5QYW5l bCx7Zm9ybTpudWxsLGluaXREZWZhdWx0Q29uZmlnOmZ1bmN0aW9uKCl7QS5zdXBl cmNsYXNzLmluaXREZWZhdWx0Q29uZmlnLmNhbGwodGhpcyk7dGhpcy5jYWxsYmFj az17c3VjY2VzczpudWxsLGZhaWx1cmU6bnVsbCxhcmd1bWVudDpudWxsfTt0aGlz LmNmZy5hZGRQcm9wZXJ0eShDLlBPU1RfTUVUSE9ELmtleSx7aGFuZGxlcjp0aGlz LmNvbmZpZ1Bvc3RNZXRob2QsdmFsdWU6Qy5QT1NUX01FVEhPRC52YWx1ZSx2YWxp ZGF0b3I6ZnVuY3Rpb24oSSl7aWYoSSE9ImZvcm0iJiZJIT0iYXN5bmMiJiZJIT0i bm9uZSImJkkhPSJtYW51YWwiKXtyZXR1cm4gZmFsc2U7fWVsc2V7cmV0dXJuIHRy dWU7fX19KTt0aGlzLmNmZy5hZGRQcm9wZXJ0eShDLlBPU1RfREFUQS5rZXkse3Zh bHVlOkMuUE9TVF9EQVRBLnZhbHVlfSk7dGhpcy5jZmcuYWRkUHJvcGVydHkoQy5I SURFQUZURVJTVUJNSVQua2V5LHt2YWx1ZTpDLkhJREVBRlRFUlNVQk1JVC52YWx1 ZX0pO3RoaXMuY2ZnLmFkZFByb3BlcnR5KEMuQlVUVE9OUy5rZXkse2hhbmRsZXI6 dGhpcy5jb25maWdCdXR0b25zLHZhbHVlOkMuQlVUVE9OUy52YWx1ZSxzdXBlcmNl ZGVzOkMuQlVUVE9OUy5zdXBlcmNlZGVzfSk7fSxpbml0RXZlbnRzOmZ1bmN0aW9u KCl7QS5zdXBlcmNsYXNzLmluaXRFdmVudHMuY2FsbCh0aGlzKTt2YXIgST1HLkxJ U1Q7dGhpcy5iZWZvcmVTdWJtaXRFdmVudD10aGlzLmNyZWF0ZUV2ZW50KEguQkVG T1JFX1NVQk1JVCk7dGhpcy5iZWZvcmVTdWJtaXRFdmVudC5zaWduYXR1cmU9STt0 aGlzLnN1Ym1pdEV2ZW50PXRoaXMuY3JlYXRlRXZlbnQoSC5TVUJNSVQpO3RoaXMu c3VibWl0RXZlbnQuc2lnbmF0dXJlPUk7dGhpcy5tYW51YWxTdWJtaXRFdmVudD10 aGlzLmNyZWF0ZUV2ZW50KEguTUFOVUFMX1NVQk1JVCk7dGhpcy5tYW51YWxTdWJt aXRFdmVudC5zaWduYXR1cmU9STt0aGlzLmFzeW5jU3VibWl0RXZlbnQ9dGhpcy5j cmVhdGVFdmVudChILkFTWU5DX1NVQk1JVCk7CnRoaXMuYXN5bmNTdWJtaXRFdmVu dC5zaWduYXR1cmU9STt0aGlzLmZvcm1TdWJtaXRFdmVudD10aGlzLmNyZWF0ZUV2 ZW50KEguRk9STV9TVUJNSVQpO3RoaXMuZm9ybVN1Ym1pdEV2ZW50LnNpZ25hdHVy ZT1JO3RoaXMuY2FuY2VsRXZlbnQ9dGhpcy5jcmVhdGVFdmVudChILkNBTkNFTCk7 dGhpcy5jYW5jZWxFdmVudC5zaWduYXR1cmU9STt9LGluaXQ6ZnVuY3Rpb24oSixJ KXtBLnN1cGVyY2xhc3MuaW5pdC5jYWxsKHRoaXMsSik7dGhpcy5iZWZvcmVJbml0 RXZlbnQuZmlyZShBKTtFLmFkZENsYXNzKHRoaXMuZWxlbWVudCxBLkNTU19ESUFM T0cpO3RoaXMuY2ZnLnNldFByb3BlcnR5KCJ2aXNpYmxlIixmYWxzZSk7aWYoSSl7 dGhpcy5jZmcuYXBwbHlDb25maWcoSSx0cnVlKTt9dGhpcy5zaG93RXZlbnQuc3Vi c2NyaWJlKHRoaXMuZm9jdXNGaXJzdCx0aGlzLHRydWUpO3RoaXMuYmVmb3JlSGlk ZUV2ZW50LnN1YnNjcmliZSh0aGlzLmJsdXJCdXR0b25zLHRoaXMsdHJ1ZSk7dGhp cy5zdWJzY3JpYmUoImNoYW5nZUJvZHkiLHRoaXMucmVnaXN0ZXJGb3JtKTt0aGlz LmluaXRFdmVudC5maXJlKEEpO30sZG9TdWJtaXQ6ZnVuY3Rpb24oKXt2YXIgUD1Z QUhPTy51dGlsLkNvbm5lY3QsUT10aGlzLmZvcm0sSz1mYWxzZSxOPWZhbHNlLFIs TSxMLEk7c3dpdGNoKHRoaXMuY2ZnLmdldFByb3BlcnR5KCJwb3N0bWV0aG9kIikp e2Nhc2UiYXN5bmMiOlI9US5lbGVtZW50cztNPVIubGVuZ3RoO2lmKE0+MCl7TD1N LTE7ZG97aWYoUltMXS50eXBlPT0iZmlsZSIpe0s9dHJ1ZTticmVhazt9fXdoaWxl KEwtLSk7fWlmKEsmJllBSE9PLmVudi51YS5pZSYmdGhpcy5pc1NlY3VyZSl7Tj10 cnVlO31JPXRoaXMuX2dldEZvcm1BdHRyaWJ1dGVzKFEpO1Auc2V0Rm9ybShRLEss Tik7dmFyIEo9dGhpcy5jZmcuZ2V0UHJvcGVydHkoInBvc3RkYXRhIik7dmFyIE89 UC5hc3luY1JlcXVlc3QoSS5tZXRob2QsSS5hY3Rpb24sdGhpcy5jYWxsYmFjayxK KTt0aGlzLmFzeW5jU3VibWl0RXZlbnQuZmlyZShPKTticmVhaztjYXNlImZvcm0i OlEuc3VibWl0KCk7dGhpcy5mb3JtU3VibWl0RXZlbnQuZmlyZSgpO2JyZWFrO2Nh c2Uibm9uZSI6Y2FzZSJtYW51YWwiOnRoaXMubWFudWFsU3VibWl0RXZlbnQuZmly ZSgpO2JyZWFrO319LF9nZXRGb3JtQXR0cmlidXRlczpmdW5jdGlvbihLKXt2YXIg ST17bWV0aG9kOm51bGwsYWN0aW9uOm51bGx9O2lmKEspe2lmKEsuZ2V0QXR0cmli dXRlTm9kZSl7dmFyIEo9Sy5nZXRBdHRyaWJ1dGVOb2RlKCJhY3Rpb24iKTt2YXIg TD1LLmdldEF0dHJpYnV0ZU5vZGUoIm1ldGhvZCIpO2lmKEope0kuYWN0aW9uPUou dmFsdWU7fWlmKEwpe0kubWV0aG9kPUwudmFsdWU7fX1lbHNle0kuYWN0aW9uPUsu Z2V0QXR0cmlidXRlKCJhY3Rpb24iKTtJLm1ldGhvZD1LLmdldEF0dHJpYnV0ZSgi bWV0aG9kIik7fX1JLm1ldGhvZD0oRi5pc1N0cmluZyhJLm1ldGhvZCk/SS5tZXRo b2Q6IlBPU1QiKS50b1VwcGVyQ2FzZSgpO0kuYWN0aW9uPUYuaXNTdHJpbmcoSS5h Y3Rpb24pP0kuYWN0aW9uOiIiO3JldHVybiBJO30scmVnaXN0ZXJGb3JtOmZ1bmN0 aW9uKCl7dmFyIEk9dGhpcy5lbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJm b3JtIilbMF07aWYodGhpcy5mb3JtKXtpZih0aGlzLmZvcm09PUkmJkUuaXNBbmNl c3Rvcih0aGlzLmVsZW1lbnQsdGhpcy5mb3JtKSl7cmV0dXJuO31lbHNle0IucHVy Z2VFbGVtZW50KHRoaXMuZm9ybSk7dGhpcy5mb3JtPW51bGw7fX1pZighSSl7ST1k b2N1bWVudC5jcmVhdGVFbGVtZW50KCJmb3JtIik7SS5uYW1lPSJmcm1fIit0aGlz LmlkO3RoaXMuYm9keS5hcHBlbmRDaGlsZChJKTt9aWYoSSl7dGhpcy5mb3JtPUk7 Qi5vbihJLCJzdWJtaXQiLHRoaXMuX3N1Ym1pdEhhbmRsZXIsdGhpcyx0cnVlKTt9 fSxfc3VibWl0SGFuZGxlcjpmdW5jdGlvbihJKXtCLnN0b3BFdmVudChJKTt0aGlz LnN1Ym1pdCgpO3RoaXMuZm9ybS5ibHVyKCk7fSxzZXRUYWJMb29wOmZ1bmN0aW9u KEksSil7ST1JfHx0aGlzLmZpcnN0QnV0dG9uO0o9dGhpcy5sYXN0QnV0dG9ufHxK O0Euc3VwZXJjbGFzcy5zZXRUYWJMb29wLmNhbGwodGhpcyxJLEopO30sc2V0Rmly c3RMYXN0Rm9jdXNhYmxlOmZ1bmN0aW9uKCl7QS5zdXBlcmNsYXNzLnNldEZpcnN0 TGFzdEZvY3VzYWJsZS5jYWxsKHRoaXMpO3ZhciBKLEksSyxMPXRoaXMuZm9jdXNh YmxlRWxlbWVudHM7dGhpcy5maXJzdEZvcm1FbGVtZW50PW51bGw7dGhpcy5sYXN0 Rm9ybUVsZW1lbnQ9bnVsbDtpZih0aGlzLmZvcm0mJkwmJkwubGVuZ3RoPjApe0k9 TC5sZW5ndGg7Zm9yKEo9MDtKPEk7KytKKXtLPUxbSl07aWYodGhpcy5mb3JtPT09 Sy5mb3JtKXt0aGlzLmZpcnN0Rm9ybUVsZW1lbnQ9SzticmVhazt9fWZvcihKPUkt MTtKPj0wOy0tSil7Sz1MW0pdO2lmKHRoaXMuZm9ybT09PUsuZm9ybSl7dGhpcy5s YXN0Rm9ybUVsZW1lbnQ9SzticmVhazt9fX19LGNvbmZpZ0Nsb3NlOmZ1bmN0aW9u KEosSSxLKXtBLnN1cGVyY2xhc3MuY29uZmlnQ2xvc2UuYXBwbHkodGhpcyxhcmd1 bWVudHMpO30sX2RvQ2xvc2U6ZnVuY3Rpb24oSSl7Qi5wcmV2ZW50RGVmYXVsdChJ KTt0aGlzLmNhbmNlbCgpO30sY29uZmlnQnV0dG9uczpmdW5jdGlvbihTLFIsTSl7 dmFyIE49WUFIT08ud2lkZ2V0LkJ1dHRvbixVPVJbMF0sSz10aGlzLmlubmVyRWxl bWVudCxULFAsSixRLE8sSSxMO0QuY2FsbCh0aGlzKTt0aGlzLl9hQnV0dG9ucz1u dWxsO2lmKEYuaXNBcnJheShVKSl7Tz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz cGFuIik7Ty5jbGFzc05hbWU9ImJ1dHRvbi1ncm91cCI7UT1VLmxlbmd0aDt0aGlz Ll9hQnV0dG9ucz1bXTt0aGlzLmRlZmF1bHRIdG1sQnV0dG9uPW51bGw7Zm9yKEw9 MDtMPFE7TCsrKXtUPVVbTF07aWYoTil7Sj1uZXcgTih7bGFiZWw6VC50ZXh0fSk7 Si5hcHBlbmRUbyhPKTtQPUouZ2V0KCJlbGVtZW50Iik7aWYoVC5pc0RlZmF1bHQp e0ouYWRkQ2xhc3MoImRlZmF1bHQiKTt0aGlzLmRlZmF1bHRIdG1sQnV0dG9uPVA7 fWlmKEYuaXNGdW5jdGlvbihULmhhbmRsZXIpKXtKLnNldCgib25jbGljayIse2Zu OlQuaGFuZGxlcixvYmo6dGhpcyxzY29wZTp0aGlzfSk7fWVsc2V7aWYoRi5pc09i amVjdChULmhhbmRsZXIpJiZGLmlzRnVuY3Rpb24oVC5oYW5kbGVyLmZuKSl7Si5z ZXQoIm9uY2xpY2siLHtmbjpULmhhbmRsZXIuZm4sb2JqOigoIUYuaXNVbmRlZmlu ZWQoVC5oYW5kbGVyLm9iaikpP1QuaGFuZGxlci5vYmo6dGhpcyksc2NvcGU6KFQu aGFuZGxlci5zY29wZXx8dGhpcyl9KTt9fXRoaXMuX2FCdXR0b25zW3RoaXMuX2FC dXR0b25zLmxlbmd0aF09Sjt9ZWxzZXtQPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo ImJ1dHRvbiIpO1Auc2V0QXR0cmlidXRlKCJ0eXBlIiwiYnV0dG9uIik7aWYoVC5p c0RlZmF1bHQpe1AuY2xhc3NOYW1lPSJkZWZhdWx0Ijt0aGlzLmRlZmF1bHRIdG1s QnV0dG9uPVA7fVAuaW5uZXJIVE1MPVQudGV4dDtpZihGLmlzRnVuY3Rpb24oVC5o YW5kbGVyKSl7Qi5vbihQLCJjbGljayIsVC5oYW5kbGVyLHRoaXMsdHJ1ZSk7fWVs c2V7aWYoRi5pc09iamVjdChULmhhbmRsZXIpJiZGLmlzRnVuY3Rpb24oVC5oYW5k bGVyLmZuKSl7Qi5vbihQLCJjbGljayIsVC5oYW5kbGVyLmZuLCgoIUYuaXNVbmRl ZmluZWQoVC5oYW5kbGVyLm9iaikpP1QuaGFuZGxlci5vYmo6dGhpcyksKFQuaGFu ZGxlci5zY29wZXx8dGhpcykpO319Ty5hcHBlbmRDaGlsZChQKTt0aGlzLl9hQnV0 dG9uc1t0aGlzLl9hQnV0dG9ucy5sZW5ndGhdPVA7fVQuaHRtbEJ1dHRvbj1QO2lm KEw9PT0wKXt0aGlzLmZpcnN0QnV0dG9uPVA7fWlmKEw9PShRLTEpKXt0aGlzLmxh c3RCdXR0b249UDt9fXRoaXMuc2V0Rm9vdGVyKE8pO0k9dGhpcy5mb290ZXI7aWYo RS5pbkRvY3VtZW50KHRoaXMuZWxlbWVudCkmJiFFLmlzQW5jZXN0b3IoSyxJKSl7 Sy5hcHBlbmRDaGlsZChJKTt9dGhpcy5idXR0b25TcGFuPU87fWVsc2V7Tz10aGlz LmJ1dHRvblNwYW47ST10aGlzLmZvb3RlcjtpZihPJiZJKXtJLnJlbW92ZUNoaWxk KE8pO3RoaXMuYnV0dG9uU3Bhbj1udWxsO3RoaXMuZmlyc3RCdXR0b249bnVsbDt0 aGlzLmxhc3RCdXR0b249bnVsbDt0aGlzLmRlZmF1bHRIdG1sQnV0dG9uPW51bGw7 fX10aGlzLmNoYW5nZUNvbnRlbnRFdmVudC5maXJlKCk7fSxnZXRCdXR0b25zOmZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FCdXR0b25zfHxudWxsO30sZm9jdXNGaXJz dDpmdW5jdGlvbihLLEksTSl7dmFyIEo9dGhpcy5maXJzdEZvcm1FbGVtZW50O2lm KEkmJklbMV0pe0Iuc3RvcEV2ZW50KElbMV0pO31pZihKKXt0cnl7Si5mb2N1cygp O31jYXRjaChMKXt9fWVsc2V7aWYodGhpcy5kZWZhdWx0SHRtbEJ1dHRvbil7dGhp cy5mb2N1c0RlZmF1bHRCdXR0b24oKTt9ZWxzZXt0aGlzLmZvY3VzRmlyc3RCdXR0 b24oKTt9fX0sZm9jdXNMYXN0OmZ1bmN0aW9uKEssSSxNKXt2YXIgTj10aGlzLmNm Zy5nZXRQcm9wZXJ0eSgiYnV0dG9ucyIpLEo9dGhpcy5sYXN0Rm9ybUVsZW1lbnQ7 aWYoSSYmSVsxXSl7Qi5zdG9wRXZlbnQoSVsxXSk7fWlmKE4mJkYuaXNBcnJheShO KSl7dGhpcy5mb2N1c0xhc3RCdXR0b24oKTt9ZWxzZXtpZihKKXt0cnl7Si5mb2N1 cygpO31jYXRjaChMKXt9fX19LF9nZXRCdXR0b246ZnVuY3Rpb24oSil7dmFyIEk9 WUFIT08ud2lkZ2V0LkJ1dHRvbjtpZihJJiZKJiZKLm5vZGVOYW1lJiZKLmlkKXtK PUkuZ2V0QnV0dG9uKEouaWQpfHxKO31yZXR1cm4gSjt9LGZvY3VzRGVmYXVsdEJ1 dHRvbjpmdW5jdGlvbigpe3ZhciBJPXRoaXMuX2dldEJ1dHRvbih0aGlzLmRlZmF1 bHRIdG1sQnV0dG9uKTtpZihJKXt0cnl7SS5mb2N1cygpO31jYXRjaChKKXt9fX0s Ymx1ckJ1dHRvbnM6ZnVuY3Rpb24oKXt2YXIgTj10aGlzLmNmZy5nZXRQcm9wZXJ0 eSgiYnV0dG9ucyIpLEssTSxKLEk7aWYoTiYmRi5pc0FycmF5KE4pKXtLPU4ubGVu Z3RoO2lmKEs+MCl7ST0oSy0xKTtkb3tNPU5bSV07aWYoTSl7Sj10aGlzLl9nZXRC dXR0b24oTS5odG1sQnV0dG9uKTtpZihKKXt0cnl7Si5ibHVyKCk7fWNhdGNoKEwp e319fX13aGlsZShJLS0pO319fSxmb2N1c0ZpcnN0QnV0dG9uOmZ1bmN0aW9uKCl7 dmFyIEw9dGhpcy5jZmcuZ2V0UHJvcGVydHkoImJ1dHRvbnMiKSxLLEk7aWYoTCYm Ri5pc0FycmF5KEwpKXtLPUxbMF07aWYoSyl7ST10aGlzLl9nZXRCdXR0b24oSy5o dG1sQnV0dG9uKTtpZihJKXt0cnl7SS5mb2N1cygpO31jYXRjaChKKXt9fX19fSxm b2N1c0xhc3RCdXR0b246ZnVuY3Rpb24oKXt2YXIgTT10aGlzLmNmZy5nZXRQcm9w ZXJ0eSgiYnV0dG9ucyIpLEosTCxJO2lmKE0mJkYuaXNBcnJheShNKSl7Sj1NLmxl bmd0aDtpZihKPjApe0w9TVsoSi0xKV07aWYoTCl7ST10aGlzLl9nZXRCdXR0b24o TC5odG1sQnV0dG9uKTtpZihJKXt0cnl7SS5mb2N1cygpO31jYXRjaChLKXt9fX19 fX0sY29uZmlnUG9zdE1ldGhvZDpmdW5jdGlvbihKLEksSyl7dGhpcy5yZWdpc3Rl ckZvcm0oKTt9LHZhbGlkYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRydWU7fSxzdWJt aXQ6ZnVuY3Rpb24oKXtpZih0aGlzLnZhbGlkYXRlKCkpe3RoaXMuYmVmb3JlU3Vi bWl0RXZlbnQuZmlyZSgpO3RoaXMuZG9TdWJtaXQoKTt0aGlzLnN1Ym1pdEV2ZW50 LmZpcmUoKTtpZih0aGlzLmNmZy5nZXRQcm9wZXJ0eSgiaGlkZWFmdGVyc3VibWl0 Iikpe3RoaXMuaGlkZSgpO31yZXR1cm4gdHJ1ZTt9ZWxzZXtyZXR1cm4gZmFsc2U7 fX0sY2FuY2VsOmZ1bmN0aW9uKCl7dGhpcy5jYW5jZWxFdmVudC5maXJlKCk7dGhp cy5oaWRlKCk7fSxnZXREYXRhOmZ1bmN0aW9uKCl7dmFyIFk9dGhpcy5mb3JtLEss UixVLE0sUyxQLE8sSixWLEwsVyxaLEksTixhLFgsVDtmdW5jdGlvbiBRKGMpe3Zh ciBiPWMudGFnTmFtZS50b1VwcGVyQ2FzZSgpO3JldHVybigoYj09IklOUFVUInx8 Yj09IlRFWFRBUkVBInx8Yj09IlNFTEVDVCIpJiZjLm5hbWU9PU0pO31pZihZKXtL PVkuZWxlbWVudHM7Uj1LLmxlbmd0aDtVPXt9O2ZvcihYPTA7WDxSO1grKyl7TT1L W1hdLm5hbWU7Uz1FLmdldEVsZW1lbnRzQnkoUSwiKiIsWSk7ClA9Uy5sZW5ndGg7 aWYoUD4wKXtpZihQPT0xKXtTPVNbMF07Tz1TLnR5cGU7Sj1TLnRhZ05hbWUudG9V cHBlckNhc2UoKTtzd2l0Y2goSil7Y2FzZSJJTlBVVCI6aWYoTz09ImNoZWNrYm94 Iil7VVtNXT1TLmNoZWNrZWQ7fWVsc2V7aWYoTyE9InJhZGlvIil7VVtNXT1TLnZh bHVlO319YnJlYWs7Y2FzZSJURVhUQVJFQSI6VVtNXT1TLnZhbHVlO2JyZWFrO2Nh c2UiU0VMRUNUIjpWPVMub3B0aW9ucztMPVYubGVuZ3RoO1c9W107Zm9yKFQ9MDtU PEw7VCsrKXtaPVZbVF07aWYoWi5zZWxlY3RlZCl7ST1aLnZhbHVlO2lmKCFJfHxJ PT09IiIpe0k9Wi50ZXh0O31XW1cubGVuZ3RoXT1JO319VVtNXT1XO2JyZWFrO319 ZWxzZXtPPVNbMF0udHlwZTtzd2l0Y2goTyl7Y2FzZSJyYWRpbyI6Zm9yKFQ9MDtU PFA7VCsrKXtOPVNbVF07aWYoTi5jaGVja2VkKXtVW01dPU4udmFsdWU7YnJlYWs7 fX1icmVhaztjYXNlImNoZWNrYm94IjpXPVtdO2ZvcihUPTA7VDxQO1QrKyl7YT1T W1RdO2lmKGEuY2hlY2tlZCl7V1tXLmxlbmd0aF09YS52YWx1ZTt9fVVbTV09Vzti cmVhazt9fX19fXJldHVybiBVO30sZGVzdHJveTpmdW5jdGlvbigpe0QuY2FsbCh0 aGlzKTt0aGlzLl9hQnV0dG9ucz1udWxsO3ZhciBJPXRoaXMuZWxlbWVudC5nZXRF bGVtZW50c0J5VGFnTmFtZSgiZm9ybSIpLEo7aWYoSS5sZW5ndGg+MCl7Sj1JWzBd O2lmKEope0IucHVyZ2VFbGVtZW50KEopO2lmKEoucGFyZW50Tm9kZSl7Si5wYXJl bnROb2RlLnJlbW92ZUNoaWxkKEopO310aGlzLmZvcm09bnVsbDt9fUEuc3VwZXJj bGFzcy5kZXN0cm95LmNhbGwodGhpcyk7fSx0b1N0cmluZzpmdW5jdGlvbigpe3Jl dHVybiJEaWFsb2cgIit0aGlzLmlkO319KTt9KCkpOyhmdW5jdGlvbigpe1lBSE9P LndpZGdldC5TaW1wbGVEaWFsb2c9ZnVuY3Rpb24oRSxEKXtZQUhPTy53aWRnZXQu U2ltcGxlRGlhbG9nLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLEUs RCk7fTt2YXIgQz1ZQUhPTy51dGlsLkRvbSxCPVlBSE9PLndpZGdldC5TaW1wbGVE aWFsb2csQT17IklDT04iOntrZXk6Imljb24iLHZhbHVlOiJub25lIixzdXBwcmVz c0V2ZW50OnRydWV9LCJURVhUIjp7a2V5OiJ0ZXh0Iix2YWx1ZToiIixzdXBwcmVz c0V2ZW50OnRydWUsc3VwZXJjZWRlczpbImljb24iXX19O0IuSUNPTl9CTE9DSz0i Ymxja2ljb24iO0IuSUNPTl9BTEFSTT0iYWxydGljb24iO0IuSUNPTl9IRUxQPSJo bHBpY29uIjtCLklDT05fSU5GTz0iaW5mb2ljb24iO0IuSUNPTl9XQVJOPSJ3YXJu aWNvbiI7Qi5JQ09OX1RJUD0idGlwaWNvbiI7Qi5JQ09OX0NTU19DTEFTU05BTUU9 Inl1aS1pY29uIjtCLkNTU19TSU1QTEVESUFMT0c9Inl1aS1zaW1wbGUtZGlhbG9n IjtZQUhPTy5leHRlbmQoQixZQUhPTy53aWRnZXQuRGlhbG9nLHtpbml0RGVmYXVs dENvbmZpZzpmdW5jdGlvbigpe0Iuc3VwZXJjbGFzcy5pbml0RGVmYXVsdENvbmZp Zy5jYWxsKHRoaXMpO3RoaXMuY2ZnLmFkZFByb3BlcnR5KEEuSUNPTi5rZXkse2hh bmRsZXI6dGhpcy5jb25maWdJY29uLHZhbHVlOkEuSUNPTi52YWx1ZSxzdXBwcmVz c0V2ZW50OkEuSUNPTi5zdXBwcmVzc0V2ZW50fSk7dGhpcy5jZmcuYWRkUHJvcGVy dHkoQS5URVhULmtleSx7aGFuZGxlcjp0aGlzLmNvbmZpZ1RleHQsdmFsdWU6QS5U RVhULnZhbHVlLHN1cHByZXNzRXZlbnQ6QS5URVhULnN1cHByZXNzRXZlbnQsc3Vw ZXJjZWRlczpBLlRFWFQuc3VwZXJjZWRlc30pO30saW5pdDpmdW5jdGlvbihFLEQp e0Iuc3VwZXJjbGFzcy5pbml0LmNhbGwodGhpcyxFKTt0aGlzLmJlZm9yZUluaXRF dmVudC5maXJlKEIpO0MuYWRkQ2xhc3ModGhpcy5lbGVtZW50LEIuQ1NTX1NJTVBM RURJQUxPRyk7dGhpcy5jZmcucXVldWVQcm9wZXJ0eSgicG9zdG1ldGhvZCIsIm1h bnVhbCIpO2lmKEQpe3RoaXMuY2ZnLmFwcGx5Q29uZmlnKEQsdHJ1ZSk7fXRoaXMu YmVmb3JlUmVuZGVyRXZlbnQuc3Vic2NyaWJlKGZ1bmN0aW9uKCl7aWYoIXRoaXMu Ym9keSl7dGhpcy5zZXRCb2R5KCIiKTt9fSx0aGlzLHRydWUpO3RoaXMuaW5pdEV2 ZW50LmZpcmUoQik7fSxyZWdpc3RlckZvcm06ZnVuY3Rpb24oKXtCLnN1cGVyY2xh c3MucmVnaXN0ZXJGb3JtLmNhbGwodGhpcyk7dGhpcy5mb3JtLmlubmVySFRNTCs9 JzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IicrdGhpcy5pZCsnIiB2YWx1ZT0i Ii8+Jzt9LGNvbmZpZ0ljb246ZnVuY3Rpb24oRixFLEope3ZhciBLPUVbMF0sRD10 aGlzLmJvZHksST1CLklDT05fQ1NTX0NMQVNTTkFNRSxILEc7aWYoSyYmSyE9Im5v bmUiKXtIPUMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShJLCIqIixEKTtpZihIKXtH PUgucGFyZW50Tm9kZTtpZihHKXtHLnJlbW92ZUNoaWxkKEgpO0g9bnVsbDt9fWlm KEsuaW5kZXhPZigiLiIpPT0tMSl7SD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz cGFuIik7SC5jbGFzc05hbWU9KEkrIiAiK0spO0guaW5uZXJIVE1MPSImIzE2MDsi O31lbHNle0g9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7SC5zcmM9KHRo aXMuaW1hZ2VSb290K0spO0guY2xhc3NOYW1lPUk7fWlmKEgpe0QuaW5zZXJ0QmVm b3JlKEgsRC5maXJzdENoaWxkKTt9fX0sY29uZmlnVGV4dDpmdW5jdGlvbihFLEQs Ril7dmFyIEc9RFswXTtpZihHKXt0aGlzLnNldEJvZHkoRyk7dGhpcy5jZmcucmVm aXJlRXZlbnQoImljb24iKTt9fSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJT aW1wbGVEaWFsb2cgIit0aGlzLmlkO319KTt9KCkpOyhmdW5jdGlvbigpe1lBSE9P LndpZGdldC5Db250YWluZXJFZmZlY3Q9ZnVuY3Rpb24oRSxILEcsRCxGKXtpZigh Ril7Rj1ZQUhPTy51dGlsLkFuaW07fXRoaXMub3ZlcmxheT1FO3RoaXMuYXR0cklu PUg7dGhpcy5hdHRyT3V0PUc7dGhpcy50YXJnZXRFbGVtZW50PUR8fEUuZWxlbWVu dDt0aGlzLmFuaW1DbGFzcz1GO307dmFyIEI9WUFIT08udXRpbC5Eb20sQz1ZQUhP Ty51dGlsLkN1c3RvbUV2ZW50LEE9WUFIT08ud2lkZ2V0LkNvbnRhaW5lckVmZmVj dDtBLkZBREU9ZnVuY3Rpb24oRCxGKXt2YXIgRz1ZQUhPTy51dGlsLkVhc2luZyxJ PXthdHRyaWJ1dGVzOntvcGFjaXR5Ontmcm9tOjAsdG86MX19LGR1cmF0aW9uOkYs bWV0aG9kOkcuZWFzZUlufSxFPXthdHRyaWJ1dGVzOntvcGFjaXR5Ont0bzowfX0s ZHVyYXRpb246RixtZXRob2Q6Ry5lYXNlT3V0fSxIPW5ldyBBKEQsSSxFLEQuZWxl bWVudCk7SC5oYW5kbGVVbmRlcmxheVN0YXJ0PWZ1bmN0aW9uKCl7dmFyIEs9dGhp cy5vdmVybGF5LnVuZGVybGF5O2lmKEsmJllBSE9PLmVudi51YS5pZSl7dmFyIEo9 KEsuZmlsdGVycyYmSy5maWx0ZXJzLmxlbmd0aD4wKTtpZihKKXtCLmFkZENsYXNz KEQuZWxlbWVudCwieXVpLWVmZmVjdC1mYWRlIik7fX19O0guaGFuZGxlVW5kZXJs YXlDb21wbGV0ZT1mdW5jdGlvbigpe3ZhciBKPXRoaXMub3ZlcmxheS51bmRlcmxh eTtpZihKJiZZQUhPTy5lbnYudWEuaWUpe0IucmVtb3ZlQ2xhc3MoRC5lbGVtZW50 LCJ5dWktZWZmZWN0LWZhZGUiKTt9fTtILmhhbmRsZVN0YXJ0QW5pbWF0ZUluPWZ1 bmN0aW9uKEssSixMKXtCLmFkZENsYXNzKEwub3ZlcmxheS5lbGVtZW50LCJoaWRl LXNlbGVjdCIpO2lmKCFMLm92ZXJsYXkudW5kZXJsYXkpe0wub3ZlcmxheS5jZmcu cmVmaXJlRXZlbnQoInVuZGVybGF5Iik7fUwuaGFuZGxlVW5kZXJsYXlTdGFydCgp O0wub3ZlcmxheS5fc2V0RG9tVmlzaWJpbGl0eSh0cnVlKTtCLnNldFN0eWxlKEwu b3ZlcmxheS5lbGVtZW50LCJvcGFjaXR5IiwwKTt9O0guaGFuZGxlQ29tcGxldGVB bmltYXRlSW49ZnVuY3Rpb24oSyxKLEwpe0IucmVtb3ZlQ2xhc3MoTC5vdmVybGF5 LmVsZW1lbnQsImhpZGUtc2VsZWN0Iik7aWYoTC5vdmVybGF5LmVsZW1lbnQuc3R5 bGUuZmlsdGVyKXtMLm92ZXJsYXkuZWxlbWVudC5zdHlsZS5maWx0ZXI9bnVsbDt9 TC5oYW5kbGVVbmRlcmxheUNvbXBsZXRlKCk7TC5vdmVybGF5LmNmZy5yZWZpcmVF dmVudCgiaWZyYW1lIik7TC5hbmltYXRlSW5Db21wbGV0ZUV2ZW50LmZpcmUoKTt9 O0guaGFuZGxlU3RhcnRBbmltYXRlT3V0PWZ1bmN0aW9uKEssSixMKXtCLmFkZENs YXNzKEwub3ZlcmxheS5lbGVtZW50LCJoaWRlLXNlbGVjdCIpO0wuaGFuZGxlVW5k ZXJsYXlTdGFydCgpO307SC5oYW5kbGVDb21wbGV0ZUFuaW1hdGVPdXQ9ZnVuY3Rp b24oSyxKLEwpe0IucmVtb3ZlQ2xhc3MoTC5vdmVybGF5LmVsZW1lbnQsImhpZGUt c2VsZWN0Iik7aWYoTC5vdmVybGF5LmVsZW1lbnQuc3R5bGUuZmlsdGVyKXtMLm92 ZXJsYXkuZWxlbWVudC5zdHlsZS5maWx0ZXI9bnVsbDt9TC5vdmVybGF5Ll9zZXRE b21WaXNpYmlsaXR5KGZhbHNlKTtCLnNldFN0eWxlKEwub3ZlcmxheS5lbGVtZW50 LCJvcGFjaXR5IiwxKTtMLmhhbmRsZVVuZGVybGF5Q29tcGxldGUoKTtMLm92ZXJs YXkuY2ZnLnJlZmlyZUV2ZW50KCJpZnJhbWUiKTtMLmFuaW1hdGVPdXRDb21wbGV0 ZUV2ZW50LmZpcmUoKTt9O0guaW5pdCgpO3JldHVybiBIO307QS5TTElERT1mdW5j dGlvbihGLEQpe3ZhciBJPVlBSE9PLnV0aWwuRWFzaW5nLEw9Ri5jZmcuZ2V0UHJv cGVydHkoIngiKXx8Qi5nZXRYKEYuZWxlbWVudCksSz1GLmNmZy5nZXRQcm9wZXJ0 eSgieSIpfHxCLmdldFkoRi5lbGVtZW50KSxNPUIuZ2V0Q2xpZW50V2lkdGgoKSxI PUYuZWxlbWVudC5vZmZzZXRXaWR0aCxKPXthdHRyaWJ1dGVzOntwb2ludHM6e3Rv OltMLEtdfX0sZHVyYXRpb246RCxtZXRob2Q6SS5lYXNlSW59LEU9e2F0dHJpYnV0 ZXM6e3BvaW50czp7dG86WyhNKzI1KSxLXX19LGR1cmF0aW9uOkQsbWV0aG9kOkku ZWFzZU91dH0sRz1uZXcgQShGLEosRSxGLmVsZW1lbnQsWUFIT08udXRpbC5Nb3Rp b24pO0cuaGFuZGxlU3RhcnRBbmltYXRlSW49ZnVuY3Rpb24oTyxOLFApe1Aub3Zl cmxheS5lbGVtZW50LnN0eWxlLmxlZnQ9KCgtMjUpLUgpKyJweCI7UC5vdmVybGF5 LmVsZW1lbnQuc3R5bGUudG9wPUsrInB4Ijt9O0cuaGFuZGxlVHdlZW5BbmltYXRl SW49ZnVuY3Rpb24oUSxQLFIpe3ZhciBTPUIuZ2V0WFkoUi5vdmVybGF5LmVsZW1l bnQpLE89U1swXSxOPVNbMV07aWYoQi5nZXRTdHlsZShSLm92ZXJsYXkuZWxlbWVu dCwidmlzaWJpbGl0eSIpPT0iaGlkZGVuIiYmTzxMKXtSLm92ZXJsYXkuX3NldERv bVZpc2liaWxpdHkodHJ1ZSk7fVIub3ZlcmxheS5jZmcuc2V0UHJvcGVydHkoInh5 IixbTyxOXSx0cnVlKTtSLm92ZXJsYXkuY2ZnLnJlZmlyZUV2ZW50KCJpZnJhbWUi KTt9O0cuaGFuZGxlQ29tcGxldGVBbmltYXRlSW49ZnVuY3Rpb24oTyxOLFApe1Au b3ZlcmxheS5jZmcuc2V0UHJvcGVydHkoInh5IixbTCxLXSx0cnVlKTtQLnN0YXJ0 WD1MO1Auc3RhcnRZPUs7UC5vdmVybGF5LmNmZy5yZWZpcmVFdmVudCgiaWZyYW1l Iik7UC5hbmltYXRlSW5Db21wbGV0ZUV2ZW50LmZpcmUoKTt9O0cuaGFuZGxlU3Rh cnRBbmltYXRlT3V0PWZ1bmN0aW9uKE8sTixSKXt2YXIgUD1CLmdldFZpZXdwb3J0 V2lkdGgoKSxTPUIuZ2V0WFkoUi5vdmVybGF5LmVsZW1lbnQpLFE9U1sxXTtSLmFu aW1PdXQuYXR0cmlidXRlcy5wb2ludHMudG89WyhQKzI1KSxRXTt9O0cuaGFuZGxl VHdlZW5BbmltYXRlT3V0PWZ1bmN0aW9uKFAsTyxRKXt2YXIgUz1CLmdldFhZKFEu b3ZlcmxheS5lbGVtZW50KSxOPVNbMF0sUj1TWzFdO1Eub3ZlcmxheS5jZmcuc2V0 UHJvcGVydHkoInh5IixbTixSXSx0cnVlKTtRLm92ZXJsYXkuY2ZnLnJlZmlyZUV2 ZW50KCJpZnJhbWUiKTt9O0cuaGFuZGxlQ29tcGxldGVBbmltYXRlT3V0PWZ1bmN0 aW9uKE8sTixQKXtQLm92ZXJsYXkuX3NldERvbVZpc2liaWxpdHkoZmFsc2UpO1Au b3ZlcmxheS5jZmcuc2V0UHJvcGVydHkoInh5IixbTCxLXSk7UC5hbmltYXRlT3V0 Q29tcGxldGVFdmVudC5maXJlKCk7fTtHLmluaXQoKTtyZXR1cm4gRzt9O0EucHJv dG90eXBlPXtpbml0OmZ1bmN0aW9uKCl7dGhpcy5iZWZvcmVBbmltYXRlSW5FdmVu dD10aGlzLmNyZWF0ZUV2ZW50KCJiZWZvcmVBbmltYXRlSW4iKTt0aGlzLmJlZm9y ZUFuaW1hdGVJbkV2ZW50LnNpZ25hdHVyZT1DLkxJU1Q7dGhpcy5iZWZvcmVBbmlt YXRlT3V0RXZlbnQ9dGhpcy5jcmVhdGVFdmVudCgiYmVmb3JlQW5pbWF0ZU91dCIp Owp0aGlzLmJlZm9yZUFuaW1hdGVPdXRFdmVudC5zaWduYXR1cmU9Qy5MSVNUO3Ro aXMuYW5pbWF0ZUluQ29tcGxldGVFdmVudD10aGlzLmNyZWF0ZUV2ZW50KCJhbmlt YXRlSW5Db21wbGV0ZSIpO3RoaXMuYW5pbWF0ZUluQ29tcGxldGVFdmVudC5zaWdu YXR1cmU9Qy5MSVNUO3RoaXMuYW5pbWF0ZU91dENvbXBsZXRlRXZlbnQ9dGhpcy5j cmVhdGVFdmVudCgiYW5pbWF0ZU91dENvbXBsZXRlIik7dGhpcy5hbmltYXRlT3V0 Q29tcGxldGVFdmVudC5zaWduYXR1cmU9Qy5MSVNUO3RoaXMuYW5pbUluPW5ldyB0 aGlzLmFuaW1DbGFzcyh0aGlzLnRhcmdldEVsZW1lbnQsdGhpcy5hdHRySW4uYXR0 cmlidXRlcyx0aGlzLmF0dHJJbi5kdXJhdGlvbix0aGlzLmF0dHJJbi5tZXRob2Qp O3RoaXMuYW5pbUluLm9uU3RhcnQuc3Vic2NyaWJlKHRoaXMuaGFuZGxlU3RhcnRB bmltYXRlSW4sdGhpcyk7dGhpcy5hbmltSW4ub25Ud2Vlbi5zdWJzY3JpYmUodGhp cy5oYW5kbGVUd2VlbkFuaW1hdGVJbix0aGlzKTt0aGlzLmFuaW1Jbi5vbkNvbXBs ZXRlLnN1YnNjcmliZSh0aGlzLmhhbmRsZUNvbXBsZXRlQW5pbWF0ZUluLHRoaXMp O3RoaXMuYW5pbU91dD1uZXcgdGhpcy5hbmltQ2xhc3ModGhpcy50YXJnZXRFbGVt ZW50LHRoaXMuYXR0ck91dC5hdHRyaWJ1dGVzLHRoaXMuYXR0ck91dC5kdXJhdGlv bix0aGlzLmF0dHJPdXQubWV0aG9kKTt0aGlzLmFuaW1PdXQub25TdGFydC5zdWJz Y3JpYmUodGhpcy5oYW5kbGVTdGFydEFuaW1hdGVPdXQsdGhpcyk7dGhpcy5hbmlt T3V0Lm9uVHdlZW4uc3Vic2NyaWJlKHRoaXMuaGFuZGxlVHdlZW5BbmltYXRlT3V0 LHRoaXMpO3RoaXMuYW5pbU91dC5vbkNvbXBsZXRlLnN1YnNjcmliZSh0aGlzLmhh bmRsZUNvbXBsZXRlQW5pbWF0ZU91dCx0aGlzKTt9LGFuaW1hdGVJbjpmdW5jdGlv bigpe3RoaXMuYmVmb3JlQW5pbWF0ZUluRXZlbnQuZmlyZSgpO3RoaXMuYW5pbUlu LmFuaW1hdGUoKTt9LGFuaW1hdGVPdXQ6ZnVuY3Rpb24oKXt0aGlzLmJlZm9yZUFu aW1hdGVPdXRFdmVudC5maXJlKCk7dGhpcy5hbmltT3V0LmFuaW1hdGUoKTt9LGhh bmRsZVN0YXJ0QW5pbWF0ZUluOmZ1bmN0aW9uKEUsRCxGKXt9LGhhbmRsZVR3ZWVu QW5pbWF0ZUluOmZ1bmN0aW9uKEUsRCxGKXt9LGhhbmRsZUNvbXBsZXRlQW5pbWF0 ZUluOmZ1bmN0aW9uKEUsRCxGKXt9LGhhbmRsZVN0YXJ0QW5pbWF0ZU91dDpmdW5j dGlvbihFLEQsRil7fSxoYW5kbGVUd2VlbkFuaW1hdGVPdXQ6ZnVuY3Rpb24oRSxE LEYpe30saGFuZGxlQ29tcGxldGVBbmltYXRlT3V0OmZ1bmN0aW9uKEUsRCxGKXt9 LHRvU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIEQ9IkNvbnRhaW5lckVmZmVjdCI7aWYo dGhpcy5vdmVybGF5KXtEKz0iIFsiK3RoaXMub3ZlcmxheS50b1N0cmluZygpKyJd Ijt9cmV0dXJuIEQ7fX07WUFIT08ubGFuZy5hdWdtZW50UHJvdG8oQSxZQUhPTy51 dGlsLkV2ZW50UHJvdmlkZXIpO30pKCk7WUFIT08ucmVnaXN0ZXIoImNvbnRhaW5l ciIsWUFIT08ud2lkZ2V0Lk1vZHVsZSx7dmVyc2lvbjoiMi43LjAiLGJ1aWxkOiIx Nzk5In0pOy8qCkNvcHlyaWdodCAoYykgMjAwOSwgWWFob28hIEluYy4gQWxsIHJp Z2h0cyByZXNlcnZlZC4KQ29kZSBsaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vu c2U6Cmh0dHA6Ly9kZXZlbG9wZXIueWFob28ubmV0L3l1aS9saWNlbnNlLnR4dAp2 ZXJzaW9uOiAyLjcuMAoqLwpZQUhPTy51dGlsLkhpc3Rvcnk9KGZ1bmN0aW9uKCl7 dmFyIEM9bnVsbDt2YXIgSz1udWxsO3ZhciBGPWZhbHNlO3ZhciBEPVtdO3ZhciBC PVtdO2Z1bmN0aW9uIEkoKXt2YXIgTSxMO0w9dG9wLmxvY2F0aW9uLmhyZWY7TT1M LmluZGV4T2YoIiMiKTtyZXR1cm4gTT49MD9MLnN1YnN0cihNKzEpOm51bGw7fWZ1 bmN0aW9uIEEoKXt2YXIgTSxOLE89W10sTD1bXTtmb3IoTSBpbiBEKXtpZihZQUhP Ty5sYW5nLmhhc093blByb3BlcnR5KEQsTSkpe049RFtNXTtPLnB1c2goTSsiPSIr Ti5pbml0aWFsU3RhdGUpO0wucHVzaChNKyI9IitOLmN1cnJlbnRTdGF0ZSk7fX1L LnZhbHVlPU8uam9pbigiJiIpKyJ8IitMLmpvaW4oIiYiKTtpZihZQUhPTy5lbnYu dWEud2Via2l0KXtLLnZhbHVlKz0ifCIrQi5qb2luKCIsIik7fX1mdW5jdGlvbiBI KEwpe3ZhciBRLFIsTSxPLFAsVCxTLE47aWYoIUwpe2ZvcihNIGluIEQpe2lmKFlB SE9PLmxhbmcuaGFzT3duUHJvcGVydHkoRCxNKSl7Tz1EW01dO08uY3VycmVudFN0 YXRlPU8uaW5pdGlhbFN0YXRlO08ub25TdGF0ZUNoYW5nZSh1bmVzY2FwZShPLmN1 cnJlbnRTdGF0ZSkpO319cmV0dXJuO31QPVtdO1Q9TC5zcGxpdCgiJiIpO2ZvcihR PTAsUj1ULmxlbmd0aDtRPFI7USsrKXtTPVRbUV0uc3BsaXQoIj0iKTtpZihTLmxl bmd0aD09PTIpe009U1swXTtOPVNbMV07UFtNXT1OO319Zm9yKE0gaW4gRCl7aWYo WUFIT08ubGFuZy5oYXNPd25Qcm9wZXJ0eShELE0pKXtPPURbTV07Tj1QW01dO2lm KCFOfHxPLmN1cnJlbnRTdGF0ZSE9PU4pe08uY3VycmVudFN0YXRlPU58fE8uaW5p dGlhbFN0YXRlO08ub25TdGF0ZUNoYW5nZSh1bmVzY2FwZShPLmN1cnJlbnRTdGF0 ZSkpO319fX1mdW5jdGlvbiBKKE8pe3ZhciBMLE47TD0nPGh0bWw+PGJvZHk+PGRp diBpZD0ic3RhdGUiPicrTysiPC9kaXY+PC9ib2R5PjwvaHRtbD4iO3RyeXtOPUMu Y29udGVudFdpbmRvdy5kb2N1bWVudDtOLm9wZW4oKTtOLndyaXRlKEwpO04uY2xv c2UoKTtyZXR1cm4gdHJ1ZTt9Y2F0Y2goTSl7cmV0dXJuIGZhbHNlO319ZnVuY3Rp b24gRygpe3ZhciBPLEwsTixNO2lmKCFDLmNvbnRlbnRXaW5kb3d8fCFDLmNvbnRl bnRXaW5kb3cuZG9jdW1lbnQpe3NldFRpbWVvdXQoRywxMCk7cmV0dXJuO31PPUMu Y29udGVudFdpbmRvdy5kb2N1bWVudDtMPU8uZ2V0RWxlbWVudEJ5SWQoInN0YXRl Iik7Tj1MP0wuaW5uZXJUZXh0Om51bGw7TT1JKCk7c2V0SW50ZXJ2YWwoZnVuY3Rp b24oKXt2YXIgVSxRLFIsUyxULFA7Tz1DLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7 TD1PLmdldEVsZW1lbnRCeUlkKCJzdGF0ZSIpO1U9TD9MLmlubmVyVGV4dDpudWxs O1Q9SSgpO2lmKFUhPT1OKXtOPVU7SChOKTtpZighTil7UT1bXTtmb3IoUiBpbiBE KXtpZihZQUhPTy5sYW5nLmhhc093blByb3BlcnR5KEQsUikpe1M9RFtSXTtRLnB1 c2goUisiPSIrUy5pbml0aWFsU3RhdGUpO319VD1RLmpvaW4oIiYiKTt9ZWxzZXtU PU47fXRvcC5sb2NhdGlvbi5oYXNoPVQ7TT1UO0EoKTt9ZWxzZXtpZihUIT09TSl7 TT1UO0ooVCk7fX19LDUwKTtGPXRydWU7WUFIT08udXRpbC5IaXN0b3J5Lm9uTG9h ZEV2ZW50LmZpcmUoKTt9ZnVuY3Rpb24gRSgpe3ZhciBTLFUsUSxXLE0sTyxWLFAs VCxOLEwsUjtRPUsudmFsdWUuc3BsaXQoInwiKTtpZihRLmxlbmd0aD4xKXtWPVFb MF0uc3BsaXQoIiYiKTtmb3IoUz0wLFU9Vi5sZW5ndGg7UzxVO1MrKyl7Vz1WW1Nd LnNwbGl0KCI9Iik7aWYoVy5sZW5ndGg9PT0yKXtNPVdbMF07UD1XWzFdO089RFtN XTtpZihPKXtPLmluaXRpYWxTdGF0ZT1QO319fVQ9UVsxXS5zcGxpdCgiJiIpO2Zv cihTPTAsVT1ULmxlbmd0aDtTPFU7UysrKXtXPVRbU10uc3BsaXQoIj0iKTtpZihX Lmxlbmd0aD49Mil7TT1XWzBdO049V1sxXTtPPURbTV07aWYoTyl7Ty5jdXJyZW50 U3RhdGU9Tjt9fX19aWYoUS5sZW5ndGg+Mil7Qj1RWzJdLnNwbGl0KCIsIik7fWlm KFlBSE9PLmVudi51YS5pZSl7aWYodHlwZW9mIGRvY3VtZW50LmRvY3VtZW50TW9k ZT09PSJ1bmRlZmluZWQifHxkb2N1bWVudC5kb2N1bWVudE1vZGU8OCl7RygpO31l bHNle1lBSE9PLnV0aWwuRXZlbnQub24odG9wLCJoYXNoY2hhbmdlIixmdW5jdGlv bigpe3ZhciBYPUkoKTtIKFgpO0EoKTt9KTtGPXRydWU7WUFIT08udXRpbC5IaXN0 b3J5Lm9uTG9hZEV2ZW50LmZpcmUoKTt9fWVsc2V7TD1oaXN0b3J5Lmxlbmd0aDtS PUkoKTtzZXRJbnRlcnZhbChmdW5jdGlvbigpe3ZhciBaLFgsWTtYPUkoKTtZPWhp c3RvcnkubGVuZ3RoO2lmKFghPT1SKXtSPVg7TD1ZO0goUik7QSgpO31lbHNle2lm KFkhPT1MJiZZQUhPTy5lbnYudWEud2Via2l0KXtSPVg7TD1ZO1o9QltMLTFdO0go Wik7QSgpO319fSw1MCk7Rj10cnVlO1lBSE9PLnV0aWwuSGlzdG9yeS5vbkxvYWRF dmVudC5maXJlKCk7fX1yZXR1cm57b25Mb2FkRXZlbnQ6bmV3IFlBSE9PLnV0aWwu Q3VzdG9tRXZlbnQoIm9uTG9hZCIpLG9uUmVhZHk6ZnVuY3Rpb24oTSxOLEwpe2lm KEYpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgTz13aW5kb3c7aWYoTCl7aWYo TD09PXRydWUpe089Tjt9ZWxzZXtPPUw7fX1NLmNhbGwoTywib25Mb2FkIixbXSxO KTt9LDApO31lbHNle1lBSE9PLnV0aWwuSGlzdG9yeS5vbkxvYWRFdmVudC5zdWJz Y3JpYmUoTSxOLEwpO319LHJlZ2lzdGVyOmZ1bmN0aW9uKE8sTCxRLFIsTil7dmFy IFAsTTtpZih0eXBlb2YgTyE9PSJzdHJpbmcifHxZQUhPTy5sYW5nLnRyaW0oTyk9 PT0iInx8dHlwZW9mIEwhPT0ic3RyaW5nInx8dHlwZW9mIFEhPT0iZnVuY3Rpb24i KXt0aHJvdyBuZXcgRXJyb3IoIk1pc3Npbmcgb3IgaW52YWxpZCBhcmd1bWVudCIp O31pZihEW09dKXtyZXR1cm47fWlmKEYpe3Rocm93IG5ldyBFcnJvcigiQWxsIG1v ZHVsZXMgbXVzdCBiZSByZWdpc3RlcmVkIGJlZm9yZSBjYWxsaW5nIFlBSE9PLnV0 aWwuSGlzdG9yeS5pbml0aWFsaXplIik7fU89ZXNjYXBlKE8pO0w9ZXNjYXBlKEwp O1A9bnVsbDtpZihOPT09dHJ1ZSl7UD1SO31lbHNle1A9Tjt9TT1mdW5jdGlvbihT KXtyZXR1cm4gUS5jYWxsKFAsUyxSKTt9O0RbT109e25hbWU6Tyxpbml0aWFsU3Rh dGU6TCxjdXJyZW50U3RhdGU6TCxvblN0YXRlQ2hhbmdlOk19O30saW5pdGlhbGl6 ZTpmdW5jdGlvbihMLE0pe2lmKEYpe3JldHVybjt9aWYoWUFIT08uZW52LnVhLm9w ZXJhJiZ0eXBlb2YgaGlzdG9yeS5uYXZpZ2F0aW9uTW9kZSE9PSJ1bmRlZmluZWQi KXtoaXN0b3J5Lm5hdmlnYXRpb25Nb2RlPSJjb21wYXRpYmxlIjt9aWYodHlwZW9m IEw9PT0ic3RyaW5nIil7TD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChMKTt9aWYo IUx8fEwudGFnTmFtZS50b1VwcGVyQ2FzZSgpIT09IlRFWFRBUkVBIiYmKEwudGFn TmFtZS50b1VwcGVyQ2FzZSgpIT09IklOUFVUInx8TC50eXBlIT09ImhpZGRlbiIm JkwudHlwZSE9PSJ0ZXh0Iikpe3Rocm93IG5ldyBFcnJvcigiTWlzc2luZyBvciBp bnZhbGlkIGFyZ3VtZW50Iik7fUs9TDtpZihZQUhPTy5lbnYudWEuaWUmJih0eXBl b2YgZG9jdW1lbnQuZG9jdW1lbnRNb2RlPT09InVuZGVmaW5lZCJ8fGRvY3VtZW50 LmRvY3VtZW50TW9kZTw4KSl7aWYodHlwZW9mIE09PT0ic3RyaW5nIil7TT1kb2N1 bWVudC5nZXRFbGVtZW50QnlJZChNKTt9aWYoIU18fE0udGFnTmFtZS50b1VwcGVy Q2FzZSgpIT09IklGUkFNRSIpe3Rocm93IG5ldyBFcnJvcigiTWlzc2luZyBvciBp bnZhbGlkIGFyZ3VtZW50Iik7fUM9TTt9WUFIT08udXRpbC5FdmVudC5vbkRPTVJl YWR5KEUpO30sbmF2aWdhdGU6ZnVuY3Rpb24oTSxOKXt2YXIgTDtpZih0eXBlb2Yg TSE9PSJzdHJpbmcifHx0eXBlb2YgTiE9PSJzdHJpbmciKXt0aHJvdyBuZXcgRXJy b3IoIk1pc3Npbmcgb3IgaW52YWxpZCBhcmd1bWVudCIpO31MPXt9O0xbTV09Tjty ZXR1cm4gWUFIT08udXRpbC5IaXN0b3J5Lm11bHRpTmF2aWdhdGUoTCk7fSxtdWx0 aU5hdmlnYXRlOmZ1bmN0aW9uKE0pe3ZhciBMLE4sUCxPLFE7aWYodHlwZW9mIE0h PT0ib2JqZWN0Iil7dGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIG9yIGludmFsaWQg YXJndW1lbnQiKTt9aWYoIUYpe3Rocm93IG5ldyBFcnJvcigiVGhlIEJyb3dzZXIg SGlzdG9yeSBNYW5hZ2VyIGlzIG5vdCBpbml0aWFsaXplZCIpO31mb3IoTiBpbiBN KXtpZighRFtOXSl7dGhyb3cgbmV3IEVycm9yKCJUaGUgZm9sbG93aW5nIG1vZHVs ZSBoYXMgbm90IGJlZW4gcmVnaXN0ZXJlZDogIitOKTt9fUw9W107Zm9yKE4gaW4g RCl7aWYoWUFIT08ubGFuZy5oYXNPd25Qcm9wZXJ0eShELE4pKXtQPURbTl07aWYo WUFIT08ubGFuZy5oYXNPd25Qcm9wZXJ0eShNLE4pKXtPPU1bdW5lc2NhcGUoTild O31lbHNle089dW5lc2NhcGUoUC5jdXJyZW50U3RhdGUpO31OPWVzY2FwZShOKTtP PWVzY2FwZShPKTtMLnB1c2goTisiPSIrTyk7fX1RPUwuam9pbigiJiIpO2lmKFlB SE9PLmVudi51YS5pZSYmKHR5cGVvZiBkb2N1bWVudC5kb2N1bWVudE1vZGU9PT0i dW5kZWZpbmVkInx8ZG9jdW1lbnQuZG9jdW1lbnRNb2RlPDgpKXtyZXR1cm4gSihR KTt9ZWxzZXt0b3AubG9jYXRpb24uaGFzaD1RO2lmKFlBSE9PLmVudi51YS53ZWJr aXQpe0JbaGlzdG9yeS5sZW5ndGhdPVE7QSgpO31yZXR1cm4gdHJ1ZTt9fSxnZXRD dXJyZW50U3RhdGU6ZnVuY3Rpb24oTCl7dmFyIE07aWYodHlwZW9mIEwhPT0ic3Ry aW5nIil7dGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIG9yIGludmFsaWQgYXJndW1l bnQiKTt9aWYoIUYpe3Rocm93IG5ldyBFcnJvcigiVGhlIEJyb3dzZXIgSGlzdG9y eSBNYW5hZ2VyIGlzIG5vdCBpbml0aWFsaXplZCIpO31NPURbTF07aWYoIU0pe3Ro cm93IG5ldyBFcnJvcigiTm8gc3VjaCByZWdpc3RlcmVkIG1vZHVsZTogIitMKTt9 cmV0dXJuIHVuZXNjYXBlKE0uY3VycmVudFN0YXRlKTt9LGdldEJvb2ttYXJrZWRT dGF0ZTpmdW5jdGlvbihRKXt2YXIgUCxNLEwsUyxOLFIsTztpZih0eXBlb2YgUSE9 PSJzdHJpbmciKXt0aHJvdyBuZXcgRXJyb3IoIk1pc3Npbmcgb3IgaW52YWxpZCBh cmd1bWVudCIpO31MPXRvcC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIiMiKTtpZihM Pj0wKXtTPXRvcC5sb2NhdGlvbi5ocmVmLnN1YnN0cihMKzEpO049Uy5zcGxpdCgi JiIpO2ZvcihQPTAsTT1OLmxlbmd0aDtQPE07UCsrKXtSPU5bUF0uc3BsaXQoIj0i KTtpZihSLmxlbmd0aD09PTIpe089UlswXTtpZihPPT09USl7cmV0dXJuIHVuZXNj YXBlKFJbMV0pO319fX1yZXR1cm4gbnVsbDt9LGdldFF1ZXJ5U3RyaW5nUGFyYW1l dGVyOmZ1bmN0aW9uKFEsTil7dmFyIE8sTSxMLFMsUixQO049Tnx8dG9wLmxvY2F0 aW9uLmhyZWY7TD1OLmluZGV4T2YoIj8iKTtTPUw+PTA/Ti5zdWJzdHIoTCsxKTpO O0w9Uy5sYXN0SW5kZXhPZigiIyIpO1M9TD49MD9TLnN1YnN0cigwLEwpOlM7Uj1T LnNwbGl0KCImIik7Zm9yKE89MCxNPVIubGVuZ3RoO088TTtPKyspe1A9UltPXS5z cGxpdCgiPSIpO2lmKFAubGVuZ3RoPj0yKXtpZihQWzBdPT09USl7cmV0dXJuIHVu ZXNjYXBlKFBbMV0pO319fXJldHVybiBudWxsO319O30pKCk7WUFIT08ucmVnaXN0 ZXIoImhpc3RvcnkiLFlBSE9PLnV0aWwuSGlzdG9yeSx7dmVyc2lvbjoiMi43LjAi LGJ1aWxkOiIxNzk5In0pOy8qCkNvcHlyaWdodCAoYykgMjAwOSwgWWFob28hIElu Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQ29kZSBsaWNlbnNlZCB1bmRlciB0aGUg QlNEIExpY2Vuc2U6Cmh0dHA6Ly9kZXZlbG9wZXIueWFob28ubmV0L3l1aS9saWNl bnNlLnR4dAp2ZXJzaW9uOiAyLjcuMAoqLwpZQUhPTy5sYW5nLkpTT049KGZ1bmN0 aW9uKCl7dmFyIGw9WUFIT08ubGFuZyxfVU5JQ09ERV9FWENFUFRJT05TPS9bXHUw MDAwXHUwMGFkXHUwNjAwLVx1MDYwNFx1MDcwZlx1MTdiNFx1MTdiNVx1MjAwYy1c dTIwMGZcdTIwMjgtXHUyMDJmXHUyMDYwLVx1MjA2Zlx1ZmVmZlx1ZmZmMC1cdWZm ZmZdL2csX0VTQ0FQRVM9L1xcKD86WyJcXFwvYmZucnRdfHVbMC05YS1mQS1GXXs0 fSkvZyxfVkFMVUVTPS8iW14iXFxcblxyXSoifHRydWV8ZmFsc2V8bnVsbHwtP1xk Kyg/OlwuXGQqKT8oPzpbZUVdWytcLV0/XGQrKT8vZyxfQlJBQ0tFVFM9Lyg/Ol58 OnwsKSg/OlxzKlxbKSsvZyxfSU5WQUxJRD0vXltcXSw6e31cc10qJC8sX1NQRUNJ QUxfQ0hBUlM9L1tcXFwiXHgwMC1ceDFmXHg3Zi1ceDlmXHUwMGFkXHUwNjAwLVx1 MDYwNFx1MDcwZlx1MTdiNFx1MTdiNVx1MjAwYy1cdTIwMGZcdTIwMjgtXHUyMDJm XHUyMDYwLVx1MjA2Zlx1ZmVmZlx1ZmZmMC1cdWZmZmZdL2csX0NIQVJTPXsiXGIi OiJcXGIiLCJcdCI6IlxcdCIsIlxuIjoiXFxuIiwiXGYiOiJcXGYiLCJcciI6Ilxc ciIsJyInOidcXCInLCJcXCI6IlxcXFwifTtmdW5jdGlvbiBfcmV2aXZlKGRhdGEs cmV2aXZlcil7dmFyIHdhbGs9ZnVuY3Rpb24obyxrZXkpe3ZhciBrLHYsdmFsdWU9 b1trZXldO2lmKHZhbHVlJiZ0eXBlb2YgdmFsdWU9PT0ib2JqZWN0Iil7Zm9yKGsg aW4gdmFsdWUpe2lmKGwuaGFzT3duUHJvcGVydHkodmFsdWUsaykpe3Y9d2Fsayh2 YWx1ZSxrKTtpZih2PT09dW5kZWZpbmVkKXtkZWxldGUgdmFsdWVba107fWVsc2V7 dmFsdWVba109djt9fX19cmV0dXJuIHJldml2ZXIuY2FsbChvLGtleSx2YWx1ZSk7 fTtyZXR1cm4gdHlwZW9mIHJldml2ZXI9PT0iZnVuY3Rpb24iP3dhbGsoeyIiOmRh dGF9LCIiKTpkYXRhO31mdW5jdGlvbiBfY2hhcihjKXtpZighX0NIQVJTW2NdKXtf Q0hBUlNbY109IlxcdSIrKCIwMDAwIisoKyhjLmNoYXJDb2RlQXQoMCkpKS50b1N0 cmluZygxNikpLnNsaWNlKC00KTt9cmV0dXJuIF9DSEFSU1tjXTt9ZnVuY3Rpb24g X3ByZXBhcmUocyl7cmV0dXJuIHMucmVwbGFjZShfVU5JQ09ERV9FWENFUFRJT05T LF9jaGFyKTt9ZnVuY3Rpb24gX2lzVmFsaWQoc3RyKXtyZXR1cm4gbC5pc1N0cmlu ZyhzdHIpJiZfSU5WQUxJRC50ZXN0KHN0ci5yZXBsYWNlKF9FU0NBUEVTLCJAIiku cmVwbGFjZShfVkFMVUVTLCJdIikucmVwbGFjZShfQlJBQ0tFVFMsIiIpKTt9ZnVu Y3Rpb24gX3N0cmluZyhzKXtyZXR1cm4nIicrcy5yZXBsYWNlKF9TUEVDSUFMX0NI QVJTLF9jaGFyKSsnIic7fWZ1bmN0aW9uIF9zdHJpbmdpZnkoaCxrZXksZCx3LHBz dGFjayl7dmFyIG89dHlwZW9mIHc9PT0iZnVuY3Rpb24iP3cuY2FsbChoLGtleSxo W2tleV0pOmhba2V5XSxpLGxlbixqLGssdixpc0FycmF5LGE7aWYobyBpbnN0YW5j ZW9mIERhdGUpe289bC5KU09OLmRhdGVUb1N0cmluZyhvKTt9ZWxzZXtpZihvIGlu c3RhbmNlb2YgU3RyaW5nfHxvIGluc3RhbmNlb2YgQm9vbGVhbnx8byBpbnN0YW5j ZW9mIE51bWJlcil7bz1vLnZhbHVlT2YoKTt9fXN3aXRjaCh0eXBlb2Ygbyl7Y2Fz ZSJzdHJpbmciOnJldHVybiBfc3RyaW5nKG8pO2Nhc2UibnVtYmVyIjpyZXR1cm4g aXNGaW5pdGUobyk/U3RyaW5nKG8pOiJudWxsIjtjYXNlImJvb2xlYW4iOnJldHVy biBTdHJpbmcobyk7Y2FzZSJvYmplY3QiOmlmKG89PT1udWxsKXtyZXR1cm4ibnVs bCI7fWZvcihpPXBzdGFjay5sZW5ndGgtMTtpPj0wOy0taSl7aWYocHN0YWNrW2ld PT09byl7cmV0dXJuIm51bGwiO319cHN0YWNrW3BzdGFjay5sZW5ndGhdPW87YT1b XTtpc0FycmF5PWwuaXNBcnJheShvKTtpZihkPjApe2lmKGlzQXJyYXkpe2Zvcihp PW8ubGVuZ3RoLTE7aT49MDstLWkpe2FbaV09X3N0cmluZ2lmeShvLGksZC0xLHcs cHN0YWNrKXx8Im51bGwiO319ZWxzZXtqPTA7aWYobC5pc0FycmF5KHcpKXtmb3Io aT0wLGxlbj13Lmxlbmd0aDtpPGxlbjsrK2kpe2s9d1tpXTt2PV9zdHJpbmdpZnko byxrLGQtMSx3LHBzdGFjayk7aWYodil7YVtqKytdPV9zdHJpbmcoaykrIjoiK3Y7 fX19ZWxzZXtmb3IoayBpbiBvKXtpZih0eXBlb2Ygaz09PSJzdHJpbmciJiZsLmhh c093blByb3BlcnR5KG8saykpe3Y9X3N0cmluZ2lmeShvLGssZC0xLHcscHN0YWNr KTtpZih2KXthW2orK109X3N0cmluZyhrKSsiOiIrdjt9fX19YS5zb3J0KCk7fX1w c3RhY2sucG9wKCk7cmV0dXJuIGlzQXJyYXk/IlsiK2Euam9pbigiLCIpKyJdIjoi eyIrYS5qb2luKCIsIikrIn0iO31yZXR1cm4gdW5kZWZpbmVkO31yZXR1cm57aXNW YWxpZDpmdW5jdGlvbihzKXtyZXR1cm4gX2lzVmFsaWQoX3ByZXBhcmUocykpO30s cGFyc2U6ZnVuY3Rpb24ocyxyZXZpdmVyKXtzPV9wcmVwYXJlKHMpO2lmKF9pc1Zh bGlkKHMpKXtyZXR1cm4gX3Jldml2ZShldmFsKCIoIitzKyIpIikscmV2aXZlcik7 fXRocm93IG5ldyBTeW50YXhFcnJvcigicGFyc2VKU09OIik7fSxzdHJpbmdpZnk6 ZnVuY3Rpb24obyx3LGQpe2lmKG8hPT11bmRlZmluZWQpe2lmKGwuaXNBcnJheSh3 KSl7dz0oZnVuY3Rpb24oYSl7dmFyIHVuaXE9W10sbWFwPXt9LHYsaSxqLGxlbjtm b3IoaT0wLGo9MCxsZW49YS5sZW5ndGg7aTxsZW47KytpKXt2PWFbaV07aWYodHlw ZW9mIHY9PT0ic3RyaW5nIiYmbWFwW3ZdPT09dW5kZWZpbmVkKXt1bmlxWyhtYXBb dl09aisrKV09djt9fXJldHVybiB1bmlxO30pKHcpO31kPWQ+PTA/ZDoxLzA7cmV0 dXJuIF9zdHJpbmdpZnkoeyIiOm99LCIiLGQsdyxbXSk7fXJldHVybiB1bmRlZmlu ZWQ7fSxkYXRlVG9TdHJpbmc6ZnVuY3Rpb24oZCl7ZnVuY3Rpb24gX3plcm9QYWQo dil7cmV0dXJuIHY8MTA/IjAiK3Y6djt9cmV0dXJuIGQuZ2V0VVRDRnVsbFllYXIo KSsiLSIrX3plcm9QYWQoZC5nZXRVVENNb250aCgpKzEpKyItIitfemVyb1BhZChk LmdldFVUQ0RhdGUoKSkrIlQiK196ZXJvUGFkKGQuZ2V0VVRDSG91cnMoKSkrIjoi K196ZXJvUGFkKGQuZ2V0VVRDTWludXRlcygpKSsiOiIrX3plcm9QYWQoZC5nZXRV VENTZWNvbmRzKCkpKyJaIjt9LHN0cmluZ1RvRGF0ZTpmdW5jdGlvbihzdHIpe2lm KC9eKFxkezR9KS0oXGR7Mn0pLShcZHsyfSlUKFxkezJ9KTooXGR7Mn0pOihcZHsy fSlaJC8udGVzdChzdHIpKXt2YXIgZD1uZXcgRGF0ZSgpO2Quc2V0VVRDRnVsbFll YXIoUmVnRXhwLiQxLChSZWdFeHAuJDJ8MCktMSxSZWdFeHAuJDMpO2Quc2V0VVRD SG91cnMoUmVnRXhwLiQ0LFJlZ0V4cC4kNSxSZWdFeHAuJDYpO3JldHVybiBkO31y ZXR1cm4gc3RyO319O30pKCk7WUFIT08ucmVnaXN0ZXIoImpzb24iLFlBSE9PLmxh bmcuSlNPTix7dmVyc2lvbjoiMi43LjAiLGJ1aWxkOiIxNzk5In0pOy8qCkNvcHly aWdodCAoYykgMjAwOSwgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K Q29kZSBsaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2U6Cmh0dHA6Ly9kZXZl bG9wZXIueWFob28ubmV0L3l1aS9saWNlbnNlLnR4dAp2ZXJzaW9uOiAyLjcuMAoq LwpZQUhPTy51dGlsLkF0dHJpYnV0ZT1mdW5jdGlvbihCLEEpe2lmKEEpe3RoaXMu b3duZXI9QTt0aGlzLmNvbmZpZ3VyZShCLHRydWUpO319O1lBSE9PLnV0aWwuQXR0 cmlidXRlLnByb3RvdHlwZT17bmFtZTp1bmRlZmluZWQsdmFsdWU6bnVsbCxvd25l cjpudWxsLHJlYWRPbmx5OmZhbHNlLHdyaXRlT25jZTpmYWxzZSxfaW5pdGlhbENv bmZpZzpudWxsLF93cml0dGVuOmZhbHNlLG1ldGhvZDpudWxsLHNldHRlcjpudWxs LGdldHRlcjpudWxsLHZhbGlkYXRvcjpudWxsLGdldFZhbHVlOmZ1bmN0aW9uKCl7 dmFyIEE9dGhpcy52YWx1ZTtpZih0aGlzLmdldHRlcil7QT10aGlzLmdldHRlci5j YWxsKHRoaXMub3duZXIsdGhpcy5uYW1lKTt9cmV0dXJuIEE7fSxzZXRWYWx1ZTpm dW5jdGlvbihGLEIpe3ZhciBFLEE9dGhpcy5vd25lcixDPXRoaXMubmFtZTt2YXIg RD17dHlwZTpDLHByZXZWYWx1ZTp0aGlzLmdldFZhbHVlKCksbmV3VmFsdWU6Rn07 aWYodGhpcy5yZWFkT25seXx8KHRoaXMud3JpdGVPbmNlJiZ0aGlzLl93cml0dGVu KSl7cmV0dXJuIGZhbHNlO31pZih0aGlzLnZhbGlkYXRvciYmIXRoaXMudmFsaWRh dG9yLmNhbGwoQSxGKSl7cmV0dXJuIGZhbHNlO31pZighQil7RT1BLmZpcmVCZWZv cmVDaGFuZ2VFdmVudChEKTtpZihFPT09ZmFsc2Upe3JldHVybiBmYWxzZTt9fWlm KHRoaXMuc2V0dGVyKXtGPXRoaXMuc2V0dGVyLmNhbGwoQSxGLHRoaXMubmFtZSk7 aWYoRj09PXVuZGVmaW5lZCl7fX1pZih0aGlzLm1ldGhvZCl7dGhpcy5tZXRob2Qu Y2FsbChBLEYsdGhpcy5uYW1lKTt9dGhpcy52YWx1ZT1GO3RoaXMuX3dyaXR0ZW49 dHJ1ZTtELnR5cGU9QztpZighQil7dGhpcy5vd25lci5maXJlQ2hhbmdlRXZlbnQo RCk7fXJldHVybiB0cnVlO30sY29uZmlndXJlOmZ1bmN0aW9uKEIsQyl7Qj1CfHx7 fTtpZihDKXt0aGlzLl93cml0dGVuPWZhbHNlO310aGlzLl9pbml0aWFsQ29uZmln PXRoaXMuX2luaXRpYWxDb25maWd8fHt9O2Zvcih2YXIgQSBpbiBCKXtpZihCLmhh c093blByb3BlcnR5KEEpKXt0aGlzW0FdPUJbQV07aWYoQyl7dGhpcy5faW5pdGlh bENvbmZpZ1tBXT1CW0FdO319fX0scmVzZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVy biB0aGlzLnNldFZhbHVlKHRoaXMuX2luaXRpYWxDb25maWcudmFsdWUpO30scmVz ZXRDb25maWc6ZnVuY3Rpb24oKXt0aGlzLmNvbmZpZ3VyZSh0aGlzLl9pbml0aWFs Q29uZmlnLHRydWUpO30scmVmcmVzaDpmdW5jdGlvbihBKXt0aGlzLnNldFZhbHVl KHRoaXMudmFsdWUsQSk7fX07KGZ1bmN0aW9uKCl7dmFyIEE9WUFIT08udXRpbC5M YW5nO1lBSE9PLnV0aWwuQXR0cmlidXRlUHJvdmlkZXI9ZnVuY3Rpb24oKXt9O1lB SE9PLnV0aWwuQXR0cmlidXRlUHJvdmlkZXIucHJvdG90eXBlPXtfY29uZmlnczpu dWxsLGdldDpmdW5jdGlvbihDKXt0aGlzLl9jb25maWdzPXRoaXMuX2NvbmZpZ3N8 fHt9O3ZhciBCPXRoaXMuX2NvbmZpZ3NbQ107aWYoIUJ8fCF0aGlzLl9jb25maWdz Lmhhc093blByb3BlcnR5KEMpKXtyZXR1cm4gbnVsbDt9cmV0dXJuIEIuZ2V0VmFs dWUoKTt9LHNldDpmdW5jdGlvbihELEUsQil7dGhpcy5fY29uZmlncz10aGlzLl9j b25maWdzfHx7fTt2YXIgQz10aGlzLl9jb25maWdzW0RdO2lmKCFDKXtyZXR1cm4g ZmFsc2U7fXJldHVybiBDLnNldFZhbHVlKEUsQik7fSxnZXRBdHRyaWJ1dGVLZXlz OmZ1bmN0aW9uKCl7dGhpcy5fY29uZmlncz10aGlzLl9jb25maWdzO3ZhciBDPVtd LEI7Zm9yKEIgaW4gdGhpcy5fY29uZmlncyl7aWYoQS5oYXNPd25Qcm9wZXJ0eSh0 aGlzLl9jb25maWdzLEIpJiYhQS5pc1VuZGVmaW5lZCh0aGlzLl9jb25maWdzW0Jd KSl7Q1tDLmxlbmd0aF09Qjt9fXJldHVybiBDO30sc2V0QXR0cmlidXRlczpmdW5j dGlvbihELEIpe2Zvcih2YXIgQyBpbiBEKXtpZihBLmhhc093blByb3BlcnR5KEQs Qykpe3RoaXMuc2V0KEMsRFtDXSxCKTt9fX0scmVzZXRWYWx1ZTpmdW5jdGlvbihD LEIpe3RoaXMuX2NvbmZpZ3M9dGhpcy5fY29uZmlnc3x8e307aWYodGhpcy5fY29u Zmlnc1tDXSl7dGhpcy5zZXQoQyx0aGlzLl9jb25maWdzW0NdLl9pbml0aWFsQ29u ZmlnLnZhbHVlLEIpO3JldHVybiB0cnVlO31yZXR1cm4gZmFsc2U7fSxyZWZyZXNo OmZ1bmN0aW9uKEUsQyl7dGhpcy5fY29uZmlncz10aGlzLl9jb25maWdzfHx7fTt2 YXIgRj10aGlzLl9jb25maWdzO0U9KChBLmlzU3RyaW5nKEUpKT9bRV06RSl8fHRo aXMuZ2V0QXR0cmlidXRlS2V5cygpO2Zvcih2YXIgRD0wLEI9RS5sZW5ndGg7RDxC OysrRCl7aWYoRi5oYXNPd25Qcm9wZXJ0eShFW0RdKSl7dGhpcy5fY29uZmlnc1tF W0RdXS5yZWZyZXNoKEMpO319fSxyZWdpc3RlcjpmdW5jdGlvbihCLEMpe3RoaXMu c2V0QXR0cmlidXRlQ29uZmlnKEIsQyk7fSxnZXRBdHRyaWJ1dGVDb25maWc6ZnVu Y3Rpb24oQyl7dGhpcy5fY29uZmlncz10aGlzLl9jb25maWdzfHx7fTt2YXIgQj10 aGlzLl9jb25maWdzW0NdfHx7fTt2YXIgRD17fTtmb3IoQyBpbiBCKXtpZihBLmhh c093blByb3BlcnR5KEIsQykpe0RbQ109QltDXTt9fXJldHVybiBEO30sc2V0QXR0 cmlidXRlQ29uZmlnOmZ1bmN0aW9uKEIsQyxEKXt0aGlzLl9jb25maWdzPXRoaXMu X2NvbmZpZ3N8fHt9O0M9Q3x8e307aWYoIXRoaXMuX2NvbmZpZ3NbQl0pe0MubmFt ZT1CO3RoaXMuX2NvbmZpZ3NbQl09dGhpcy5jcmVhdGVBdHRyaWJ1dGUoQyk7fWVs c2V7dGhpcy5fY29uZmlnc1tCXS5jb25maWd1cmUoQyxEKTt9fSxjb25maWd1cmVB dHRyaWJ1dGU6ZnVuY3Rpb24oQixDLEQpe3RoaXMuc2V0QXR0cmlidXRlQ29uZmln KEIsQyxEKTt9LHJlc2V0QXR0cmlidXRlQ29uZmlnOmZ1bmN0aW9uKEIpe3RoaXMu X2NvbmZpZ3M9dGhpcy5fY29uZmlnc3x8e307dGhpcy5fY29uZmlnc1tCXS5yZXNl dENvbmZpZygpO30sc3Vic2NyaWJlOmZ1bmN0aW9uKEIsQyl7dGhpcy5fZXZlbnRz PXRoaXMuX2V2ZW50c3x8e307aWYoIShCIGluIHRoaXMuX2V2ZW50cykpe3RoaXMu X2V2ZW50c1tCXT10aGlzLmNyZWF0ZUV2ZW50KEIpO31ZQUhPTy51dGlsLkV2ZW50 UHJvdmlkZXIucHJvdG90eXBlLnN1YnNjcmliZS5hcHBseSh0aGlzLGFyZ3VtZW50 cyk7fSxvbjpmdW5jdGlvbigpe3RoaXMuc3Vic2NyaWJlLmFwcGx5KHRoaXMsYXJn dW1lbnRzKTt9LGFkZExpc3RlbmVyOmZ1bmN0aW9uKCl7dGhpcy5zdWJzY3JpYmUu YXBwbHkodGhpcyxhcmd1bWVudHMpO30sZmlyZUJlZm9yZUNoYW5nZUV2ZW50OmZ1 bmN0aW9uKEMpe3ZhciBCPSJiZWZvcmUiO0IrPUMudHlwZS5jaGFyQXQoMCkudG9V cHBlckNhc2UoKStDLnR5cGUuc3Vic3RyKDEpKyJDaGFuZ2UiO0MudHlwZT1CO3Jl dHVybiB0aGlzLmZpcmVFdmVudChDLnR5cGUsQyk7fSxmaXJlQ2hhbmdlRXZlbnQ6 ZnVuY3Rpb24oQil7Qi50eXBlKz0iQ2hhbmdlIjtyZXR1cm4gdGhpcy5maXJlRXZl bnQoQi50eXBlLEIpO30sY3JlYXRlQXR0cmlidXRlOmZ1bmN0aW9uKEIpe3JldHVy biBuZXcgWUFIT08udXRpbC5BdHRyaWJ1dGUoQix0aGlzKTt9fTtZQUhPTy5hdWdt ZW50KFlBSE9PLnV0aWwuQXR0cmlidXRlUHJvdmlkZXIsWUFIT08udXRpbC5FdmVu dFByb3ZpZGVyKTt9KSgpOyhmdW5jdGlvbigpe3ZhciBCPVlBSE9PLnV0aWwuRG9t LEM9WUFIT08udXRpbC5BdHRyaWJ1dGVQcm92aWRlcjt2YXIgQT1mdW5jdGlvbihE LEUpe3RoaXMuaW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7fTtBLkRPTV9FVkVO VFM9eyJjbGljayI6dHJ1ZSwiZGJsY2xpY2siOnRydWUsImtleWRvd24iOnRydWUs ImtleXByZXNzIjp0cnVlLCJrZXl1cCI6dHJ1ZSwibW91c2Vkb3duIjp0cnVlLCJt b3VzZW1vdmUiOnRydWUsIm1vdXNlb3V0Ijp0cnVlLCJtb3VzZW92ZXIiOnRydWUs Im1vdXNldXAiOnRydWUsImZvY3VzIjp0cnVlLCJibHVyIjp0cnVlLCJzdWJtaXQi OnRydWUsImNoYW5nZSI6dHJ1ZX07QS5wcm90b3R5cGU9e0RPTV9FVkVOVFM6bnVs bCxERUZBVUxUX0hUTUxfU0VUVEVSOmZ1bmN0aW9uKEYsRCl7dmFyIEU9dGhpcy5n ZXQoImVsZW1lbnQiKTtpZihFKXtFW0RdPUY7fX0sREVGQVVMVF9IVE1MX0dFVFRF UjpmdW5jdGlvbihEKXt2YXIgRT10aGlzLmdldCgiZWxlbWVudCIpLEY7aWYoRSl7 Rj1FW0RdO31yZXR1cm4gRjt9LGFwcGVuZENoaWxkOmZ1bmN0aW9uKEQpe0Q9RC5n ZXQ/RC5nZXQoImVsZW1lbnQiKTpEO3JldHVybiB0aGlzLmdldCgiZWxlbWVudCIp LmFwcGVuZENoaWxkKEQpO30sZ2V0RWxlbWVudHNCeVRhZ05hbWU6ZnVuY3Rpb24o RCl7cmV0dXJuIHRoaXMuZ2V0KCJlbGVtZW50IikuZ2V0RWxlbWVudHNCeVRhZ05h bWUoRCk7fSxoYXNDaGlsZE5vZGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0 KCJlbGVtZW50IikuaGFzQ2hpbGROb2RlcygpO30saW5zZXJ0QmVmb3JlOmZ1bmN0 aW9uKEQsRSl7RD1ELmdldD9ELmdldCgiZWxlbWVudCIpOkQ7RT0oRSYmRS5nZXQp P0UuZ2V0KCJlbGVtZW50Iik6RTtyZXR1cm4gdGhpcy5nZXQoImVsZW1lbnQiKS5p bnNlcnRCZWZvcmUoRCxFKTt9LHJlbW92ZUNoaWxkOmZ1bmN0aW9uKEQpe0Q9RC5n ZXQ/RC5nZXQoImVsZW1lbnQiKTpEO3JldHVybiB0aGlzLmdldCgiZWxlbWVudCIp LnJlbW92ZUNoaWxkKEQpO30scmVwbGFjZUNoaWxkOmZ1bmN0aW9uKEQsRSl7RD1E LmdldD9ELmdldCgiZWxlbWVudCIpOkQ7RT1FLmdldD9FLmdldCgiZWxlbWVudCIp OkU7cmV0dXJuIHRoaXMuZ2V0KCJlbGVtZW50IikucmVwbGFjZUNoaWxkKEQsRSk7 fSxpbml0QXR0cmlidXRlczpmdW5jdGlvbihEKXt9LGFkZExpc3RlbmVyOmZ1bmN0 aW9uKEgsRyxJLEYpe3ZhciBFPXRoaXMuZ2V0KCJlbGVtZW50Iil8fHRoaXMuZ2V0 KCJpZCIpO0Y9Rnx8dGhpczt2YXIgRD10aGlzO2lmKCF0aGlzLl9ldmVudHNbSF0p e2lmKEUmJnRoaXMuRE9NX0VWRU5UU1tIXSl7WUFIT08udXRpbC5FdmVudC5hZGRM aXN0ZW5lcihFLEgsZnVuY3Rpb24oSil7aWYoSi5zcmNFbGVtZW50JiYhSi50YXJn ZXQpe0oudGFyZ2V0PUouc3JjRWxlbWVudDt9RC5maXJlRXZlbnQoSCxKKTt9LEks Rik7fXRoaXMuY3JlYXRlRXZlbnQoSCx0aGlzKTt9cmV0dXJuIFlBSE9PLnV0aWwu RXZlbnRQcm92aWRlci5wcm90b3R5cGUuc3Vic2NyaWJlLmFwcGx5KHRoaXMsYXJn dW1lbnRzKTt9LG9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWRkTGlzdGVuZXIu YXBwbHkodGhpcyxhcmd1bWVudHMpO30sc3Vic2NyaWJlOmZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMuYWRkTGlzdGVuZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpO30scmVt b3ZlTGlzdGVuZXI6ZnVuY3Rpb24oRSxEKXtyZXR1cm4gdGhpcy51bnN1YnNjcmli ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7fSxhZGRDbGFzczpmdW5jdGlvbihEKXtC LmFkZENsYXNzKHRoaXMuZ2V0KCJlbGVtZW50IiksRCk7fSxnZXRFbGVtZW50c0J5 Q2xhc3NOYW1lOmZ1bmN0aW9uKEUsRCl7cmV0dXJuIEIuZ2V0RWxlbWVudHNCeUNs YXNzTmFtZShFLEQsdGhpcy5nZXQoImVsZW1lbnQiKSk7fSxoYXNDbGFzczpmdW5j dGlvbihEKXtyZXR1cm4gQi5oYXNDbGFzcyh0aGlzLmdldCgiZWxlbWVudCIpLEQp O30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oRCl7cmV0dXJuIEIucmVtb3ZlQ2xhc3Mo dGhpcy5nZXQoImVsZW1lbnQiKSxEKTt9LHJlcGxhY2VDbGFzczpmdW5jdGlvbihF LEQpe3JldHVybiBCLnJlcGxhY2VDbGFzcyh0aGlzLmdldCgiZWxlbWVudCIpLEUs RCk7fSxzZXRTdHlsZTpmdW5jdGlvbihFLEQpe3JldHVybiBCLnNldFN0eWxlKHRo aXMuZ2V0KCJlbGVtZW50IiksRSxEKTt9LGdldFN0eWxlOmZ1bmN0aW9uKEQpe3Jl dHVybiBCLmdldFN0eWxlKHRoaXMuZ2V0KCJlbGVtZW50IiksRCk7fSxmaXJlUXVl dWU6ZnVuY3Rpb24oKXt2YXIgRT10aGlzLl9xdWV1ZTtmb3IodmFyIEY9MCxEPUUu bGVuZ3RoO0Y8RDsrK0Ype3RoaXNbRVtGXVswXV0uYXBwbHkodGhpcyxFW0ZdWzFd KTt9fSxhcHBlbmRUbzpmdW5jdGlvbihFLEYpe0U9KEUuZ2V0KT9FLmdldCgiZWxl bWVudCIpOkIuZ2V0KEUpO3RoaXMuZmlyZUV2ZW50KCJiZWZvcmVBcHBlbmRUbyIs e3R5cGU6ImJlZm9yZUFwcGVuZFRvIix0YXJnZXQ6RX0pOwpGPShGJiZGLmdldCk/ Ri5nZXQoImVsZW1lbnQiKTpCLmdldChGKTt2YXIgRD10aGlzLmdldCgiZWxlbWVu dCIpO2lmKCFEKXtyZXR1cm4gZmFsc2U7fWlmKCFFKXtyZXR1cm4gZmFsc2U7fWlm KEQucGFyZW50IT1FKXtpZihGKXtFLmluc2VydEJlZm9yZShELEYpO31lbHNle0Uu YXBwZW5kQ2hpbGQoRCk7fX10aGlzLmZpcmVFdmVudCgiYXBwZW5kVG8iLHt0eXBl OiJhcHBlbmRUbyIsdGFyZ2V0OkV9KTtyZXR1cm4gRDt9LGdldDpmdW5jdGlvbihE KXt2YXIgRj10aGlzLl9jb25maWdzfHx7fSxFPUYuZWxlbWVudDtpZihFJiYhRltE XSYmIVlBSE9PLmxhbmcuaXNVbmRlZmluZWQoRS52YWx1ZVtEXSkpe3RoaXMuX3Nl dEhUTUxBdHRyQ29uZmlnKEQpO31yZXR1cm4gQy5wcm90b3R5cGUuZ2V0LmNhbGwo dGhpcyxEKTt9LHNldEF0dHJpYnV0ZXM6ZnVuY3Rpb24oSixHKXt2YXIgRT17fSxI PXRoaXMuX2NvbmZpZ09yZGVyO2Zvcih2YXIgST0wLEQ9SC5sZW5ndGg7STxEOysr SSl7aWYoSltIW0ldXSE9PXVuZGVmaW5lZCl7RVtIW0ldXT10cnVlO3RoaXMuc2V0 KEhbSV0sSltIW0ldXSxHKTt9fWZvcih2YXIgRiBpbiBKKXtpZihKLmhhc093blBy b3BlcnR5KEYpJiYhRVtGXSl7dGhpcy5zZXQoRixKW0ZdLEcpO319fSxzZXQ6ZnVu Y3Rpb24oRSxHLEQpe3ZhciBGPXRoaXMuZ2V0KCJlbGVtZW50Iik7aWYoIUYpe3Ro aXMuX3F1ZXVlW3RoaXMuX3F1ZXVlLmxlbmd0aF09WyJzZXQiLGFyZ3VtZW50c107 aWYodGhpcy5fY29uZmlnc1tFXSl7dGhpcy5fY29uZmlnc1tFXS52YWx1ZT1HO31y ZXR1cm47fWlmKCF0aGlzLl9jb25maWdzW0VdJiYhWUFIT08ubGFuZy5pc1VuZGVm aW5lZChGW0VdKSl7dGhpcy5fc2V0SFRNTEF0dHJDb25maWcoRSk7fXJldHVybiBD LnByb3RvdHlwZS5zZXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO30sc2V0QXR0cmli dXRlQ29uZmlnOmZ1bmN0aW9uKEQsRSxGKXt0aGlzLl9jb25maWdPcmRlci5wdXNo KEQpO0MucHJvdG90eXBlLnNldEF0dHJpYnV0ZUNvbmZpZy5hcHBseSh0aGlzLGFy Z3VtZW50cyk7fSxjcmVhdGVFdmVudDpmdW5jdGlvbihFLEQpe3RoaXMuX2V2ZW50 c1tFXT10cnVlO3JldHVybiBDLnByb3RvdHlwZS5jcmVhdGVFdmVudC5hcHBseSh0 aGlzLGFyZ3VtZW50cyk7fSxpbml0OmZ1bmN0aW9uKEUsRCl7dGhpcy5faW5pdEVs ZW1lbnQoRSxEKTt9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgRD10aGlzLmdldCgi ZWxlbWVudCIpO1lBSE9PLnV0aWwuRXZlbnQucHVyZ2VFbGVtZW50KEQsdHJ1ZSk7 dGhpcy51bnN1YnNjcmliZUFsbCgpO2lmKEQmJkQucGFyZW50Tm9kZSl7RC5wYXJl bnROb2RlLnJlbW92ZUNoaWxkKEQpO310aGlzLl9xdWV1ZT1bXTt0aGlzLl9ldmVu dHM9e307dGhpcy5fY29uZmlncz17fTt0aGlzLl9jb25maWdPcmRlcj1bXTt9LF9p bml0RWxlbWVudDpmdW5jdGlvbihGLEUpe3RoaXMuX3F1ZXVlPXRoaXMuX3F1ZXVl fHxbXTt0aGlzLl9ldmVudHM9dGhpcy5fZXZlbnRzfHx7fTt0aGlzLl9jb25maWdz PXRoaXMuX2NvbmZpZ3N8fHt9O3RoaXMuX2NvbmZpZ09yZGVyPVtdO0U9RXx8e307 RS5lbGVtZW50PUUuZWxlbWVudHx8Rnx8bnVsbDt2YXIgSD1mYWxzZTt2YXIgRD1B LkRPTV9FVkVOVFM7dGhpcy5ET01fRVZFTlRTPXRoaXMuRE9NX0VWRU5UU3x8e307 Zm9yKHZhciBHIGluIEQpe2lmKEQuaGFzT3duUHJvcGVydHkoRykpe3RoaXMuRE9N X0VWRU5UU1tHXT1EW0ddO319aWYodHlwZW9mIEUuZWxlbWVudD09PSJzdHJpbmci KXt0aGlzLl9zZXRIVE1MQXR0ckNvbmZpZygiaWQiLHt2YWx1ZTpFLmVsZW1lbnR9 KTt9aWYoQi5nZXQoRS5lbGVtZW50KSl7SD10cnVlO3RoaXMuX2luaXRIVE1MRWxl bWVudChFKTt0aGlzLl9pbml0Q29udGVudChFKTt9WUFIT08udXRpbC5FdmVudC5v bkF2YWlsYWJsZShFLmVsZW1lbnQsZnVuY3Rpb24oKXtpZighSCl7dGhpcy5faW5p dEhUTUxFbGVtZW50KEUpO310aGlzLmZpcmVFdmVudCgiYXZhaWxhYmxlIix7dHlw ZToiYXZhaWxhYmxlIix0YXJnZXQ6Qi5nZXQoRS5lbGVtZW50KX0pO30sdGhpcyx0 cnVlKTtZQUhPTy51dGlsLkV2ZW50Lm9uQ29udGVudFJlYWR5KEUuZWxlbWVudCxm dW5jdGlvbigpe2lmKCFIKXt0aGlzLl9pbml0Q29udGVudChFKTt9dGhpcy5maXJl RXZlbnQoImNvbnRlbnRSZWFkeSIse3R5cGU6ImNvbnRlbnRSZWFkeSIsdGFyZ2V0 OkIuZ2V0KEUuZWxlbWVudCl9KTt9LHRoaXMsdHJ1ZSk7fSxfaW5pdEhUTUxFbGVt ZW50OmZ1bmN0aW9uKEQpe3RoaXMuc2V0QXR0cmlidXRlQ29uZmlnKCJlbGVtZW50 Iix7dmFsdWU6Qi5nZXQoRC5lbGVtZW50KSxyZWFkT25seTp0cnVlfSk7fSxfaW5p dENvbnRlbnQ6ZnVuY3Rpb24oRCl7dGhpcy5pbml0QXR0cmlidXRlcyhEKTt0aGlz LnNldEF0dHJpYnV0ZXMoRCx0cnVlKTt0aGlzLmZpcmVRdWV1ZSgpO30sX3NldEhU TUxBdHRyQ29uZmlnOmZ1bmN0aW9uKEQsRil7dmFyIEU9dGhpcy5nZXQoImVsZW1l bnQiKTtGPUZ8fHt9O0YubmFtZT1EO0Yuc2V0dGVyPUYuc2V0dGVyfHx0aGlzLkRF RkFVTFRfSFRNTF9TRVRURVI7Ri5nZXR0ZXI9Ri5nZXR0ZXJ8fHRoaXMuREVGQVVM VF9IVE1MX0dFVFRFUjtGLnZhbHVlPUYudmFsdWV8fEVbRF07dGhpcy5fY29uZmln c1tEXT1uZXcgWUFIT08udXRpbC5BdHRyaWJ1dGUoRix0aGlzKTt9fTtZQUhPTy5h dWdtZW50KEEsQyk7WUFIT08udXRpbC5FbGVtZW50PUE7fSkoKTtZQUhPTy5yZWdp c3RlcigiZWxlbWVudCIsWUFIT08udXRpbC5FbGVtZW50LHt2ZXJzaW9uOiIyLjcu MCIsYnVpbGQ6IjE3OTkifSk7aWYoUmlnaHROb3cpdGhyb3cgbmV3IEVycm9yKCJU aGUgUmlnaHROb3cgbmFtZXNwYWNlIHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4g ZGVmaW5lZCBzb21ld2hlcmUuIik7dmFyIFJpZ2h0Tm93PXtuYW1lc3BhY2U6ZnVu Y3Rpb24oKXt2YXIgYT1hcmd1bWVudHMsYz1udWxsLGUsZixoO2ZvcihlPTA7ZTxh Lmxlbmd0aDtlKz0xKXtoPWFbZV0uc3BsaXQoIi4iKTtjPVJpZ2h0Tm93O2Zvcihm PWhbMF09PT0iUmlnaHROb3ciPzE6MDtmPGgubGVuZ3RoO2YrKyl7Y1toW2ZdXT1j W2hbZl1dfHx7fTtjPWNbaFtmXV19fXJldHVybiBjfX07ClJpZ2h0Tm93LldpZGdl dD17X3dpZGdldEluc3RhbmNlczp7fSxjcmVhdGVXaWRnZXRJbnN0YW5jZTpmdW5j dGlvbihhLGMsZSxmLGgsZyl7dmFyIGo9e2luZm86e2NvbnRyb2xsZXJfbmFtZTph LmkuYyxuYW1lOmEuaS5uLHdfaWQ6YS5pLnd9LGF0dHJzOmEuYSxqczphLmp9O2lm KGEuaS50KWouaW5mby50eXBlPWEuaS50O3RoaXMuX3dpZGdldEluc3RhbmNlc1tj XT17amF2YVNjcmlwdFBhdGg6ZSxjbGFzc05hbWU6ZixzdWZmaXg6aH07aWYodHlw ZW9mIHdpbmRvd1tmXT09PSJmdW5jdGlvbiIpe3RoaXMuX3dpZGdldEluc3RhbmNl c1tjXS5pbnN0YW5jZT1uZXcgd2luZG93W2ZdKGopO3RoaXMuX3dpZGdldEluc3Rh bmNlc1tjXS5pbnN0YW5jZS5pbml0KCk7d2luZG93WyJqc18iK2ouaW5mby53X2lk XT10aGlzLl93aWRnZXRJbnN0YW5jZXNbY10uaW5zdGFuY2V9ZWxzZSBpZih0eXBl b2YgUmlnaHROb3cuV2lkZ2V0W2ZdPT09ImZ1bmN0aW9uIil0aGlzLl93aWRnZXRJ bnN0YW5jZXNbY10uaW5zdGFuY2U9Cm5ldyBSaWdodE5vdy5XaWRnZXRbZl0oaixj KTtlbHNlIGcmJmFsZXJ0KFJpZ2h0Tm93LkludGVyZmFjZS5nZXRNZXNzYWdlKCJG T0xMT1dJTkdfV0lER0VUX0pBVkFTQ1JJUFRfU1lOVEFYX01TRyIpK2UpfSxnZXRX aWRnZXRJbmZvcm1hdGlvbjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fd2lkZ2V0 SW5zdGFuY2VzW2FdfHxudWxsfSxnZXRXaWRnZXRJbnN0YW5jZTpmdW5jdGlvbihh KXtpZih0aGlzLl93aWRnZXRJbnN0YW5jZXNbYV0pcmV0dXJuIHRoaXMuX3dpZGdl dEluc3RhbmNlc1thXS5pbnN0YW5jZTtyZXR1cm4gbnVsbH19OwpSaWdodE5vdy5J bnRlcmZhY2U9e19jb25maWdCYXNlSW5pdGlhbGl6ZXI6bnVsbCxfY29uZmlnYmFz ZUVudHJpZXM6bnVsbCxfbWVzc2FnZWJhc2VFbnRyaWVzOm51bGwsX21lc3NhZ2VC YXNlSW5pdGlhbGl6ZXI6bnVsbCxDb25zdGFudHM6e30sZ2V0Q29uZmlnOmZ1bmN0 aW9uKGEpe2lmKHRoaXMuX2NvbmZpZ2Jhc2VFbnRyaWVzPT1udWxsKXRoaXMuX2Nv bmZpZ2Jhc2VFbnRyaWVzPXRoaXMuX2NvbmZpZ0Jhc2VJbml0aWFsaXplcigpO2lm KHRoaXMuX2NvbmZpZ2Jhc2VFbnRyaWVzW2FdIT09dW5kZWZpbmVkKXJldHVybiB0 aGlzLl9jb25maWdiYXNlRW50cmllc1thXTtyZXR1cm4iIn0sZ2V0TWVzc2FnZTpm dW5jdGlvbihhKXtpZih0aGlzLl9tZXNzYWdlYmFzZUVudHJpZXM9PW51bGwpdGhp cy5fbWVzc2FnZWJhc2VFbnRyaWVzPXRoaXMuX21lc3NhZ2VCYXNlSW5pdGlhbGl6 ZXIoKTtpZih0aGlzLl9tZXNzYWdlYmFzZUVudHJpZXNbYV0hPT11bmRlZmluZWQp cmV0dXJuIHRoaXMuX21lc3NhZ2ViYXNlRW50cmllc1thXTsKcmV0dXJuIiJ9LEFT VFJnZXRNZXNzYWdlOmZ1bmN0aW9uKGEpe3JldHVybiBhfSxzZXRDb25maWdiYXNl OmZ1bmN0aW9uKGEpe3RoaXMuX2NvbmZpZ0Jhc2VJbml0aWFsaXplcj1hfSxzZXRN ZXNzYWdlYmFzZTpmdW5jdGlvbihhKXt0aGlzLl9tZXNzYWdlQmFzZUluaXRpYWxp emVyPWF9fTsKUmlnaHROb3cuSlNPTj17X2NhblVzZU5hdGl2ZVN0cmluZ2lmeTpm dW5jdGlvbigpe3JldHVybiB0eXBlb2YgSlNPTj09PSJvYmplY3QiJiYoIVlBSE9P LmVudi51YS5pZXx8SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkb2N1bWVudC5j cmVhdGVFbGVtZW50KCJpbnB1dCIpLnZhbHVlKSk9PT0iIil9LHBhcnNlOmZ1bmN0 aW9uKGEpe3ZhciBjPXR5cGVvZiBKU09OPT09Im9iamVjdCI/SlNPTi5wYXJzZTpZ QUhPTy5sYW5nLkpTT04ucGFyc2U7cmV0dXJuKFJpZ2h0Tm93LkpTT04ucGFyc2U9 ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBjKGUpfWNhdGNoKGYpe3JldHVybiBmYWxz ZX19KShhKX0sc3RyaW5naWZ5OmZ1bmN0aW9uKGEpe3ZhciBjPVJpZ2h0Tm93LkpT T04uX2NhblVzZU5hdGl2ZVN0cmluZ2lmeSgpP0pTT04uc3RyaW5naWZ5OllBSE9P LmxhbmcuSlNPTi5zdHJpbmdpZnk7cmV0dXJuKFJpZ2h0Tm93LkpTT04uc3RyaW5n aWZ5PWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gYyhlKX1jYXRjaChmKXtyZXR1cm4g ZmFsc2V9fSkoYSl9fTsKUmlnaHROb3cuTGFuZz17YXJyYXlGaWx0ZXI6ZnVuY3Rp b24oYSxjKXtpZih0eXBlb2YgYz09PSJ1bmRlZmluZWQiKWM9ZnVuY3Rpb24oaCl7 cmV0dXJuIGghPW51bGwmJmghPWZhbHNlfTtlbHNlIGlmKHR5cGVvZiBjIT09ImZ1 bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yO3ZhciBlPVtdLGY7Zm9yKGYgaW4g YSlpZih0eXBlb2YgYVtmXSE9PSJmdW5jdGlvbiImJmMoYVtmXSkpZVtmXT1hW2Zd O3JldHVybiBlfSxjbG9uZU9iamVjdDpmdW5jdGlvbihhKXtpZihhPT09bnVsbCly ZXR1cm4gbnVsbDt2YXIgYz17fTtpZih0eXBlb2YgYT09PSJvYmplY3QiKXtpZih0 eXBlb2YgYS5sZW5ndGghPT0idW5kZWZpbmVkIiljPVtdO2Zvcih2YXIgZSBpbiBh KWlmKHR5cGVvZiBhW2VdPT09Im9iamVjdCIpY1tlXT1SaWdodE5vdy5MYW5nLmNs b25lT2JqZWN0KGFbZV0pO2Vsc2UgaWYodHlwZW9mIGFbZV09PT0ic3RyaW5nInx8 dHlwZW9mIGFbZV09PT0ibnVtYmVyIiljW2VdPWFbZV07ZWxzZSBpZih0eXBlb2Yg YVtlXT09PQoiYm9vbGVhbiIpY1tlXT1hW2VdP3RydWU6ZmFsc2V9cmV0dXJuIGN9 fTtSaWdodE5vdy5Qcm9maWxlPXtrZXl3b3JkOiIiLHNlYXJjaFR5cGU6IiIscHJv ZHVjdDoiIixjYXRlZ29yeToiIn07aWYoUmlnaHROb3cuQWpheCl0aHJvdyBuZXcg RXJyb3IoIlRoZSBSaWdodE5vdy5BamF4IG5hbWVzcGFjZSB2YXJpYWJsZSBoYXMg YWxyZWFkeSBiZWVuIGRlZmluZWQgc29tZXdoZXJlLiIpOwpSaWdodE5vdy5BamF4 PXtjb252ZXJ0T2JqZWN0VG9Qb3N0U3RyaW5nOmZ1bmN0aW9uKGEpe3ZhciBjPSIi O2Zvcih2YXIgZSBpbiBhKXR5cGVvZiBhW2VdPT09ImZ1bmN0aW9uInx8dHlwZW9m IGFbZV09PT0ib2JqZWN0Inx8YVtlXT09PXVuZGVmaW5lZHx8KGMrPWVuY29kZVVS SUNvbXBvbmVudChlKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFbZV0pKyImIik7 aWYoYy5sZW5ndGg+MCljPWMuc3Vic3RyaW5nKDAsYy5sZW5ndGgtMSk7cmV0dXJu IGN9LG1ha2VSZXF1ZXN0OmZ1bmN0aW9uKGEsYyxlKXtpZihlPT09bnVsbHx8ZT09 PXVuZGVmaW5lZCllPXt9O2lmKCFlLnR5cGUpZS50eXBlPSJQT1NUIjtlLnVybD1h O2UucG9zdD1jO2UuZGF0YT1SaWdodE5vdy5MYW5nLmNsb25lT2JqZWN0KGUuZGF0 YSk7UmlnaHROb3cuRXZlbnQuZmlyZSgib25fYmVmb3JlX2FqYXhfcmVxdWVzdCIs ZSk7YT17fTthLnN1Y2Nlc3M9ZS5zdWNjZXNzSGFuZGxlcnx8dGhpcy5nZW5lcmlj U3VjY2VzczsKYS5mYWlsdXJlPWUuZmFpbHVyZUhhbmRsZXJ8fHRoaXMuZ2VuZXJp Y0ZhaWx1cmU7aWYoZS51cGxvYWRIYW5kbGVyKWEudXBsb2FkPWUudXBsb2FkSGFu ZGxlcjtpZihlLnNjb3BlKWEuc2NvcGU9ZS5zY29wZTtpZihlLmRhdGEhPT1udWxs JiZlLmRhdGEhPT11bmRlZmluZWQpYS5hcmd1bWVudD1lLmRhdGE7aWYoUmlnaHRO b3cuVXJsLmdldFNlc3Npb24oKSE9PSIiKWUudXJsPVJpZ2h0Tm93LlVybC5hZGRQ YXJhbWV0ZXIoZS51cmwsInNlc3Npb24iLFJpZ2h0Tm93LlVybC5nZXRTZXNzaW9u KCkpO2UucG9zdD10aGlzLmNvbnZlcnRPYmplY3RUb1Bvc3RTdHJpbmcoZS5wb3N0 KTtyZXR1cm4gZT1lLnBvc3Q9PT0iIj9ZQUhPTy51dGlsLkNvbm5lY3QuYXN5bmNS ZXF1ZXN0KGUudHlwZSxlLnVybCxhKTpZQUhPTy51dGlsLkNvbm5lY3QuYXN5bmNS ZXF1ZXN0KGUudHlwZSxlLnVybCxhLGUucG9zdCl9LGdlbmVyaWNTdWNjZXNzOmZ1 bmN0aW9uKGEpe2lmKGEucmVzcG9uc2VUZXh0IT09CiJudWxsIil7dHJ5e3ZhciBj PVJpZ2h0Tm93LkpTT04ucGFyc2UoYS5yZXNwb25zZVRleHQpfWNhdGNoKGUpe1Jp Z2h0Tm93LlVJLkRpYWxvZy5tZXNzYWdlRGlhbG9nKFJpZ2h0Tm93LkludGVyZmFj ZS5nZXRNZXNzYWdlKCJFUlJPUl9SRVFVRVNUX0FDVElPTl9DT01QTEVURURfTVNH Iikse2ljb246IldBUk4ifSl9aWYoYS5hcmd1bWVudClpZihhLmFyZ3VtZW50LmV2 ZW50TmFtZSlhLmFyZ3VtZW50LmRhdGE/UmlnaHROb3cuRXZlbnQuZmlyZShhLmFy Z3VtZW50LmV2ZW50TmFtZSxjLGEuYXJndW1lbnQuZGF0YSk6UmlnaHROb3cuRXZl bnQuZmlyZShhLmFyZ3VtZW50LmV2ZW50TmFtZSxjKX1lbHNlIFJpZ2h0Tm93LlVJ LkRpYWxvZy5tZXNzYWdlRGlhbG9nKFJpZ2h0Tm93LkludGVyZmFjZS5nZXRNZXNz YWdlKCJFUlJPUl9SRVFVRVNUX0FDVElPTl9DT01QTEVURURfTVNHIikse2ljb246 IldBUk4ifSl9LGdlbmVyaWNGYWlsdXJlOmZ1bmN0aW9uKGEpe2lmKCFhLmFyZ3Vt ZW50fHwKIWEuYXJndW1lbnQuaWdub3JlRmFpbHVyZSlSaWdodE5vdy5VSS5EaWFs b2cubWVzc2FnZURpYWxvZyhSaWdodE5vdy5JbnRlcmZhY2UuZ2V0TWVzc2FnZSgi RVJST1JfUkVRVUVTVF9BQ1RJT05fQ09NUExFVEVEX01TRyIpLHtpY29uOiJXQVJO In0pfSxhYm9ydFJlcXVlc3Q6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gWUFIT08udXRp bC5Db25uZWN0LmFib3J0KGEsYyl9LENUOntDTElDS1NUUkVBTToxLFNPTFZFRF9D T1VOVDoyLExJTktTOjMsQU5TX1NUQVRTOjQsU1RBVFM6NSxLRVlXT1JEX1NFQVJD SEVTOjgsV0lER0VUX1NUQVRTOjksRFFBX1NFUlZJQ0U6Ii9jaS9kcWEvcHVibGlz aCIsX2VudHJpZXM6W10sX2luc2VydDpmdW5jdGlvbigpe3RoaXMuX2VudHJpZXMm JnRoaXMuX2VudHJpZXMubGVuZ3RoPjAmJlJpZ2h0Tm93LkFqYXgubWFrZVJlcXVl c3QodGhpcy5EUUFfU0VSVklDRSx7ZGF0YTpSaWdodE5vdy5KU09OLnN0cmluZ2lm eSh0aGlzLl9lbnRyaWVzKX0pO3RoaXMuX2VudHJpZXMubGVuZ3RoPQowfSxhZGRB Y3Rpb246ZnVuY3Rpb24oYSxjKXt0aGlzLl9lbnRyaWVzLnB1c2goe3R5cGU6YSxh Y3Rpb246Y30pfSxjb21taXRBY3Rpb25zOmZ1bmN0aW9uKCl7dGhpcy5faW5zZXJ0 KCl9LHN1Ym1pdEFjdGlvbjpmdW5jdGlvbihhLGMpe3RoaXMuYWRkQWN0aW9uKGEs Yyk7dGhpcy5faW5zZXJ0KCl9fX07aWYoUmlnaHROb3cuVGV4dCl0aHJvdyBuZXcg RXJyb3IoIlRoZSBSaWdodE5vdy5UZXh0IG5hbWVzcGFjZSB2YXJpYWJsZSBoYXMg YWxyZWFkeSBiZWVuIGRlZmluZWQgc29tZXdoZXJlLiIpOwpSaWdodE5vdy5UZXh0 PXtnZXRTdWJzdHJpbmdBZnRlcjpmdW5jdGlvbihhLGMpe3ZhciBlPWEuaW5kZXhP ZihjKTtpZihlPT09LTEpcmV0dXJuIGZhbHNlO3JldHVybiBhLnN1YnN0cihlK2Mu bGVuZ3RoKX0sc3ByaW50ZjpmdW5jdGlvbihhKXt2YXIgYz0xLGU9YXJndW1lbnRz O2Z1bmN0aW9uIGYoaCxnLGope2lmKGg9PT0iJSUiKXJldHVybiIlIjtpZihjPj1l Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlJpZ2h0Tm93LlRleHQuc3ByaW50Zjog TW9yZSBwbGFjZWhvbGRlcnMgKCIrYysiKSBhcmUgcHJlc2VudCBpbiB0aGUgZm9y bWF0IHN0cmluZyAoJyIraisiJykgdGhhbiBhcmd1bWVudHMgKCIrKGUubGVuZ3Ro LTEpKyIpIHdlcmUgcHJvdmlkZWQuIik7cmV0dXJuIGVbYysrXX1yZXR1cm4gYS5y ZXBsYWNlKC8lWyVzZF0vZyxmKX0sdHJpbUNvbW1hOmZ1bmN0aW9uKGEpe2Zvcih2 YXIgYz1hLmxlbmd0aCxlPXRydWU7ZTspaWYoYS5sYXN0SW5kZXhPZigiLCIpPT1j LTEpe2MtLTsKYT1hLnN1YnN0cigwLGMpfWVsc2UgZT1mYWxzZTtyZXR1cm4gYX0s aXNWYWxpZEVtYWlsQWRkcmVzczpmdW5jdGlvbihhKXtpZihSaWdodE5vdy5JbnRl cmZhY2UuZ2V0Q29uZmlnKCJERV9WQUxJRF9FTUFJTF9QQVRURVJOIik9PT0iIily ZXR1cm4gdHJ1ZTt0aGlzLmlzVmFsaWRFbWFpbEFkZHJlc3MuX2VtYWlsUmVnZXg9 dGhpcy5pc1ZhbGlkRW1haWxBZGRyZXNzLl9lbWFpbFJlZ2V4fHxuZXcgUmVnRXhw KCJeIitSaWdodE5vdy5JbnRlcmZhY2UuZ2V0Q29uZmlnKCJERV9WQUxJRF9FTUFJ TF9QQVRURVJOIikrIiQiLCJpIik7cmV0dXJuIHRoaXMuaXNWYWxpZEVtYWlsQWRk cmVzcy5fZW1haWxSZWdleC50ZXN0KGEpfSxFbmNvZGluZzp7X2Jhc2U2NGNoYXJh Y3Rlck1hcDoiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xt bm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlfLy4iLGJhc2U2NERlY29kZTpmdW5jdGlv bihhKXtmb3IodmFyIGM9W10sZT0wO2U8YS5sZW5ndGg7KXt2YXIgZj0KdGhpcy5f YmFzZTY0Y2hhcmFjdGVyTWFwLmluZGV4T2YoYS5jaGFyQXQoZSsrKSksaD10aGlz Ll9iYXNlNjRjaGFyYWN0ZXJNYXAuaW5kZXhPZihhLmNoYXJBdChlKyspKTtjLnB1 c2goU3RyaW5nLmZyb21DaGFyQ29kZShmPDwyfGg+PjQpKTtmPXRoaXMuX2Jhc2U2 NGNoYXJhY3Rlck1hcC5pbmRleE9mKGEuY2hhckF0KGUrKykpO2lmKDY0PT09Zili cmVhaztjLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgoaCYxNSk8PDR8Zj4+Mikp O2g9dGhpcy5fYmFzZTY0Y2hhcmFjdGVyTWFwLmluZGV4T2YoYS5jaGFyQXQoZSsr KSk7aCE9PTY0JiZjLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgoZiYzKTw8Nnxo KSl9cmV0dXJuIHRoaXMudXRmOERlY29kZShjLmpvaW4oIiIpKX0sYmFzZTY0RW5j b2RlOmZ1bmN0aW9uKGEpe2E9dGhpcy51dGY4RW5jb2RlKGEpO2Zvcih2YXIgYz1b XSxlPTA7ZTxhLmxlbmd0aDspe3ZhciBmPWEuY2hhckNvZGVBdChlKyspO2MucHVz aCh0aGlzLl9iYXNlNjRjaGFyYWN0ZXJNYXAuY2hhckF0KGY+PgoyKSk7dmFyIGg9 YS5jaGFyQ29kZUF0KGUrKyk7Yy5wdXNoKHRoaXMuX2Jhc2U2NGNoYXJhY3Rlck1h cC5jaGFyQXQoKGYmMyk8PDR8aD4+NCkpO2lmKGlzTmFOKGgpKXtjLnB1c2godGhp cy5fYmFzZTY0Y2hhcmFjdGVyTWFwLmNoYXJBdCg2NCkpO2MucHVzaCh0aGlzLl9i YXNlNjRjaGFyYWN0ZXJNYXAuY2hhckF0KDY0KSl9ZWxzZXtmPWEuY2hhckNvZGVB dChlKyspO2MucHVzaCh0aGlzLl9iYXNlNjRjaGFyYWN0ZXJNYXAuY2hhckF0KCho JjE1KTw8MnxmPj42KSk7aXNOYU4oZik/Yy5wdXNoKHRoaXMuX2Jhc2U2NGNoYXJh Y3Rlck1hcC5jaGFyQXQoNjQpKTpjLnB1c2godGhpcy5fYmFzZTY0Y2hhcmFjdGVy TWFwLmNoYXJBdChmJjYzKSl9fXJldHVybiBjLmpvaW4oIiIpfSxnZXRBc2NpaVBy ZWZpeDpmdW5jdGlvbihhKXtmb3IodmFyIGM9MDtjPGEubGVuZ3RoOysrYylpZigx Mjg8PWEuY2hhckNvZGVBdChjKSlicmVhaztpZihjPj1hLmxlbmd0aClyZXR1cm4g YTtyZXR1cm4gYS5zdWJzdHJpbmcoMCwKYyl9LHV0ZjhEZWNvZGU6ZnVuY3Rpb24o YSl7dmFyIGM9dGhpcy5nZXRBc2NpaVByZWZpeChhKTtpZihjLmxlbmd0aD09PWEu bGVuZ3RoKXJldHVybiBjO2Zvcih2YXIgZT1bXSxmLGgsZz1jLmxlbmd0aDtnPGEu bGVuZ3RoOysrZyl7dmFyIGo9YS5jaGFyQ29kZUF0KGcpO2lmKGo8MTI4KWUucHVz aChTdHJpbmcuZnJvbUNoYXJDb2RlKGopKTtlbHNlIGlmKGo8MTkyKXRocm93IG5l dyBFcnJvcigiSSBjYW4ndCBkZWNvZGUgdGhlIGNoYXJhY3RlciBhdCBpbmRleCAi K2crIiBvZiAiK2ErIiBiZWNhdXNlIGl0J3Mgbm90IGEgdmFsaWQgVVRGOCBzZXF1 ZW5jZS4iKTtlbHNlIGlmKGo8MjI0KXtpZihhLmxlbmd0aDw9KytnKXRocm93IG5l dyBFcnJvcigiSSBjYW4ndCBkZWNvZGUgdGhlIGNoYXJhY3RlciBhdCBpbmRleCAi K2crIiBvZiAiK2ErIiBiZWNhdXNlIGl0J3Mgbm90IGEgdmFsaWQgVVRGOCBzZXF1 ZW5jZS4iKTtmPWEuY2hhckNvZGVBdChnKTtlLnB1c2goU3RyaW5nLmZyb21DaGFy Q29kZSgoaiYKMzEpPDw2fGYmNjMpKX1lbHNle2Y9YS5jaGFyQ29kZUF0KCsrZyk7 aD1hLmNoYXJDb2RlQXQoKytnKTtpZihhLmxlbmd0aDw9Zyl0aHJvdyBuZXcgRXJy b3IoIkkgY2FuJ3QgZGVjb2RlIHRoZSBjaGFyYWN0ZXIgYXQgaW5kZXggIitnKyIg b2YgIithKyIgYmVjYXVzZSBpdCdzIG5vdCBhIHZhbGlkIFVURjggc2VxdWVuY2Uu Iik7ZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoKGomMTUpPDwxMnwoZiY2Myk8 PDZ8aCY2MykpfX1yZXR1cm4gYytlLmpvaW4oIiIpfSx1dGY4RW5jb2RlOmZ1bmN0 aW9uKGEpe3ZhciBjPXRoaXMuZ2V0QXNjaWlQcmVmaXgoYSk7aWYoYy5sZW5ndGg9 PT1hLmxlbmd0aClyZXR1cm4gYztmb3IodmFyIGU9W10sZj1jLmxlbmd0aDtmPGEu bGVuZ3RoOysrZil7dmFyIGg9YS5jaGFyQ29kZUF0KGYpO2lmKGg8MTI4KWUucHVz aChhLmNoYXJBdChmKSk7ZWxzZXtpZihoPDIwNDgpZS5wdXNoKFN0cmluZy5mcm9t Q2hhckNvZGUoaD4+NnwxOTIpKTtlbHNle2UucHVzaChTdHJpbmcuZnJvbUNoYXJD b2RlKGg+PgoxMnwyMjQpKTtlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShoPj42 JjYzfDEyOCkpfWUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGgmNjN8MTI4KSl9 fXJldHVybiBjK2Uuam9pbigiIil9LHV0ZjhMZW5ndGg6ZnVuY3Rpb24oYSl7dmFy IGMsZSxmPTA7Yz0wO2ZvcihlPWEubGVuZ3RoO2M8ZTtjKyspZis9YS5jaGFyQ29k ZUF0KGMpPDEyOD8xOmEuY2hhckNvZGVBdChjKTwyMDQ4PzI6MztyZXR1cm4gZn19 fTtpZihSaWdodE5vdy5VSSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBSaWdodE5vdy5V SSBuYW1lc3BhY2UgdmFyaWFibGUgaGFzIGFscmVhZHkgYmVlbiBkZWZpbmVkIHNv bWV3aGVyZS4iKTsKUmlnaHROb3cuVUk9e3ZpcnR1YWxCdWZmZXJVcGRhdGVUcmln Z2VyOm51bGwscHJlcGFyZVZpcnR1YWxCdWZmZXJVcGRhdGVUcmlnZ2VyOmZ1bmN0 aW9uKCl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpO1lBSE9PLnV0 aWwuRG9tLnNldFN0eWxlKGEsImRpc3BsYXkiLCJpbmxpbmUiKTt0aGlzLnZpcnR1 YWxCdWZmZXJVcGRhdGVUcmlnZ2VyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlu cHV0Iik7dGhpcy52aXJ0dWFsQnVmZmVyVXBkYXRlVHJpZ2dlci5zZXRBdHRyaWJ1 dGUoInR5cGUiLCJoaWRkZW4iKTt0aGlzLnZpcnR1YWxCdWZmZXJVcGRhdGVUcmln Z2VyLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIxIik7dGhpcy52aXJ0dWFsQnVmZmVy VXBkYXRlVHJpZ2dlci5zZXRBdHRyaWJ1dGUoImlkIiwicm5fVmlydHVhbEJ1ZmZl clVwZGF0ZVRyaWdnZXIiKTt0aGlzLnZpcnR1YWxCdWZmZXJVcGRhdGVUcmlnZ2Vy LnNldEF0dHJpYnV0ZSgibmFtZSIsInJuX1ZpcnR1YWxCdWZmZXJVcGRhdGVUcmln Z2VyIik7CmEuYXBwZW5kQ2hpbGQodGhpcy52aXJ0dWFsQnVmZmVyVXBkYXRlVHJp Z2dlcik7WUFIT08udXRpbC5Eb20uaW5zZXJ0QmVmb3JlKGEsZG9jdW1lbnQuYm9k eS5maXJzdENoaWxkKX0sYXJpYUhpZGVGcmFtZXM6ZnVuY3Rpb24oKXtpZihSaWdo dE5vdy5JbnRlcmZhY2UuQ29uc3RhbnRzLkNBTl9VU0VfQVJJQSl7dmFyIGE9ZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJuX0hpc3RvcnlfSWZyYW1lIik7aWYoYSl7 YS5zZXRBdHRyaWJ1dGUoInJvbGUiLCJwcmVzZW50YXRpb24iKTthLnRhYkluZGV4 PS0xfWlmKGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIl95dWlSZXNpemVNb25p dG9yIikpe2Euc2V0QXR0cmlidXRlKCJyb2xlIiwicHJlc2VudGF0aW9uIik7YS50 YWJJbmRleD0tMX19fSx1cGRhdGVWaXJ0dWFsQnVmZmVyOmZ1bmN0aW9uKCl7aWYo IVJpZ2h0Tm93LlVJLnZpcnR1YWxCdWZmZXJVcGRhdGVUcmlnZ2VyKVJpZ2h0Tm93 LlVJLnZpcnR1YWxCdWZmZXJVcGRhdGVUcmlnZ2VyPQpkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgicm5fVmlydHVhbEJ1ZmZlclVwZGF0ZVRyaWdnZXIiKTtpZihSaWdo dE5vdy5VSS52aXJ0dWFsQnVmZmVyVXBkYXRlVHJpZ2dlcilSaWdodE5vdy5VSS52 aXJ0dWFsQnVmZmVyVXBkYXRlVHJpZ2dlci5nZXRBdHRyaWJ1dGUoInZhbHVlIik9 PT0iMSI/UmlnaHROb3cuVUkudmlydHVhbEJ1ZmZlclVwZGF0ZVRyaWdnZXIuc2V0 QXR0cmlidXRlKCJ2YWx1ZSIsIjAiKTpSaWdodE5vdy5VSS52aXJ0dWFsQnVmZmVy VXBkYXRlVHJpZ2dlci5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiMSIpfSxhZGREZXZl bG9wbWVudEhlYWRlckVycm9yOmZ1bmN0aW9uKGEpe1JpZ2h0Tm93LlVJLkRldmVs b3BtZW50SGVhZGVyJiZSaWdodE5vdy5VSS5EZXZlbG9wbWVudEhlYWRlci5hZGRK YXZhc2NyaXB0RXJyb3IoYSl9LGFkZERldmVsb3BtZW50SGVhZGVyV2FybmluZzpm dW5jdGlvbihhKXtSaWdodE5vdy5VSS5EZXZlbG9wbWVudEhlYWRlciYmUmlnaHRO b3cuVUkuRGV2ZWxvcG1lbnRIZWFkZXIuYWRkSmF2YXNjcmlwdFdhcm5pbmcoYSl9 LApjaGFuZ2VDaGlsZENzc0NsYXNzOmZ1bmN0aW9uKGEsYyl7aWYoYS5oYXNDaGls ZE5vZGVzKCkpZm9yKHZhciBlPTA7ZTxhLmNoaWxkTm9kZXMubGVuZ3RoO2UrKyl7 YS5jaGlsZE5vZGVzW2VdLmhhc0NoaWxkTm9kZXMoKSYmUmlnaHROb3cuVUkuY2hh bmdlQ2hpbGRDc3NDbGFzcyhhLmNoaWxkTm9kZXNbZV0sYyk7YS5jaGlsZE5vZGVz W2VdLmNsYXNzTmFtZSYmWUFIT08udXRpbC5Eb20uYWRkQ2xhc3MoYS5jaGlsZE5v ZGVzW2VdLmlkLGMpfX0sY2xlYXJIaWdobGlnaHRzOmZ1bmN0aW9uKGEpe3ZhciBj PW5ldyBSZWdFeHAoJzxTUEFOIGNsYXNzPSI/aGlnaGxpZ2h0Ij8+KFtePF0rKTwv U1BBTj4nLCJnaSIpO3JldHVybiBhLnJlcGxhY2UoYywiJDEiKX0sZmluZFBhcmVu dEZvcm06ZnVuY3Rpb24oYSl7aWYoYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChh KSlmb3IoO2EucGFyZW50Tm9kZS50YWdOYW1lIT09IkJPRFkiOyl7YT1hLnBhcmVu dE5vZGU7aWYoYS50YWdOYW1lPT09IkZPUk0iKXtpZihhLmlkPT09CiIiKXJldHVy biBudWxsO3JldHVybiBhLmlkfX1yZXR1cm4gbnVsbH0saGlkZVNob3c6ZnVuY3Rp b24oYSxjLGUsZil7aWYoYz09PXVuZGVmaW5lZCljPSJvcGVuZXJfYnV0dG9uIjth PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpO2lmKGEuc3R5bGUuZGlzcGxheT09 Im5vbmUiKXthLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjt2YXIgaD0iL2V1Zi9hc3Nl dHMvaW1hZ2VzL2Fycm93c191cC5naWYiLGc9Zn1lbHNlIGlmKGEuc3R5bGUuZGlz cGxheT09ImJsb2NrIil7YS5zdHlsZS5kaXNwbGF5PSJub25lIjtoPSIvZXVmL2Fz c2V0cy9pbWFnZXMvYXJyb3dzX2Rvd24uZ2lmIjtnPWV9aWYoYyE9PSIiJiZoIT11 bmRlZmluZWQpaWYoYz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChjKSl7Yy5zcmM9 aDtpZihnIT11bmRlZmluZWQpYy5hbHQ9Z319LGhpZ2hsaWdodEVsZW1lbnQ6ZnVu Y3Rpb24oYSxjKXtmb3IodmFyIGU9IjxzcGFuIGNsYXNzPSdoaWdobGlnaHQnPiIs Zj0iPC9zcGFuPiIsaD0KIiIsZz0tMSxqPWMudG9Mb3dlckNhc2UoKS5yZXBsYWNl KC8mL2csIiZhbXA7IiksbD1hLnRvTG93ZXJDYXNlKCk7YS5sZW5ndGg+MDspe2c9 bC5pbmRleE9mKGosZysxKTtpZihnPDApe2grPWE7YT0iIn1lbHNlIGlmKGEubGFz dEluZGV4T2YoIj4iLGcpPj1hLmxhc3RJbmRleE9mKCI8IixnKSlpZihsLmxhc3RJ bmRleE9mKCIvc2NyaXB0PiIsZyk+PWwubGFzdEluZGV4T2YoIjxzY3JpcHQiLGcp KXtoKz1hLnN1YnN0cmluZygwLGcpK2UrYS5zdWJzdHIoZyxjLmxlbmd0aCkrZjth PWEuc3Vic3RyKGcrYy5sZW5ndGgpO2w9YS50b0xvd2VyQ2FzZSgpO2c9LTF9fXJl dHVybiBofSxnZXRJbnB1dEZpZWxkQnlDb2x1bW5OYW1lOmZ1bmN0aW9uKGEsYyl7 YT1uZXcgUmVnRXhwKCJeIithKTtpZih0eXBlb2YgYyE9PSJvYmplY3QiKWM9ZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoYyk7Zm9yKHZhciBlPTA7ZTxjLmVsZW1lbnRz Lmxlbmd0aDtlKyspaWYoYy5lbGVtZW50c1tlXSYmYy5lbGVtZW50c1tlXS5uYW1l JiYKYS50ZXN0KGMuZWxlbWVudHNbZV0ubmFtZSkpcmV0dXJuIGU7cmV0dXJuIG51 bGx9LHN1YnNjcmliZU9uY2U6ZnVuY3Rpb24oYSxjLGUpe3ZhciBmPXRydWU7aWYo WUFIT08ubGFuZy5pc09iamVjdChhKSlmb3IodmFyIGg9MDtoPGEubGVuZ3RoO2gr KylmPXRoaXMuc3Vic2NyaWJlT25jZUhlbHBlcihhW2hdLGMsZSkmJmY7ZWxzZSBm PXRoaXMuc3Vic2NyaWJlT25jZUhlbHBlcihhLGMsZSk7cmV0dXJuIGZ9LHN1YnNj cmliZU9uY2VIZWxwZXI6ZnVuY3Rpb24oYSxjLGUpe3ZhciBmPVlBSE9PLnV0aWwu RXZlbnQuZ2V0TGlzdGVuZXJzKGEsYyksaD10cnVlLGc9dHJ1ZTtpZihmKWZvcih2 YXIgaj0wO2o8Zi5sZW5ndGgmJmg7KXtpZihmW2pdLmZuPT1lKWg9ZmFsc2U7aisr fWlmKGgpZz1ZQUhPTy51dGlsLkV2ZW50LmFkZExpc3RlbmVyKGEsYyxlKTtyZXR1 cm4gZ30sdG9nZ2xlVmlzaWJpbGl0eUFuZFRleHQ6ZnVuY3Rpb24oYSxjLGUsZil7 aWYoYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKSlpZihhLnN0eWxlLmRpc3Bs YXk9PT0KIm5vbmUiKXthLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjtkb2N1bWVudC5n ZXRFbGVtZW50QnlJZChjKS5pbm5lckhUTUw9ZX1lbHNlIGlmKGEuc3R5bGUuZGlz cGxheT09PSJibG9jayIpe2Euc3R5bGUuZGlzcGxheT0ibm9uZSI7ZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoYykuaW5uZXJIVE1MPWZ9fSxGb3JtOntjaGF0U3VibWl0 OjAsY3VycmVudFByb2R1Y3Q6MCxlcnJvckNvdW50OjAsZm9ybTpudWxsLGZvcm1F cnJvcjpmYWxzZSxmb3JtVG9rZW46bnVsbCxmb3JtRmllbGRzOltdLGxpbmtpbmdG aWx0ZXI6IiIsbGlua2luZ09uOmZhbHNlLGxvZ291dEluUHJvZ3Jlc3M6ZmFsc2Us cGFzc3dvcmRSZXNldDpmYWxzZSx3aWRnZXRzVG9Qcm9jZXNzOjAsd2lkZ2V0c1Rv VmFsaWRhdGU6MH0sRGlhbG9nOntfZGlhbG9nQ291bnQ6MCxfdG9wUmVuZGVyRGl2 OiIiLHNldFJlbmRlckRpdjpmdW5jdGlvbigpe3RoaXMuX3RvcFJlbmRlckRpdj1k b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKWUFIT08udXRpbC5Eb20uaW5z ZXJ0QmVmb3JlKHRoaXMuX3RvcFJlbmRlckRpdixkb2N1bWVudC5ib2R5LmZpcnN0 Q2hpbGQpfSxhY3Rpb25EaWFsb2c6ZnVuY3Rpb24oYSxjLGUpe2lmKCFhfHwhY3x8 IWMubm9kZVR5cGUpcmV0dXJuIG51bGw7Yz10aGlzLl9jcmVhdGVEaWFsb2coYSxj LGUpO2UmJmUuaGlkZU9uRW50ZXJLZXlQcmVzcyYmZS5oaWRlT25FbnRlcktleVBy ZXNzPT09dHJ1ZSYmdGhpcy5hZGREaWFsb2dFbnRlcktleUxpc3RlbmVyKGMsYy5o aWRlKCkpO3ZhciBmPVlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRCeShmdW5jdGlv bihnKXtyZXR1cm4oZy50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQifHxn LnRhZ05hbWUudG9Mb3dlckNhc2UoKT09PSJ0ZXh0YXJlYSIpJiZnLnR5cGUhPT0i aGlkZGVuIn0sbnVsbCxjLmVsZW1lbnQpO2lmKGYuaWQpe2MuZmlyc3RGb3JtRWxl bWVudD1mO2U9WUFIT08udXRpbC5Eb20uZ2V0UHJldmlvdXNTaWJsaW5nKGYpO3Zh ciBoPQpmdW5jdGlvbihnKXtyZXR1cm4gZy50YWdOYW1lLnRvTG93ZXJDYXNlKCk9 PT0ibGFiZWwiJiZZQUhPTy51dGlsLkRvbS5nZXRBdHRyaWJ1dGUoZywiZm9yIik9 PT1mLmlkfTtpZihlPWUmJmgoZSk/ZTpZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50 QnkoaCwibGFiZWwiLGMuZWxlbWVudCkpZS5pbm5lckhUTUw9JzxzcGFuIGNsYXNz PSJybl9TY3JlZW5SZWFkZXJPbmx5Ij4nK2ErIiAiK1JpZ2h0Tm93LkludGVyZmFj ZS5nZXRNZXNzYWdlKCJESUFMT0dfTEJMIikrIiA8L3NwYW4+IitlLmlubmVySFRN TH1lbHNlIGlmKGMuZGVmYXVsdEh0bWxCdXR0b24pe2MuZGVmYXVsdEh0bWxCdXR0 b24uaW5uZXJIVE1MPSc8c3BhbiBjbGFzcz0icm5fU2NyZWVuUmVhZGVyT25seSI+ JythKyIgIitSaWdodE5vdy5JbnRlcmZhY2UuZ2V0TWVzc2FnZSgiRElBTE9HX1BM RUFTRV9SRUFEX1RFWFRfRElBTE9HX01TR19NU0ciKSsiIDwvc3Bhbj4iK2MuZGVm YXVsdEh0bWxCdXR0b24uaW5uZXJIVE1MO2Muc2hvd0V2ZW50LnN1YnNjcmliZShj LmZvY3VzRGVmYXVsdEJ1dHRvbil9cmV0dXJuIGN9LAphZGREaWFsb2dFbnRlcktl eUxpc3RlbmVyOmZ1bmN0aW9uKGEsYyxlKXtpZighYXx8IWMpcmV0dXJuIG51bGw7 Yz1uZXcgWUFIT08udXRpbC5LZXlMaXN0ZW5lcihkb2N1bWVudCx7a2V5czoxM30s e2ZuOmMsc2NvcGU6ZSxjb3JyZWN0U2NvcGU6dHJ1ZX0pO2EuY2ZnLnNldFByb3Bl cnR5KCJrZXlsaXN0ZW5lcnMiLGMpO3JldHVybiBjfSxfY3JlYXRlRGlhbG9nOmZ1 bmN0aW9uKGEsYyxlKXt0aGlzLl9kaWFsb2dDb3VudCsrO3ZhciBmPSJybkRpYWxv ZyIrdGhpcy5fZGlhbG9nQ291bnQ7aWYoZT09PW51bGx8fGU9PT11bmRlZmluZWQp ZT17fTt2YXIgaD1jO2lmKFlBSE9PLmxhbmcuaXNPYmplY3QoYykmJmMubm9kZVZh bHVlKWg9Yy5ub2RlVmFsdWU7aWYoIWUuYnV0dG9ucyllLmJ1dHRvbnM9W3t0ZXh0 OlJpZ2h0Tm93LkludGVyZmFjZS5nZXRNZXNzYWdlKCJPS19MQkwiKSxoYW5kbGVy OmUuZXhpdENhbGxiYWNrfHxmdW5jdGlvbigpe3RoaXMuaGlkZSgpfSxpc0RlZmF1 bHQ6dHJ1ZX1dOwphPSc8c3BhbiBjbGFzcz0icm5fU2NyZWVuUmVhZGVyT25seSI+ JytSaWdodE5vdy5JbnRlcmZhY2UuZ2V0TWVzc2FnZSgiQkVHX0RJQUxPR19QTFNf RElTTUlTU19ESUFMT0dfQkVGX01TRyIpKyI8YnIgLz48L3NwYW4+IithO2g9bmV3 IFlBSE9PLndpZGdldC5TaW1wbGVEaWFsb2coZix7dmlzaWJsZTpmYWxzZSx6SW5k ZXg6OTk5OSxkcmFnZ2FibGU6ZmFsc2UsZml4ZWRjZW50ZXI6ImNvbnRhaW5lZCIs bW9kYWw6dHJ1ZSxwb3NpdGlvbjoiYWJzb2x1dGUiLGNvbnN0cmFpbnRvdmlld3Bv cnQ6dHJ1ZSx1bmRlcmxheToibm9uZSIsYnV0dG9uczplLmJ1dHRvbnMsY2xvc2U6 dHJ1ZX0pO2guc2V0SGVhZGVyKGEpO2guc2V0Qm9keShjKTtSaWdodE5vdy5JbnRl cmZhY2UuQ29uc3RhbnRzLkNBTl9VU0VfQVJJQSYmaC5jZmcuc2V0UHJvcGVydHko InJvbGUiLCJkaWFsb2ciKTtlLndpZHRoJiZoLmNmZy5xdWV1ZVByb3BlcnR5KCJ3 aWR0aCIsZS53aWR0aCk7aC5yZW5kZXJFdmVudC5zdWJzY3JpYmUoUmlnaHROb3cu VUkudXBkYXRlVmlydHVhbEJ1ZmZlcik7CmgucmVuZGVyKHRoaXMuX3RvcFJlbmRl ckRpdik7YT1ZQUhPTy51dGlsLkRvbTthLnNldFN0eWxlKGguY2xvc2UsIm92ZXJm bG93IiwiaGlkZGVuIik7YS5zZXRTdHlsZShoLmNsb3NlLCJ0ZXh0LWluZGVudCIs Ii0xMDAwMGVtIik7YS5zZXRTdHlsZShoLmNsb3NlLCJ0ZXh0LWRlY29yYXRpb24i LCJub25lIik7aC5icmluZ1RvVG9wJiZoLmJyaW5nVG9Ub3AoKTthLmFkZENsYXNz KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGYpLCJybl9EaWFsb2ciKTtmPWRvY3Vt ZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtmLmFwcGVuZENoaWxkKGRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoImJyIikpO2YuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl YXRlVGV4dE5vZGUoUmlnaHROb3cuSW50ZXJmYWNlLmdldE1lc3NhZ2UoIkVORF9E SUFMT0dfUExTX0RJU01JU1NfRElBTE9HX0JFRl9NU0ciKSkpO2EuYWRkQ2xhc3Mo Ziwicm5fU2NyZWVuUmVhZGVyT25seSIpO2guYXBwZW5kVG9Gb290ZXIoZik7aWYo ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCl7Zj0KZnVuY3Rpb24oKXtpZih0aGlzLmZv Y3VzKXRyeXt0aGlzLmZvY3VzKCl9Y2F0Y2goZyl7fX07aC5oaWRlRXZlbnQuc3Vi c2NyaWJlKGYsZG9jdW1lbnQuYWN0aXZlRWxlbWVudCx0cnVlKX1oLmhpZGVFdmVu dC5zdWJzY3JpYmUoUmlnaHROb3cuVUkudXBkYXRlVmlydHVhbEJ1ZmZlcik7aC5z aG93RXZlbnQuc3Vic2NyaWJlKFJpZ2h0Tm93LlVJLnVwZGF0ZVZpcnR1YWxCdWZm ZXIpO3JldHVybiBofSxkaXNhYmxlRGlhbG9nQnV0dG9uczpmdW5jdGlvbihhKXth PWEuZ2V0QnV0dG9ucygpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWFbY10u ZGlzYWJsZWQ9dHJ1ZX0sZGlzYWJsZURpYWxvZ0NvbnRyb2xzOmZ1bmN0aW9uKGEs Yyl7dGhpcy5kaXNhYmxlRGlhbG9nS2V5TGlzdGVuZXIoYSxjKTt0aGlzLmRpc2Fi bGVEaWFsb2dCdXR0b25zKGEpfSxkaXNhYmxlRGlhbG9nS2V5TGlzdGVuZXI6ZnVu Y3Rpb24oYSxjKXtpZighYXx8IWMpcmV0dXJuIG51bGw7YS5jZmcuc2V0UHJvcGVy dHkoImtleWxpc3RlbmVycyIsCm51bGwpO2MuZGlzYWJsZSgpfSxlbmFibGVEaWFs b2dCdXR0b25zOmZ1bmN0aW9uKGEpe2E9YS5nZXRCdXR0b25zKCk7Zm9yKHZhciBj PTA7YzxhLmxlbmd0aDtjKyspYVtjXS5kaXNhYmxlZD1mYWxzZX0sZW5hYmxlRGlh bG9nQ29udHJvbHM6ZnVuY3Rpb24oYSxjLGUpe3RoaXMuZW5hYmxlRGlhbG9nS2V5 TGlzdGVuZXIoYSxjKTt0aGlzLmVuYWJsZURpYWxvZ0J1dHRvbnMoYSk7ZSYmZS5m b2N1cygpfSxlbmFibGVEaWFsb2dLZXlMaXN0ZW5lcjpmdW5jdGlvbihhLGMpe2lm KCFhfHwhYylyZXR1cm4gbnVsbDthLmNmZy5zZXRQcm9wZXJ0eSgia2V5bGlzdGVu ZXJzIixjKTtjLmVuYWJsZSgpfSxtZXNzYWdlRGlhbG9nOmZ1bmN0aW9uKGEsYyl7 aWYoIWEpcmV0dXJuIGZhbHNlO2lmKGM9PT1udWxsfHxjPT09dW5kZWZpbmVkKWM9 e307dmFyIGUsZixoO2Y9WUFIT08ud2lkZ2V0LlNpbXBsZURpYWxvZztzd2l0Y2go Yy5pY29uKXtjYXNlICJIRUxQIjplPVJpZ2h0Tm93LkludGVyZmFjZS5nZXRNZXNz YWdlKCJIRUxQX0xCTCIpOwpmPWYuSUNPTl9IRUxQO2JyZWFrO2Nhc2UgIldBUk4i OmU9UmlnaHROb3cuSW50ZXJmYWNlLmdldE1lc3NhZ2UoIldBUk5JTkdfTEJMIik7 Zj1mLklDT05fV0FSTjticmVhaztjYXNlICJUSVAiOmU9UmlnaHROb3cuSW50ZXJm YWNlLmdldE1lc3NhZ2UoIlRJUF9MQkwiKTtmPWYuSUNPTl9USVA7YnJlYWs7Y2Fz ZSAiQUxBUk0iOmU9UmlnaHROb3cuSW50ZXJmYWNlLmdldE1lc3NhZ2UoIkFMQVJN X0xCTCIpO2Y9Zi5JQ09OX0FMQVJNO2JyZWFrO2Nhc2UgIkJMT0NLIjplPVJpZ2h0 Tm93LkludGVyZmFjZS5nZXRNZXNzYWdlKCJCTE9DS19MQkwiKTtmPWYuSUNPTl9C TE9DSzticmVhaztjYXNlICJJTkZPIjpkZWZhdWx0OmU9UmlnaHROb3cuSW50ZXJm YWNlLmdldE1lc3NhZ2UoIklORk9STUFUSU9OX0xCTCIpO2Y9Zi5JQ09OX0lORk87 YnJlYWt9ZT1jLnRpdGxlfHxlO2lmKCFjLndpZHRoKWMud2lkdGg9IjIwZW0iO2g9 Yy5leGl0Q2FsbGJhY2t8fGMuZm9jdXNFbGVtZW50P2Z1bmN0aW9uKCl7dGhpcy5o aWRlKCk7CmlmKGMuZXhpdENhbGxiYWNrJiZ0eXBlb2YgYy5leGl0Q2FsbGJhY2s9 PT0iZnVuY3Rpb24iKWMuZXhpdENhbGxiYWNrKGMuZm9jdXNFbGVtZW50KTtlbHNl IGlmKGMuZXhpdENhbGxiYWNrJiZjLmV4aXRDYWxsYmFjay5mbiYmYy5leGl0Q2Fs bGJhY2suc2NvcGUpYy5leGl0Q2FsbGJhY2suZm4uY2FsbChjLmV4aXRDYWxsYmFj ay5zY29wZSxjLmZvY3VzRWxlbWVudCk7ZWxzZSBpZihjLmZvY3VzRWxlbWVudCl7 dmFyIGo9dHlwZW9mIGMuZm9jdXNFbGVtZW50PT09InN0cmluZyI/ZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoYy5mb2N1c0VsZW1lbnQpOmMuZm9jdXNFbGVtZW50O2om JmouZm9jdXMmJmouZm9jdXMoKX19OmZ1bmN0aW9uKCl7dGhpcy5oaWRlKCl9O3Zh ciBnPXRoaXMuX2NyZWF0ZURpYWxvZyhlLGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl KGEpLHt3aWR0aDpjLndpZHRoLGV4aXRDYWxsYmFjazpofSk7Zy5jZmcuc2V0UHJv cGVydHkoImljb24iLGYpO1JpZ2h0Tm93LkludGVyZmFjZS5Db25zdGFudHMuQ0FO X1VTRV9BUklBJiYKZy5jZmcuc2V0UHJvcGVydHkoInJvbGUiLCJhbGVydGRpYWxv ZyIpO2cuZGVmYXVsdEh0bWxCdXR0b24uaW5uZXJIVE1MPSc8c3BhbiBjbGFzcz0i cm5fU2NyZWVuUmVhZGVyT25seSI+JytlKyIgIitSaWdodE5vdy5JbnRlcmZhY2Uu Z2V0TWVzc2FnZSgiRElBTE9HX0xCTCIpKyIgIithKyIgPC9zcGFuPiIrZy5kZWZh dWx0SHRtbEJ1dHRvbi5pbm5lckhUTUw7Zy5oaWRlRXZlbnQuc3Vic2NyaWJlKGgp O1lBSE9PLmxhbmcubGF0ZXIoMUUzLGcsInNob3ciKTtyZXR1cm4gZ319fTtZQUhP Ty53aWRnZXQuU2ltcGxlRGlhbG9nLnByb3RvdHlwZS5mb2N1c0ZpcnN0PVlBSE9P LndpZGdldC5QYW5lbC5wcm90b3R5cGUuZm9jdXNGaXJzdDtZQUhPTy53aWRnZXQu U2ltcGxlRGlhbG9nLnByb3RvdHlwZS5kaXNhYmxlQnV0dG9ucz1mdW5jdGlvbigp e2Zvcih2YXIgYT10aGlzLmdldEJ1dHRvbnMoKSxjPTA7YzxhLmxlbmd0aDtjKysp YVtjXS5kaXNhYmxlZD10cnVlfTsKWUFIT08ud2lkZ2V0LlNpbXBsZURpYWxvZy5w cm90b3R5cGUuZW5hYmxlQnV0dG9ucz1mdW5jdGlvbigpe2Zvcih2YXIgYT10aGlz LmdldEJ1dHRvbnMoKSxjPTA7YzxhLmxlbmd0aDtjKyspYVtjXS5kaXNhYmxlZD1m YWxzZX07WUFIT08ud2lkZ2V0LlNpbXBsZURpYWxvZy5wcm90b3R5cGUuZW5hYmxl U2Vjb25kQnV0dG9uPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRCdXR0b25zKCk7 aWYoYVsxXSlhWzFdLmRpc2FibGVkPWZhbHNlfTtpZihSaWdodE5vdy5VcmwpdGhy b3cgbmV3IEVycm9yKCJUaGUgUmlnaHROb3cuVXJsIG5hbWVzcGFjZSB2YXJpYWJs ZSBoYXMgYWxyZWFkeSBiZWVuIGRlZmluZWQgc29tZXdoZXJlLiIpOwpSaWdodE5v dy5Vcmw9e19wYXJhbWV0ZXJTZWdtZW50OjAsX3Nlc3Npb25QYXJtOiIiLGFkZFBh cmFtZXRlcjpmdW5jdGlvbihhLGMsZSl7aWYoZT09bnVsbClyZXR1cm4gYTt2YXIg Zj1hLmluZGV4T2YoIiMiKSxoPWZhbHNlO2lmKGY+PTApe3ZhciBnPWEuc3Vic3Ry KGYpO2E9YS5zdWJzdHIoMCxmKTtoPXRydWV9aWYoZS50b1N0cmluZygpLmxlbmd0 aD4wKXtlPWU9PT0iLiJ8fGU9PT0iLi4iPyIgIitlOmU7ZT1lbmNvZGVVUklDb21w b25lbnQoZSk7aWYoYS5pbmRleE9mKCI/Iik+PTApe2Y9bmV3IFJlZ0V4cCgiJiIr YysiPVteJl0rIik7Yz0iJiIrYysiPSI7dmFyIGo9IiYifWVsc2V7Zj1uZXcgUmVn RXhwKCIvIitjKyIvW14vXSsiKTtjPSIvIitjKyIvIjtqPSIvIn1pZihhLmluZGV4 T2YoYyk+PTApYT1hLnJlcGxhY2UoZixjK2UpO2Vsc2V7aWYoYS5jaGFyQXQoYS5s ZW5ndGgtMSk9PT1qKWE9YS5zdWJzdHIoMCxhLmxlbmd0aC0xKTthKz1jK2V9fWlm KGgpcmV0dXJuIGErZzsKcmV0dXJuIGF9LGJ1aWxkVXJsTGlua1N0cmluZzpmdW5j dGlvbihhKXtmb3IodmFyIGM9IiIsZT1hLmZvcm1hdC5wYXJtTGlzdD9hLmZvcm1h dC5wYXJtTGlzdC5zcGxpdCgiLCIpOltdLGY9MDtmPGUubGVuZ3RoO2YrKyl7dmFy IGg9ZVtmXSxnPWVbZl0saj10aGlzLmdldFBhcmFtZXRlcihoKTtpZihqIT09bnVs bCljPXRoaXMuYWRkUGFyYW1ldGVyKGMsaCxqKTtnPWc9PT0ia3ciPyJrZXl3b3Jk IjpnO2c9Zz09PSJzdCI/InNlYXJjaFR5cGUiOmc7Zz1nPT09InNvcnQiPyJzb3J0 X2FyZ3MiOmc7aWYoZz09PSJwYWdlIiljPXRoaXMuYWRkUGFyYW1ldGVyKGMsZyxh W2hdKTtlbHNlIGlmKGEuZmlsdGVyc1tnXSYmYS5maWx0ZXJzW2ddLmZpbHRlcnMm JmEuZmlsdGVyc1tnXS5maWx0ZXJzLmRhdGEhPW51bGwpe2o9YS5maWx0ZXJzW2dd LmZpbHRlcnMuZGF0YS52YWwhPW51bGw/YS5maWx0ZXJzW2ddLmZpbHRlcnMuZGF0 YS52YWw6YS5maWx0ZXJzW2ddLmZpbHRlcnMuZGF0YTtpZihnPT09CiJzb3J0X2Fy Z3MiKWo9YS5maWx0ZXJzW2ddLmZpbHRlcnMuZGF0YS5jb2xfaWQrIiwiK2EuZmls dGVyc1tnXS5maWx0ZXJzLmRhdGEuc29ydF9kaXJlY3Rpb247ZWxzZSBpZihnPT09 Im9yZyIpaj1hLmZpbHRlcnNbZ10uZmlsdGVycy5kYXRhLnNlbGVjdGVkO2Vsc2Ug aWYoZz09PSJwInx8Zz09PSJjIilqPWpbMF07aWYoWUFIT08ubGFuZy5pc0FycmF5 KGopKWo9ai5qb2luKCIsIik7aWYoaiE9bnVsbCljPXRoaXMuYWRkUGFyYW1ldGVy KGMsaCxqKX19cmV0dXJuIGN9LGNvbnZlcnRTZWFyY2hGaWx0ZXJzOmZ1bmN0aW9u KGEsYyxlLGYpe3ZhciBoPWE7Zm9yKHZhciBnIGluIGMpaWYodHlwZW9mIGNbZ10h PT0iZnVuY3Rpb24iKXt2YXIgaj1nLGw9IiI7aWYoZz09PSJrZXl3b3JkIil7aj0i a3ciO2w9Y1tnXS5maWx0ZXJzLmRhdGEudmFsIT1udWxsP2NbZ10uZmlsdGVycy5k YXRhLnZhbDpjW2ddLmZpbHRlcnMuZGF0YTtpZihSaWdodE5vdy5Qcm9maWxlLmtl eXdvcmQhPSIiJiZSaWdodE5vdy5Qcm9maWxlLmtleXdvcmQhPQpsfHxjW2ddLmZp bHRlcnMucmVwb3J0X2RlZiYmY1tnXS5maWx0ZXJzLnJlcG9ydF9kZWYhPWx8fCFj W2ddLmZpbHRlcnMucmVwb3J0X2RlZiYmbCE9IiIpaWYodHlwZW9mIGwhPT0ib2Jq ZWN0Iil7bD1sPT0iIj8iICI6bDthPXRoaXMuYWRkUGFyYW1ldGVyKGEsaixsKX19 ZWxzZSBpZihnPT09InNlYXJjaFR5cGUiKXtqPSJzdCI7aWYoKGw9Y1tnXS5maWx0 ZXJzLmZsdHJfaWQpJiZjW2ddLmZpbHRlcnMuY2hhbmdlZClhPXRoaXMuYWRkUGFy YW1ldGVyKGEsaixsKX1lbHNlIGlmKGc9PT0icGFnZSIpe2lmKGNbZ10+MSl7aj0i cGFnZSI7bD1jW2ddO2E9dGhpcy5hZGRQYXJhbWV0ZXIoYSxqLGwpfX1lbHNlIGlm KGc9PT0ic29ydF9hcmdzIil7bD1jW2ddLmZpbHRlcnMuZGF0YSYmY1tnXS5maWx0 ZXJzLmRhdGEuY29sX2lkP2NbZ10uZmlsdGVycy5kYXRhLmNvbF9pZDpjW2ddLmZp bHRlcnMuY29sX2lkO3ZhciB3PWNbZ10uZmlsdGVycy5kYXRhJiZjW2ddLmZpbHRl cnMuZGF0YS5zb3J0X2RpcmVjdGlvbj8KY1tnXS5maWx0ZXJzLmRhdGEuc29ydF9k aXJlY3Rpb246Y1tnXS5maWx0ZXJzLnNvcnRfZGlyZWN0aW9uO2lmKGwhPXVuZGVm aW5lZCYmbD49MCl7aj0ic29ydCI7bD1sKyIsIit3O2E9dGhpcy5hZGRQYXJhbWV0 ZXIoYSxqLGwpfX1lbHNlIGlmKGc9PT0icCJ8fGc9PT0iYyIpe2w9Y1tnXS5maWx0 ZXJzLmRhdGEudG9TdHJpbmcoKTtqPWNbZ10uZmlsdGVycy5yZXBvcnRfZGVmO2o9 aj09dW5kZWZpbmVkfHxqPT1SaWdodE5vdy5JbnRlcmZhY2UuQ29uc3RhbnRzLkFO WV9GSUxURVJfVkFMVUU/IiI6ai50b1N0cmluZygpO3c9Zz09PSJwIj9SaWdodE5v dy5UZXh0LnRyaW1Db21tYShSaWdodE5vdy5Qcm9maWxlLnByb2R1Y3QpOlJpZ2h0 Tm93LlRleHQudHJpbUNvbW1hKFJpZ2h0Tm93LlByb2ZpbGUuY2F0ZWdvcnkpO2lm KGwhPSIiJiZqIT1sJiZ3IT1sKWE9dGhpcy5hZGRQYXJhbWV0ZXIoYSxnLGwpO2Vs c2UgaWYobD09IiImJihqIT0iInx8dyE9IiIpKWE9dGhpcy5hZGRQYXJhbWV0ZXIo YSwKZywiICIpfWVsc2UgaWYoZz09PSJvcmciJiZjW2ddLmZpbHRlcnMmJmNbZ10u ZmlsdGVycy5kYXRhJiZjW2ddLmZpbHRlcnMuZGF0YS5zZWxlY3RlZCE9bnVsbCl7 bD1jW2ddLmZpbHRlcnMuZGF0YS5zZWxlY3RlZDthPXRoaXMuYWRkUGFyYW1ldGVy KGEsaixsKX1lbHNlIGlmKGNbZ10mJmNbZ10uZmlsdGVycyYmY1tnXS5maWx0ZXJz LmRhdGEhPW51bGwpe2w9Y1tnXS5maWx0ZXJzLmRhdGEudmFsP2NbZ10uZmlsdGVy cy5kYXRhLnZhbDpjW2ddLmZpbHRlcnMuZGF0YTtpZih0eXBlb2YgbCE9PSJvYmpl Y3QiKWE9dGhpcy5hZGRQYXJhbWV0ZXIoYSxqLGwpfX1pZihoLmxlbmd0aCE9YS5s ZW5ndGgpYT10aGlzLmFkZFBhcmFtZXRlcihhLCJyX2lkIixlKTtpZihmIT1udWxs KWE9dGhpcy5hZGRQYXJhbWV0ZXIoYSwic25vIixmKTtyZXR1cm4gYX0sY29udmVy dFNlYXJjaEZpbHRlcnNUb1Bhcm1zOmZ1bmN0aW9uKGEsYyxlKXtmb3IodmFyIGYg aW4gYylpZih0eXBlb2YgY1tmXSE9PSJmdW5jdGlvbiIpe3ZhciBoPQpmLGc9IiI7 aWYoZj09PSJrZXl3b3JkIil7aD0ia3ciO2c9Y1tmXS5maWx0ZXJzLmRhdGE7aWYo ZyE9IiIpYT10aGlzLmFkZFBhcmFtZXRlcihhLGgsZyl9ZWxzZSBpZihmPT09InNl YXJjaFR5cGUiKXtoPSJzdCI7aWYoKGc9Y1tmXS5maWx0ZXJzLmZsdHJfaWQpJiZj W2ZdLmZpbHRlcnMuY2hhbmdlZClhPXRoaXMuYWRkUGFyYW1ldGVyKGEsaCxnKX1l bHNlIGlmKGY9PT0icGFnZSIpe2lmKGNbZl0+MSl7aD0icGFnZSI7Zz1jW2ZdO2E9 dGhpcy5hZGRQYXJhbWV0ZXIoYSxoLGcpfX1lbHNlIGlmKGY9PT0ic29ydF9hcmdz Iil7Zz1jW2ZdLmZpbHRlcnMuZGF0YSYmY1tmXS5maWx0ZXJzLmRhdGEuY29sX2lk P2NbZl0uZmlsdGVycy5kYXRhLmNvbF9pZDpjW2ZdLmZpbHRlcnMuY29sX2lkO3Zh ciBqPWNbZl0uZmlsdGVycy5kYXRhJiZjW2ZdLmZpbHRlcnMuZGF0YS5zb3J0X2Rp cmVjdGlvbj9jW2ZdLmZpbHRlcnMuZGF0YS5zb3J0X2RpcmVjdGlvbjpjW2ZdLmZp bHRlcnMuc29ydF9kaXJlY3Rpb247CmlmKGchPXVuZGVmaW5lZCYmZz49MCl7aD0i c29ydCI7Zz1nKyIsIitqO2E9dGhpcy5hZGRQYXJhbWV0ZXIoYSxoLGcpfX1lbHNl IGlmKGY9PT0icCJ8fGY9PT0iYyIpe2c9Y1tmXS5maWx0ZXJzLmRhdGFbMF0uam9p bigpO2lmKGchPT0iIilhPXRoaXMuYWRkUGFyYW1ldGVyKGEsZixnKX1lbHNlIGlm KGY9PT0ib3JnIiYmY1tmXS5maWx0ZXJzJiZjW2ZdLmZpbHRlcnMuZGF0YSYmY1tm XS5maWx0ZXJzLmRhdGEuc2VsZWN0ZWQhPW51bGwpe2c9Y1tmXS5maWx0ZXJzLmRh dGEuc2VsZWN0ZWQ7YT10aGlzLmFkZFBhcmFtZXRlcihhLGgsZyl9ZWxzZSBpZihj W2ZdJiZjW2ZdLmZpbHRlcnMmJmNbZl0uZmlsdGVycy5kYXRhIT1udWxsKXtnPWNb Zl0uZmlsdGVycy5kYXRhLnZhbD9jW2ZdLmZpbHRlcnMuZGF0YS52YWw6Y1tmXS5m aWx0ZXJzLmRhdGE7aWYodHlwZW9mIGchPT0ib2JqZWN0IilhPXRoaXMuYWRkUGFy YW1ldGVyKGEsaCxnKX19aWYoZSE9bnVsbClhPXRoaXMuYWRkUGFyYW1ldGVyKGEs CiJzbm8iLGUpO3JldHVybiBhfSxjb252ZXJ0VG9BcnJheTpmdW5jdGlvbihhKXtp Zih0eXBlb2YgYT09PSJ1bmRlZmluZWQifHxpc05hTihwYXJzZUludChhLDEwKSkp YT10aGlzLl9wYXJhbWV0ZXJTZWdtZW50O3ZhciBjPXdpbmRvdy5sb2NhdGlvbi5w YXRobmFtZSxlPVtdLGY9L1wvKy9nO2M9Yy5yZXBsYWNlKGYsIi8iKTtjPWMuc3Bs aXQoIi9hcHAiKTtpZihjLmxlbmd0aD4xKXtjPWNbMV0uc3BsaXQoIi8iKTtmb3Io YT1hLTI7YTxjLmxlbmd0aDthKz0yKWlmKGErMTxjLmxlbmd0aCllW2NbYV1dPWRl Y29kZVVSSUNvbXBvbmVudChjW2ErMV0pfXJldHVybiBlfSxkZWxldGVQYXJhbWV0 ZXI6ZnVuY3Rpb24oYSxjKXtpZihhLmluZGV4T2YoIi8iK2MrIi8iKT49MClyZXR1 cm4gYS5yZXBsYWNlKG5ldyBSZWdFeHAoIi8iK2MrIi9bXiMvXSsiKSwiIik7cmV0 dXJuIGF9LGdldFNlc3Npb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2Vzc2lv blBhcm19LGdldFBhcmFtZXRlclNlZ21lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy5fcGFyYW1ldGVyU2VnbWVudH0sCmdldFBhcmFtZXRlcjpmdW5jdGlvbihhKXt2 YXIgYz10aGlzLmNvbnZlcnRUb0FycmF5KHRoaXMuZ2V0UGFyYW1ldGVyU2VnbWVu dCgpKTtyZXR1cm4gY1thXXx8bnVsbH0sZ2V0VXJsUGFyYW1ldGVyc0Zyb21MaXN0 OmZ1bmN0aW9uKGEsYyl7aWYoYz09PXVuZGVmaW5lZCljPVtdO3ZhciBlPSIiO2E9 YS5yZXBsYWNlKC8gL2csIiIpLnNwbGl0KCIsIik7Zm9yKHZhciBmPTA7ZjxhLmxl bmd0aDtmKyspe2Zvcih2YXIgaD1mYWxzZSxnPTA7ZzxjLmxlbmd0aDtnKyspaWYo Y1tnXT09PWFbZl0pe2g9dHJ1ZTticmVha31pZighaCl7aD10aGlzLmdldFBhcmFt ZXRlcihhW2ZdKTtpZihoIT09bnVsbCllKz0iLyIrYVtmXSsiLyIraH19cmV0dXJu IGV9LG5hdmlnYXRlOmZ1bmN0aW9uKGEsYyl7aWYoIWMmJnRoaXMuZ2V0U2Vzc2lv bigpIT09IiIpYT10aGlzLmFkZFBhcmFtZXRlcihhLCJzZXNzaW9uIix0aGlzLmdl dFNlc3Npb24oKSk7aWYod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lPT09YSl3aW5k b3cubG9jYXRpb24ucmVsb2FkKHRydWUpOwplbHNlIHdpbmRvdy5sb2NhdGlvbj1h fSxzZXRQYXJhbWV0ZXJTZWdtZW50OmZ1bmN0aW9uKGEpe3RoaXMuX3BhcmFtZXRl clNlZ21lbnQ9YX0sc2V0U2Vzc2lvbjpmdW5jdGlvbihhKXt0aGlzLl9zZXNzaW9u UGFybT1hfSx0cmFuc2Zvcm1MaW5rczpmdW5jdGlvbihhKXtpZighYSlhPWRvY3Vt ZW50LmJvZHk7ZnVuY3Rpb24gYyhoKXt0cnl7dmFyIGc9aC5ocmVmO3JldHVybiEo Zy5pbmRleE9mKCJqYXZhc2NyaXB0OiIpPi0xfHxnPT09IiJ8fGguaG9zdG5hbWUh PT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWV8fGcuaW5kZXhPZigiZG9jX3ZpZXcu cGhwIik+LTF8fGcuaW5kZXhPZigiZG9jX3N1Ym1pdC5waHAiKT4tMXx8Zy5pbmRl eE9mKCJkb2Nfc2VydmUucGhwIik+LTF8fGcuaW5kZXhPZigidmVyaWZ5X2FjY3Rf bG9naW4ucGhwIik+LTF8fGcuaW5kZXhPZigiL2NpLyIpPi0xJiYhKGcuaW5kZXhP ZigiL2NpL29wZW5zZWFyY2giKT4tMSl8fGcuaW5kZXhPZigicWF1dGlscy5waHAi KT4KLTEpfWNhdGNoKGope3JldHVybiBmYWxzZX19dmFyIGU9ZG9jdW1lbnQuZ2V0 RWxlbWVudHNCeVRhZ05hbWUoImJhc2UiKTtlPWUubGVuZ3RoPjA/ZVswXS5ocmVm OiIiO2Z1bmN0aW9uIGYoaCl7dmFyIGc9aC5ocmVmLnNwbGl0KCIjIiksaj1oLmlu bmVySFRNTDtpZihnWzFdIT09dW5kZWZpbmVkJiZnWzBdPT09ZSl7aC5ocmVmPXdp bmRvdy5sb2NhdGlvbi5wYXRobmFtZSsiIyIrZ1sxXTtpZihqLmluZGV4T2YoIkAi KT4tMSloLmlubmVySFRNTD1qfWlmKFJpZ2h0Tm93LlVybC5nZXRTZXNzaW9uKCkh PT0iIiYmZ1swXSE9PWUpe2guaHJlZj1SaWdodE5vdy5VcmwuYWRkUGFyYW1ldGVy KGguaHJlZiwic2Vzc2lvbiIsUmlnaHROb3cuVXJsLmdldFNlc3Npb24oKSk7aWYo ai5pbmRleE9mKCJAIik+LTEpaC5pbm5lckhUTUw9an19WUFIT08udXRpbC5Eb20u Z2V0RWxlbWVudHNCeShjLCJhIixhLGYpfX07aWYoUmlnaHROb3cuRXZlbnQpdGhy b3cgbmV3IEVycm9yKCJUaGUgUmlnaHROb3cuRXZlbnQgbmFtZXNwYWNlIHZhcmlh YmxlIGhhcyBhbHJlYWR5IGJlZW4gZGVmaW5lZCBzb21ld2hlcmUuIik7ClJpZ2h0 Tm93LkV2ZW50PXtfZXZlbnRJbnN0YW5jZXM6e30sY3JlYXRlOmZ1bmN0aW9uKGEs Yyl7dGhpcy5fZXZlbnRJbnN0YW5jZXNbYV18fCh0aGlzLl9ldmVudEluc3RhbmNl c1thXT1jP25ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KGEsYyk6bmV3IFlBSE9P LnV0aWwuQ3VzdG9tRXZlbnQoYSkpfSxmaXJlOmZ1bmN0aW9uKGEpe2lmKHRoaXMu X2V2ZW50SW5zdGFuY2VzW2FdKXt2YXIgYz1bXS5zbGljZS5jYWxsKGFyZ3VtZW50 cywxKTt0aGlzLl9ldmVudEluc3RhbmNlc1thXS5maXJlLmFwcGx5KHRoaXMuX2V2 ZW50SW5zdGFuY2VzW2FdLGMpfX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlz Ll9ldmVudEluc3RhbmNlc1thXXx8bnVsbH0sZ2V0U3Vic2NyaWJlckxlbmd0aDpm dW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fZXZlbnRJbnN0YW5jZXNbYV0/dGhpcy5f ZXZlbnRJbnN0YW5jZXNbYV0uc3Vic2NyaWJlcnMubGVuZ3RoOjB9LHN1YnNjcmli ZTpmdW5jdGlvbihhLGMsZSwKZil7dGhpcy5fZXZlbnRJbnN0YW5jZXNbYV18fHRo aXMuY3JlYXRlKGEsZSk7dGhpcy5fZXZlbnRJbnN0YW5jZXNbYV0uc3Vic2NyaWJl KGMsZixlKX0sdW5zdWJzY3JpYmU6ZnVuY3Rpb24oYSxjKXt0aGlzLl9ldmVudElu c3RhbmNlc1thXSYmdGhpcy5fZXZlbnRJbnN0YW5jZXNbYV0udW5zdWJzY3JpYmUo Yyl9LGNyZWF0ZURlbGVnYXRlOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGZ1bmN0aW9u KCl7cmV0dXJuIGMuYXBwbHkoYSxhcmd1bWVudHMpfX0saXNTYW1lUmVwb3J0SUQ6 ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYSYmYVswXSYmYVswXS5maWx0ZXJzJiZhWzBd LmZpbHRlcnMucmVwb3J0X2lkPT1jfSxnZXREYXRhRnJvbUZpbHRlcnNFdmVudFJl c3BvbnNlOmZ1bmN0aW9uKGEsYyxlKXthPWFbMF07dmFyIGY9bnVsbDtpZihhLmZp bHRlcnMmJmEuZmlsdGVycy5yZXBvcnRfaWQ9PWUpZj1hLmZpbHRlcnMuYWxsRmls dGVycyYmYS5maWx0ZXJzLmFsbEZpbHRlcnMuZmlsdGVycyYmYS5maWx0ZXJzLmFs bEZpbHRlcnMuZmlsdGVyc1tjXSYmCmEuZmlsdGVycy5hbGxGaWx0ZXJzLmZpbHRl cnNbY10uZmlsdGVycz9hLmZpbHRlcnMuYWxsRmlsdGVycy5maWx0ZXJzW2NdLmZp bHRlcnMuZGF0YTphLmZpbHRlcnMuZGF0YTtyZXR1cm4gZn0sYnJvd3Nlckhpc3Rv cnlNYW5hZ2VtZW50S2V5OiJzIixpc0hpc3RvcnlNYW5hZ2VyRnJhZ21lbnQ6ZnVu Y3Rpb24oKXt2YXIgYT13aW5kb3cubG9jYXRpb24uaGFzaCxjPSIjIitSaWdodE5v dy5FdmVudC5icm93c2VySGlzdG9yeU1hbmFnZW1lbnRLZXkrIj0iLGU9YS5pbmRl eE9mKGMpLGY9IiI7aWYoZT49MClmPWEuc3Vic3RyKGUpO3JldHVybiBmLmxlbmd0 aD5jLmxlbmd0aH0sRXZlbnRPYmplY3Q6ZnVuY3Rpb24oKXt0aGlzLndfaWQ9bnVs bDt0aGlzLmRhdGE9e307dGhpcy5maWx0ZXJzPXt9fSxFdmVudEJ1czpmdW5jdGlv bigpe2Z1bmN0aW9uIGEoZCxiKXtkPWJbMF0uZGF0YS5zdGF0dXM9PT0tND97ZXZl bnROYW1lOiJldnRfYW5zd2VyTm90aWZpY2F0aW9uRGVsZXRlUmVzcG9uc2UifToK e2V2ZW50TmFtZToiZXZ0X2Fuc3dlck5vdGlmaWNhdGlvblJlc3BvbnNlIn07dmFy IGk9e2FfaWQ6YlswXS5kYXRhLmFuc3dlcklELHN0YXR1czpiWzBdLmRhdGEuc3Rh dHVzfTtpZihiWzBdLmRhdGEuY29udGFjdElEKWkuY2lkPWJbMF0uZGF0YS5jb250 YWN0SUQ7UmlnaHROb3cuQWpheC5tYWtlUmVxdWVzdCgiL2NpL2FqYXhSZXF1ZXN0 L2Fuc3dlck5vdGlmaWNhdGlvbiIsaSx7ZGF0YTpkfSl9ZnVuY3Rpb24gYyhkLGIp e2I9YlswXTtkPXtsb2dpbjpiLmRhdGEudXNlcm5hbWUscGFzc3dvcmQ6Yi5kYXRh LnBhc3N3b3JkLHVybDpiLmRhdGEudXJsLHdfaWQ6Yi53X2lkfTtSaWdodE5vdy5B amF4Lm1ha2VSZXF1ZXN0KCIvY2kvYWpheFJlcXVlc3QvZG9Mb2dpbiIsZCx7ZGF0 YTp7ZXZlbnROYW1lOiJldnRfbG9naW5Gb3JtU3VibWl0UmVzcG9uc2UifX0pfWZ1 bmN0aW9uIGUoZCxiKXtSaWdodE5vdy5BamF4Lm1ha2VSZXF1ZXN0KCIvY2kvYWph eFJlcXVlc3QvZG9Mb2dvdXQiLHt1cmw6YlswXS5kYXRhLmN1cnJlbnRVcmwsCnJl ZGlyZWN0VXJsOmJbMF0uZGF0YS5yZWRpcmVjdFVybH0se2RhdGE6e2V2ZW50TmFt ZToiZXZ0X2xvZ291dFJlc3BvbnNlIn19KX1mdW5jdGlvbiBmKGQsYil7dHJ5e2Jb MF0uZGF0YS51cGxvYWRfdHlwZT09PSJjaGF0Ij9SaWdodE5vdy5BamF4Lm1ha2VS ZXF1ZXN0KCIvY2kvZmF0dGFjaC91cGxvYWRDaGF0LyIrYlswXS5kYXRhLmVuZ2Fn ZW1lbnRfaWQrIi8iK2JbMF0uZGF0YS5jaGF0X3NpZCxudWxsLHtkYXRhOntldmVu dE5hbWU6ImV2dF9maWxlVXBsb2FkUmVzcG9uc2UifSx1cGxvYWRIYW5kbGVyOlJp Z2h0Tm93LkFqYXguZ2VuZXJpY1N1Y2Nlc3N9KTpSaWdodE5vdy5BamF4Lm1ha2VS ZXF1ZXN0KCIvY2kvZmF0dGFjaC91cGxvYWQiLG51bGwse2RhdGE6e2V2ZW50TmFt ZToiZXZ0X2ZpbGVVcGxvYWRSZXNwb25zZSJ9LHVwbG9hZEhhbmRsZXI6UmlnaHRO b3cuQWpheC5nZW5lcmljU3VjY2Vzc30pfWNhdGNoKGkpe2Q9e3Jlc3Bvc25lVGV4 dDoneyJlcnJvciI6ODh9J307dGhpcy5maXJlKCJldnRfZmlsZVVwbG9hZFJlc3Bv bnNlIiwKZCl9fWZ1bmN0aW9uIGgoZCxiKXtiPWJbMF07UmlnaHROb3cuVUkuRm9y bS5lcnJvckNvdW50PTA7UmlnaHROb3cuVUkuRm9ybS5mb3JtRmllbGRzPVtdO1Jp Z2h0Tm93LlVJLkZvcm0uZm9ybT1iLmRhdGEuZm9ybTtSaWdodE5vdy5VSS5Gb3Jt LndpZGdldHNUb1ZhbGlkYXRlPVJpZ2h0Tm93LlVJLkZvcm0ud2lkZ2V0c1RvUHJv Y2Vzcz10aGlzLmdldFN1YnNjcmliZXJMZW5ndGgoImV2dF9mb3JtRmllbGRWYWxp ZGF0ZVJlcXVlc3QiKTtSaWdodE5vdy5VSS5Gb3JtLmZvcm1Ub2tlbj1iLmRhdGEu Zl90b2s7UmlnaHROb3cuVUkuRm9ybS53aWRnZXRzVG9WYWxpZGF0ZSE9PTA/dGhp cy5maXJlKCJldnRfZm9ybUZpZWxkVmFsaWRhdGVSZXF1ZXN0IixiKTp0aGlzLmZp cmUoImV2dF9mb3JtVmFsaWRhdGVkUmVzcG9uc2UiLGIpfWZ1bmN0aW9uIGcoZCxi KXstLVJpZ2h0Tm93LlVJLkZvcm0ud2lkZ2V0c1RvVmFsaWRhdGU7aWYoYlswXS5k YXRhLmZvcm09PT1SaWdodE5vdy5VSS5Gb3JtLmZvcm0pe2RlbGV0ZSBiWzBdLmRh dGEuZm9ybTsKUmlnaHROb3cuVUkuRm9ybS5mb3JtRmllbGRzLnB1c2goYlswXS5k YXRhKX1pZihSaWdodE5vdy5VSS5Gb3JtLndpZGdldHNUb1ZhbGlkYXRlPT09MCl7 dGhpcy5maXJlKCJldnRfZm9ybVZhbGlkYXRlZFJlc3BvbnNlIik7IVJpZ2h0Tm93 LlVJLkZvcm0uY2hhdFN1Ym1pdCYmIVJpZ2h0Tm93LlVJLkZvcm0ucGFzc3dvcmRS ZXNldCYmSCgpfX1mdW5jdGlvbiBqKCl7LS1SaWdodE5vdy5VSS5Gb3JtLndpZGdl dHNUb1Byb2Nlc3M7UmlnaHROb3cuVUkuRm9ybS53aWRnZXRzVG9Qcm9jZXNzPT09 MCYmUmlnaHROb3cuVUkuRm9ybS53aWRnZXRzVG9WYWxpZGF0ZSE9PTAmJnRoaXMu ZmlyZSgiZXZ0X2Zvcm1GYWlsVmFsaWRhdGlvblJlc3BvbnNlIil9ZnVuY3Rpb24g bChkLGIpe2lmKGwuY2FjaGUmJmwuY2FjaGVbYlswXS5kYXRhLmNvdW50cnlfaWRd KXRoaXMuZmlyZSgiZXZ0X2Zvcm1GaWVsZFByb3ZpbmNlUmVzcG9uc2UiLGwuY2Fj aGVbYlswXS5kYXRhLmNvdW50cnlfaWRdKTtlbHNle2Q9Cntjb3VudHJ5X2lkOmJb MF0uZGF0YS5jb3VudHJ5X2lkfTtSaWdodE5vdy5BamF4Lm1ha2VSZXF1ZXN0KCIv Y2kvYWpheFJlcXVlc3RNaW4vZ2V0Q291bnRyeVZhbHVlcyIsZCx7c3VjY2Vzc0hh bmRsZXI6dyxzY29wZTp0aGlzLGRhdGE6Yn0pfX1mdW5jdGlvbiB3KGQpe2lmKGQu YXJndW1lbnQmJmQuYXJndW1lbnRbMF0pe3ZhciBiPWQuYXJndW1lbnRbMF07aWYo ZC5yZXNwb25zZVRleHQhPT11bmRlZmluZWQpe3ZhciBpPVJpZ2h0Tm93LkpTT04u cGFyc2UoZC5yZXNwb25zZVRleHQpO2lmKGkpe2lmKCFsLmNhY2hlKWwuY2FjaGU9 W107bC5jYWNoZVtiLmRhdGEuY291bnRyeV9pZF09aX19dGhpcy5maXJlKCJldnRf Zm9ybUZpZWxkUHJvdmluY2VSZXNwb25zZSIsaSl9fWZ1bmN0aW9uIFIoZCxiKXtk PWJbMF0uZGF0YTtiPXtrZXl3b3JkOmQuc2VhcmNoVGVybSxsaW1pdDpkLmxpbWl0 LGhpZ2hsaWdodDpkLmhpZ2hsaWdodCx0cnVuY2F0ZTpkLnRydW5jYXRlLHJlc291 cmNlOmQucmVzb3VyY2V9OwppZihkLnJlc291cmNlKWIucmVzb3VyY2U9ZC5yZXNv dXJjZTtSaWdodE5vdy5BamF4Lm1ha2VSZXF1ZXN0KCIvY2kvYWpheFJlcXVlc3Qv Z2V0Q29tbXVuaXR5RGF0YSIsYix7ZGF0YTp7ZXZlbnROYW1lOiJldnRfY29tbXVu aXR5U2VhcmNoUmVzcG9uc2UifX0pfWZ1bmN0aW9uIFMoZCxiKXtkPXthY3Rpb246 YlswXS5kYXRhLmFjdGlvbixkYXRhOlJpZ2h0Tm93LkpTT04uc3RyaW5naWZ5KGJb MF0uZGF0YS5jb250ZW50KSxhbnN3ZXJJRDpiWzBdLmRhdGEuYW5zd2VySUR9O1Jp Z2h0Tm93LkFqYXgubWFrZVJlcXVlc3QoIi9jaS9hamF4UmVxdWVzdC9zdWJtaXRB bnN3ZXJDb21tZW50QWN0aW9uIixkLHtkYXRhOntldmVudE5hbWU6ImV2dF9hbnN3 ZXJDb21tZW50QWN0aW9uUmVzcG9uc2UifX0pfWZ1bmN0aW9uIFQoZCxiKXtkPXt9 O2lmKGJbMF0uZGF0YS5lbWFpbClkLmVtYWlsPWJbMF0uZGF0YS5lbWFpbDtlbHNl IGlmKGJbMF0uZGF0YS5sb2dpbilkLmxvZ2luPWJbMF0uZGF0YS5sb2dpbjsKZC5j b250YWN0VG9rZW49YlswXS5kYXRhLmNvbnRhY3RUb2tlbjtkLnB3UmVzZXQ9Umln aHROb3cuVUkuRm9ybS5wYXNzd29yZFJlc2V0O1JpZ2h0Tm93LkFqYXgubWFrZVJl cXVlc3QoIi9jaS9hamF4UmVxdWVzdC9jaGVja0ZvckV4aXN0aW5nQ29udGFjdCIs ZCx7ZGF0YTp7ZXZlbnROYW1lOiJldnRfZm9ybUZpZWxkQWNjb3VudEV4aXN0c1Jl c3BvbnNlIixpZ25vcmVGYWlsdXJlOnRydWV9fSl9ZnVuY3Rpb24gVShkLGIpe3Ro aXMuZmlyZSgiZXZ0X3NlYXJjaFR5cGVSZXNwb25zZSIsYlswXSl9ZnVuY3Rpb24g VihkLGIpe3RoaXMuZmlyZSgiZXZ0X3NvcnRUeXBlUmVzcG9uc2UiLGJbMF0pfWZ1 bmN0aW9uIFcoZCxiKXt0aGlzLmZpcmUoImV2dF9vcmdUeXBlUmVzcG9uc2UiLGJb MF0pfWZ1bmN0aW9uIFgoZCxiKXt0aGlzLmZpcmUoImV2dF9jdXN0b21NZW51UmVz cG9uc2UiLGJbMF0pfWZ1bmN0aW9uIFkoZCxiKXtSaWdodE5vdy5BamF4Lm1ha2VS ZXF1ZXN0KCIvY2kvYWpheFJlcXVlc3QvZW1haWxBbnN3ZXIiLApiWzBdLmRhdGEs e2RhdGE6e2V2ZW50TmFtZToiZXZ0X2VtYWlsTGlua1N1Ym1pdFJlc3BvbnNlIixk YXRhOmJ9fSl9ZnVuY3Rpb24gWihkLGIpe1JpZ2h0Tm93LkFqYXgubWFrZVJlcXVl c3QoIi9jaS9hamF4UmVxdWVzdC9lbWFpbFBhc3N3b3JkIix7bG9naW46YlswXS5k YXRhLnZhbHVlfSx7ZGF0YTp7ZXZlbnROYW1lOiJldnRfZW1haWxQYXNzd29yZFJl c3BvbnNlIn19KX1mdW5jdGlvbiAkKGQsYil7UmlnaHROb3cuQWpheC5tYWtlUmVx dWVzdCgiL2NpL2FqYXhSZXF1ZXN0L2VtYWlsVXNlcm5hbWUiLHtlbWFpbDpiWzBd LmRhdGEudmFsdWV9LHtkYXRhOntldmVudE5hbWU6ImV2dF9lbWFpbFVzZXJuYW1l UmVzcG9uc2UifX0pfWZ1bmN0aW9uIGFhKGQsYil7ZD17ZW1haWw6YlswXS5kYXRh LmVtYWlsLG1lc3NhZ2U6YlswXS5kYXRhLm1lc3NhZ2UsYV9pZDpiWzBdLmRhdGEu YV9pZCxyYXRlOmJbMF0uZGF0YS5yYXRlLHN1Ym1pdGZlZWRiYWNrOmJbMF0uZGF0 YS5zdWJtaXRmZWVkYmFja307ClJpZ2h0Tm93LkFqYXgubWFrZVJlcXVlc3QoIi9j aS9hamF4UmVxdWVzdC9zdWJtaXRTaXRlRmVlZGJhY2siLGQse2RhdGE6e2V2ZW50 TmFtZToiZXZ0X3NpdGVGZWVkYmFja1N1Ym1pdFJlc3BvbnNlIixkYXRhOmJ9fSl9 ZnVuY3Rpb24gYmEoZCxiKXtkPXtlbWFpbDpiWzBdLmRhdGEuZW1haWwsbWVzc2Fn ZTpiWzBdLmRhdGEubWVzc2FnZSxzdW1tYXJ5OmJbMF0uZGF0YS5zdW1tYXJ5LGFf aWQ6YlswXS5kYXRhLmFfaWQscmF0ZTpiWzBdLmRhdGEucmF0ZSx0aHJlc2hvbGQ6 YlswXS5kYXRhLmRpYWxvZ190aHJlc2hvbGQsc3VibWl0ZmVlZGJhY2s6YlswXS5k YXRhLnN1Ym1pdGZlZWRiYWNrLG9wdGlvbnNfY291bnQ6YlswXS5kYXRhLm9wdGlv bnNfY291bnR9O1JpZ2h0Tm93LkFqYXgubWFrZVJlcXVlc3QoIi9jaS9hamF4UmVx dWVzdC9zdWJtaXRBbnN3ZXJGZWVkYmFjayIsZCx7ZGF0YTp7ZXZlbnROYW1lOiJl dnRfYW5zd2VyRmVlZGJhY2tTdWJtaXRSZXNwb25zZSIsZGF0YTpifX0pfQpmdW5j dGlvbiBjYShkLGIpe2Q9e2FfaWQ6YlswXS5kYXRhLmFfaWQscmF0ZTpiWzBdLmRh dGEucmF0ZSx0aHJlc2hvbGQ6YlswXS5kYXRhLmRpYWxvZ190aHJlc2hvbGQsb3B0 aW9uc19jb3VudDpiWzBdLmRhdGEub3B0aW9uc19jb3VudH07UmlnaHROb3cuQWph eC5tYWtlUmVxdWVzdCgiL2NpL2FqYXhSZXF1ZXN0L3N1Ym1pdEFuc3dlclJhdGlu ZyIsZCl9ZnVuY3Rpb24gZGEoZCxiKXt0aGlzLmZpcmUoImV2dF9rZXl3b3JkQ2hh bmdlZFJlc3BvbnNlIixiWzBdKX1mdW5jdGlvbiBlYShkLGIpe2I9YlswXTtkPXto bV90eXBlOmIuZGF0YS5obV90eXBlLGxpbmtpbmdfb246Yi5kYXRhLmxpbmtpbmdQ cm9kdWN0fTtSaWdodE5vdy5BamF4Lm1ha2VSZXF1ZXN0KCIvY2kvYWpheFJlcXVl c3RNaW4vZ2V0QWNjZXNzaWJsZVRyZWVWaWV3IixkLHtzdWNjZXNzSGFuZGxlcjpm YSxzY29wZTp0aGlzLGRhdGE6Yn0pfWZ1bmN0aW9uIGZhKGQpe2lmKGQuYXJndW1l bnQhPW51bGwpe3ZhciBiPWQuYXJndW1lbnQ7CmlmKGQucmVzcG9uc2VUZXh0IT09 dW5kZWZpbmVkKWlmKGQ9UmlnaHROb3cuSlNPTi5wYXJzZShkLnJlc3BvbnNlVGV4 dCkpe2IuZGF0YS5hY2Nlc3NpYmxlTGlua3M9ZDt0aGlzLmZpcmUoImV2dF9hY2Nl c3NpYmxlVHJlZVZpZXdHZXRSZXNwb25zZSIsYil9ZWxzZSBSaWdodE5vdy5VSS5E aWFsb2cubWVzc2FnZURpYWxvZyhSaWdodE5vdy5JbnRlcmZhY2UuZ2V0TWVzc2Fn ZSgiRVJST1JfUkVRVUVTVF9BQ1RJT05fQ09NUExFVEVEX01TRyIpLHtpY29uOiJX QVJOIn0pfX1mdW5jdGlvbiBnYShkLGIpe2I9YlswXTtpZihiLmRhdGEubGlua19t YXAmJnUhPT1udWxsKXU9Yi5kYXRhLmxpbmtfbWFwO2lmKGIuZGF0YS5saW5raW5n X29uKXtpZihiLmRhdGEuZGF0YV90eXBlLmluZGV4T2YoImNhdCIpPi0xJiZ1JiZ1 W2IuZGF0YS52YWx1ZV0pe2Q9UmlnaHROb3cuTGFuZy5jbG9uZU9iamVjdChiKTtk LmRhdGEucmVzZXR8fGQuZGF0YS5sZXZlbCsrO2QuZGF0YS5oaWVyX2RhdGE9dVtk LmRhdGEudmFsdWVdOwp0aGlzLmZpcmUoImV2dF9tZW51RmlsdGVyR2V0UmVzcG9u c2UiLGQpO3JldHVybn19ZWxzZXtpZihiLmRhdGEubGV2ZWw+NSlyZXR1cm47aWYo Yi5kYXRhLnZhbHVlPDEpe2IuZGF0YS5sZXZlbD0xO2IuZGF0YS5oaWVyX2RhdGE9 W107dGhpcy5maXJlKCJldnRfbWVudUZpbHRlckdldFJlc3BvbnNlIixiKTtyZXR1 cm59aWYoYi5kYXRhLmNhY2hlW2IuZGF0YS52YWx1ZV0pe2Q9bmV3IHRoaXMuRXZl bnRPYmplY3Q7ZC5kYXRhPXtoaWVyX2RhdGE6Yi5kYXRhLmNhY2hlW2IuZGF0YS52 YWx1ZV0sbGV2ZWw6Yi5kYXRhLmxldmVsKzF9O3RoaXMuZmlyZSgiZXZ0X21lbnVG aWx0ZXJHZXRSZXNwb25zZSIsZCk7cmV0dXJufX1pZihiLmRhdGEubGV2ZWwhPT02 KXtkPXtmaWx0ZXI6Yi5kYXRhLmRhdGFfdHlwZSxsdmw6Yi5kYXRhLmxldmVsKzEs aWQ6Yi5kYXRhLnZhbHVlLGxpbmtpbmc6Yi5kYXRhLmxpbmtpbmdfb259O1JpZ2h0 Tm93LkFqYXgubWFrZVJlcXVlc3QoIi9jaS9hamF4UmVxdWVzdE1pbi9nZXRIaWVy VmFsdWVzIiwKZCx7c3VjY2Vzc0hhbmRsZXI6aGEsc2NvcGU6dGhpcyxkYXRhOmJ9 KX19ZnVuY3Rpb24gaGEoZCl7aWYoZC5hcmd1bWVudCE9bnVsbCl7dmFyIGI9ZC5h cmd1bWVudDtpZihkLnJlc3BvbnNlVGV4dCE9PXVuZGVmaW5lZClpZihkPVJpZ2h0 Tm93LkpTT04ucGFyc2UoZC5yZXNwb25zZVRleHQpKXtiLmRhdGEuY2FjaGVbYi5k YXRhLnZhbHVlXT1kWzBdO2IuZGF0YS5oaWVyX2RhdGE9ZFswXTtiLmRhdGEubGV2 ZWwrPTE7dGhpcy5maXJlKCJldnRfbWVudUZpbHRlckdldFJlc3BvbnNlIixiKTtp ZihiLmRhdGEubGlua2luZ19vbiYmYi5kYXRhLmRhdGFfdHlwZS5pbmRleE9mKCJw cm9kIik+LTEpe3U9ZC5saW5rX21hcDtkPW5ldyB0aGlzLkV2ZW50T2JqZWN0O2Qu ZGF0YT17bGV2ZWw6MSxoaWVyX2RhdGE6dVswXSxkYXRhX3R5cGU6Yi5kYXRhLmRh dGFfdHlwZS5yZXBsYWNlKCJwcm9kdWN0cyIsImNhdGVnb3JpZXMiKSxyZXNldF9s aW5rZWRfY2F0ZWdvcnk6dHJ1ZX07ZC5maWx0ZXJzLnJlcG9ydF9pZD0KYi5maWx0 ZXJzLnJlcG9ydF9pZDt0aGlzLmZpcmUoImV2dF9tZW51RmlsdGVyR2V0UmVzcG9u c2UiLGQpO2lmKGIuZGF0YS52YWx1ZT09PS0xKXU9bnVsbH19ZWxzZSBSaWdodE5v dy5VSS5EaWFsb2cubWVzc2FnZURpYWxvZyhSaWdodE5vdy5JbnRlcmZhY2UuZ2V0 TWVzc2FnZSgiRVJST1JfUkVRVUVTVF9BQ1RJT05fQ09NUExFVEVEX01TRyIpLHtp Y29uOiJXQVJOIn0pfX1mdW5jdGlvbiBpYShkLGIpe2Q9YlswXS5kYXRhLmhpZXJT ZXREYXRhO2Zvcih2YXIgaT1kWzFdLmlkLG09MjttPGQubGVuZ3RoOysrbSlpZihk W21dLmlkPjApaSs9IiwiK2RbbV0uaWQ7Yj17Y2hhaW46aSxmaWx0ZXJfdHlwZTpi WzBdLmRhdGEuZGF0YV90eXBlfTt0aGlzLmZpcmUoImV2dF9tZW51RmlsdGVyU2V0 dGluZ1Jlc3BvbnNlIik7UmlnaHROb3cuQWpheC5tYWtlUmVxdWVzdCgiL2NpL2Fq YXhSZXF1ZXN0L3Byb2RjYXRBZGROb3RpZmljYXRpb24iLGIse2RhdGE6e2V2ZW50 TmFtZToiZXZ0X21lbnVGaWx0ZXJTZWxlY3RSZXNwb25zZSJ9fSl9CmZ1bmN0aW9u IGphKGQsYil7ZD17ZmlsdGVyX3R5cGU6YlswXS5kYXRhLmZpbHRlcl90eXBlLGNo YWluOmJbMF0uZGF0YS5jaGFpbn07aWYoYlswXS5kYXRhLmNfaWQpZC5jaWQ9Ylsw XS5kYXRhLmNfaWQ7UmlnaHROb3cuQWpheC5tYWtlUmVxdWVzdCgiL2NpL2FqYXhS ZXF1ZXN0L3Byb2RjYXRBZGROb3RpZmljYXRpb24iLGQse2RhdGE6e2V2ZW50TmFt ZToiZXZ0X3Byb2RDYXRBZGRSZXNwb25zZSJ9fSl9ZnVuY3Rpb24ga2EoZCxiKXti PWJbMF07ZD17ZmlsdGVyX3R5cGU6Yi5kYXRhLmZpbHRlcl90eXBlLGNoYWluOmIu ZGF0YS5jaGFpbix0aW1lc3RhbXA6Yi5kYXRhLnRpbWV9O2lmKGIuZGF0YS5jX2lk KWQuY2lkPWIuZGF0YS5jX2lkO1JpZ2h0Tm93LkFqYXgubWFrZVJlcXVlc3QoIi9j aS9hamF4UmVxdWVzdC9wcm9kY2F0RGVsZXRlTm90aWZpY2F0aW9uIixkLHtkYXRh OntldmVudE5hbWU6ImV2dF9wcm9kQ2F0RGVsZXRlUmVzcG9uc2UifX0pfWZ1bmN0 aW9uIGxhKGQsYil7ZD0Ke2ZpbHRlcl90eXBlOmJbMF0uZGF0YS5maWx0ZXJfdHlw ZSxjaGFpbjpiWzBdLmRhdGEuY2hhaW4sdGltZXN0YW1wOmJbMF0uZGF0YS50aW1l fTtpZihiWzBdLmRhdGEuY19pZClkLmNpZD1iWzBdLmRhdGEuY19pZDtSaWdodE5v dy5BamF4Lm1ha2VSZXF1ZXN0KCIvY2kvYWpheFJlcXVlc3QvcHJvZGNhdFJlbmV3 Tm90aWZpY2F0aW9uIixkLHtkYXRhOntldmVudE5hbWU6ImV2dF9wcm9kQ2F0UmVu ZXdSZXNwb25zZSJ9fSl9ZnVuY3Rpb24gbWEoZCxiKXtiPWJbMF07ZD13aW5kb3cu bG9jYXRpb24ucGF0aG5hbWUudG9TdHJpbmcoKTtkPWQuc3BsaXQoIi9hcHAiKTt2 YXIgaT0iL2FwcCIrKGQubGVuZ3RoPjE/ZFsxXToiIiksbT1iLmZpbHRlcnMucmVw b3J0UGFnZT9iLmZpbHRlcnMucmVwb3J0UGFnZToiIjt5IT1udWxsJiZ5Kys7aWYo bT09IiJ8fG09PT0ie2N1cnJlbnRfcGFnZX0ifHxpLnN1YnN0cmluZygwLG0ubGVu Z3RoKT09bSl7a1tiLmZpbHRlcnMucmVwb3J0X2lkXXx8KGtbYi5maWx0ZXJzLnJl cG9ydF9pZF09CntmaWx0ZXJzOnt9LGZvcm1hdDp7fX0pO2tbYi5maWx0ZXJzLnJl cG9ydF9pZF0uZmlsdGVycy5wYWdlPTE7a1tiLmZpbHRlcnMucmVwb3J0X2lkXS5m aWx0ZXJzLnNlYXJjaD0xO3AuYWN0aW9uPUk7cT1iLmZpbHRlcnMucmVwb3J0X2lk O3RoaXMuZmlyZSgiZXZ0X3NlYXJjaEluUHJvZ3Jlc3NSZXF1ZXN0IixiKX1lbHNl e3AudGFyZ2V0PWIuZmlsdGVycy50YXJnZXQ/Yi5maWx0ZXJzLnRhcmdldDoiX3Nl bGYiO3AuYWN0aW9uPUo7aWYoZFswXS5zbGljZSgtMSk9PSIvIilkWzBdPWRbMF0u c2xpY2UoMCwtMSk7cC51cmw9ZFswXSttO2lmKGtbYi5maWx0ZXJzLnJlcG9ydF9p ZF0mJmtbYi5maWx0ZXJzLnJlcG9ydF9pZF0uZmlsdGVycylrW2IuZmlsdGVycy5y ZXBvcnRfaWRdLmZpbHRlcnMucGFnZT0xfXAuc3Vic2NyaWJlZD10aGlzLmdldFN1 YnNjcmliZXJMZW5ndGgoImV2dF9nZXRGaWx0ZXJzUmVxdWVzdCIpO3AuYWN0dWFs PTA7cC5yZXBvcnRfaWQ9Yi5maWx0ZXJzLnJlcG9ydF9pZDsKbmEoYi5maWx0ZXJz LnJlcG9ydF9pZCl9ZnVuY3Rpb24gbmEoZCl7dmFyIGI9bmV3IFJpZ2h0Tm93LkV2 ZW50LkV2ZW50T2JqZWN0O2IuZmlsdGVycy5yZXBvcnRfaWQ9ZDtSaWdodE5vdy5F dmVudC5maXJlKCJldnRfZ2V0RmlsdGVyc1JlcXVlc3QiLGIpfWZ1bmN0aW9uIG9h KGQsYil7QihiWzBdKTtwLmFjdHVhbCsrO2lmKHAuc3Vic2NyaWJlZD09PXAuYWN0 dWFsKXt0aGlzLmZpcmUoImV2dF9iZWZvcmVTZWFyY2hSZXF1ZXN0IixrW3AucmVw b3J0X2lkXSk7aWYocC5hY3Rpb249PUkpRCgpO2Vsc2UgcC5hY3Rpb249PUomJnBh KHAudGFyZ2V0KX19ZnVuY3Rpb24gQihkKXtpZihkIT1udWxsKXtrW2QuZmlsdGVy cy5yZXBvcnRfaWRdfHwoa1tkLmZpbHRlcnMucmVwb3J0X2lkXT17ZmlsdGVyczp7 fSxmb3JtYXQ6e319KTtpZihkLmZpbHRlcnMuc2VhcmNoTmFtZSlrW2QuZmlsdGVy cy5yZXBvcnRfaWRdLmZpbHRlcnNbZC5maWx0ZXJzLnNlYXJjaE5hbWVdPWR9fWZ1 bmN0aW9uIHBhKGQpe3ZhciBiPQpwLnVybDtiPVJpZ2h0Tm93LlVybC5jb252ZXJ0 U2VhcmNoRmlsdGVyc1RvUGFybXMoYixrW3AucmVwb3J0X2lkXS5maWx0ZXJzLHkp O2I9UmlnaHROb3cuVXJsLmFkZFBhcmFtZXRlcihiLCJzZWFyY2giLCIxIik7Yj1S aWdodE5vdy5VcmwuYWRkUGFyYW1ldGVyKGIsInNlc3Npb24iLFJpZ2h0Tm93LlVy bC5nZXRTZXNzaW9uKCkpO3dpbmRvdy5vcGVuKGIsZCl9ZnVuY3Rpb24gcWEoZCxi KXtiPWJbMF07QihiKTtrW2IuZmlsdGVycy5yZXBvcnRfaWRdLnRva2VuPWIuZmls dGVycy50b2tlbjtrW2IuZmlsdGVycy5yZXBvcnRfaWRdLmZpbHRlcnMubm9fdHJ1 bmNhdGU9MDtrW2IuZmlsdGVycy5yZXBvcnRfaWRdLmZpbHRlcnMucGFnZT0xO2Zv cih2YXIgaSBpbiBiLmZpbHRlcnMuZm9ybWF0KWlmKGkhPXVuZGVmaW5lZCYmdHlw ZW9mIGIuZmlsdGVycy5mb3JtYXRbaV0hPT0iZnVuY3Rpb24iKWtbYi5maWx0ZXJz LnJlcG9ydF9pZF0uZm9ybWF0W2ldPWIuZmlsdGVycy5mb3JtYXRbaV07CmZvcihp IGluIGIuZmlsdGVycy5hbGxGaWx0ZXJzKWlmKGkhPXVuZGVmaW5lZCYmdHlwZW9m IGIuZmlsdGVycy5hbGxGaWx0ZXJzW2ldIT09ImZ1bmN0aW9uIilrW2IuZmlsdGVy cy5yZXBvcnRfaWRdLmZpbHRlcnNbaV09Yi5maWx0ZXJzLmFsbEZpbHRlcnNbaV07 aWYoIUspaWYodG9wPT09c2VsZil7Sz10cnVlO2Q9KGQ9WUFIT08udXRpbC5IaXN0 b3J5LmdldEJvb2ttYXJrZWRTdGF0ZShSaWdodE5vdy5FdmVudC5icm93c2VySGlz dG9yeU1hbmFnZW1lbnRLZXkpKXx8IiI7RXx8KEU9cmEoTCgpKSk7WUFIT08udXRp bC5IaXN0b3J5LnJlZ2lzdGVyKFJpZ2h0Tm93LkV2ZW50LmJyb3dzZXJIaXN0b3J5 TWFuYWdlbWVudEtleSxkLE0pO3RyeXtZQUhPTy51dGlsLkhpc3Rvcnkub25SZWFk eShmdW5jdGlvbigpe3ZhciBvPVlBSE9PLnV0aWwuSGlzdG9yeS5nZXRDdXJyZW50 U3RhdGUoUmlnaHROb3cuRXZlbnQuYnJvd3Nlckhpc3RvcnlNYW5hZ2VtZW50S2V5 KTtvIT09IiImJk0obyl9KTsKWUFIT08udXRpbC5IaXN0b3J5LmluaXRpYWxpemUo InJuX0hpc3RvcnlfRmllbGQiLCJybl9IaXN0b3J5X0lmcmFtZSIpO3o9dHJ1ZX1j YXRjaChtKXt6PWZhbHNlfX19ZnVuY3Rpb24gc2EoZCxiKXtiPWJbMF07QihiKTtr W2IuZmlsdGVycy5yZXBvcnRfaWRdLmZpbHRlcnMubm9fdHJ1bmNhdGU9MTtrW2Iu ZmlsdGVycy5yZXBvcnRfaWRdLmZpbHRlcnMuc2VhcmNoPTA7cT1iLmZpbHRlcnMu cmVwb3J0X2lkO0QoKX1mdW5jdGlvbiB0YShkLGIpe3RoaXMuZmlyZSgiZXZ0X3Nl YXJjaEluUHJvZ3Jlc3NSZXNwb25zZSIsYlswXSl9ZnVuY3Rpb24gdWEoZCxiKXti PWJbMF07dGhpcy5maXJlKCJldnRfc2VhcmNoSW5Qcm9ncmVzc1JlcXVlc3QiLGIp O0IoYik7a1tiLmZpbHRlcnMucmVwb3J0X2lkXS5maWx0ZXJzLnBhZ2U9Yi5kYXRh LnBhZ2U7ZGVsZXRlIGtbYi5maWx0ZXJzLnJlcG9ydF9pZF0uZmlsdGVycy5zZWFy Y2g7aWYoYiYmYi5maWx0ZXJzKXtxPWIuZmlsdGVycy5yZXBvcnRfaWQ7CkQoKX19 ZnVuY3Rpb24gRCgpe3ZhciBkPUYocSk7aWYoeil0cnl7TCgpO2lmKFlBSE9PLmVu di51YS5pZT4wKXt2YXIgYj13aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCIj Iik+LTE/d2luZG93LmxvY2F0aW9uLmhyZWYuc3Vic3RyKDAsd2luZG93LmxvY2F0 aW9uLmhyZWYuaW5kZXhPZigiIyIpKS5sZW5ndGgrci5sZW5ndGg6d2luZG93Lmxv Y2F0aW9uLmhyZWYubGVuZ3RoK3IubGVuZ3RoO2lmKGI+MjA4MCl7RyhkKTtyZXR1 cm59fVlBSE9PLnV0aWwuSGlzdG9yeS5uYXZpZ2F0ZShSaWdodE5vdy5FdmVudC5i cm93c2VySGlzdG9yeU1hbmFnZW1lbnRLZXkscil9Y2F0Y2goaSl7YWxlcnQoImVy cm9yOiAiK2kubWVzc2FnZSl9ZWxzZSBHKGQpfWZ1bmN0aW9uIE4oZCl7aWYoZD09 PSIiKXtxPTA7cmV0dXJuIE4oRSl9cmV0dXJuIFJpZ2h0Tm93LkpTT04ucGFyc2Uo UmlnaHROb3cuVGV4dC5FbmNvZGluZy5iYXNlNjREZWNvZGUoZCkpfWZ1bmN0aW9u IHJhKGQpe3JldHVybiBSaWdodE5vdy5UZXh0LkVuY29kaW5nLmJhc2U2NEVuY29k ZShSaWdodE5vdy5KU09OLnN0cmluZ2lmeShkKSl9CmZ1bmN0aW9uIE0oZCl7ZD1O KGQpLnNmO3I9UmlnaHROb3cuVGV4dC5FbmNvZGluZy5iYXNlNjRFbmNvZGUoUmln aHROb3cuSlNPTi5zdHJpbmdpZnkoZCkpO3ZhKCk7Zm9yKHZhciBiIGluIGQpaWYo dHlwZW9mIGRbYl0hPT0iZnVuY3Rpb24iKXtxPXE/cTpiO2Zvcih2YXIgaSBpbiBk W2JdLmZpbHRlcnMpaWYoaT09PSJub190cnVuY2F0ZSJ8fGk9PT0icGFnZSJ8fGk9 PSJwYXJtTGlzdCIpa1tiXS5maWx0ZXJzW2ldPWRbYl0uZmlsdGVyc1tpXTtlbHNl IGlmKGRbYl0uZmlsdGVyc1tpXSYmZFtiXS5maWx0ZXJzW2ldLmZpbHRlcnMpe2tb Yl0uZmlsdGVyc1tpXXx8KGtbYl0uZmlsdGVyc1tpXT17ZmlsdGVyczp7ZGF0YTp7 fX19KTt2YXIgbT1kW2JdLmZpbHRlcnNbaV0uZmlsdGVycy5kYXRhO2lmKHR5cGVv ZiBtPT09Im9iamVjdCImJnR5cGVvZiBtIT09ImZ1bmN0aW9uIil7a1tiXS5maWx0 ZXJzW2ldLmZpbHRlcnMuZGF0YT17fTtmb3IodmFyIG8gaW4gZFtiXS5maWx0ZXJz W2ldLmZpbHRlcnMuZGF0YSlpZih0eXBlb2YgbyE9PQoiZnVuY3Rpb24iJiZvIT09 InVuZGVmaW5lZCImJmtbYl0uZmlsdGVyc1tpXS5maWx0ZXJzLmRhdGEpa1tiXS5m aWx0ZXJzW2ldLmZpbHRlcnMuZGF0YVtvXT1kW2JdLmZpbHRlcnNbaV0uZmlsdGVy cy5kYXRhW29dfWVsc2Uga1tiXS5maWx0ZXJzW2ldLmZpbHRlcnMuZGF0YT1kW2Jd LmZpbHRlcnNbaV0uZmlsdGVycy5kYXRhfWVsc2UgaWYoa1tiXS5maWx0ZXJzW2ld JiZrW2JdLmZpbHRlcnNbaV0uZmlsdGVycylrW2JdLmZpbHRlcnNbaV0uZmlsdGVy cy5kYXRhPW51bGx9Yj1uZXcgUmlnaHROb3cuRXZlbnQuRXZlbnRPYmplY3Q7Yi5k YXRhPWs7UmlnaHROb3cuRXZlbnQuZmlyZSgiZXZ0X3NlYXJjaEZpbHRlckNoYW5n ZVJlc3BvbnNlIixiKTtpZihuW3JdKXE9bltyXS5yZXBvcnRJRDtpZihxPT0wKXE9 dDtHKEYocSkpfWZ1bmN0aW9uIHZhKCl7Zm9yKHZhciBkIGluIGspaWYodHlwZW9m IGtbZF0hPT0iZnVuY3Rpb24iKWlmKGtbZF0uZmlsdGVycylmb3IodmFyIGIgaW4g a1tkXS5maWx0ZXJzKWlmKHR5cGVvZiBrW2RdIT09CiJmdW5jdGlvbiIpaWYoa1tk XS5maWx0ZXJzW2JdJiZrW2RdLmZpbHRlcnNbYl0uZmlsdGVycyYma1tkXS5maWx0 ZXJzW2JdLmZpbHRlcnMuZGF0YSlrW2RdLmZpbHRlcnNbYl0uZmlsdGVycy5kYXRh PW51bGx9ZnVuY3Rpb24gRihkKXtmb3IodmFyIGIgaW4gaylpZihrW2JdLmZvcm1h dClrW2JdLmZvcm1hdC51cmxQYXJtcz1SaWdodE5vdy5VcmwuYnVpbGRVcmxMaW5r U3RyaW5nKGtbYl0pO2I9a1tkXS5maWx0ZXJzO3ZhciBpPWtbZF0uZm9ybWF0LG09 a1tkXS50b2tlbjtyZXR1cm57c2Y6YixyZXBvcnRfaWQ6ZCx0b2tlbjptLGZtdDpp LGM6TysrfX1mdW5jdGlvbiBMKCl7dmFyIGQ9e307Zm9yKHZhciBiIGluIGspaWYo dHlwZW9mIGRbYl0hPT0iZnVuY3Rpb24iKXtkW2JdPXtmaWx0ZXJzOnt9fTtmb3Io dmFyIGkgaW4ga1tiXS5maWx0ZXJzKWlmKGkhPT0iZnVuY3Rpb24iKWlmKGk9PT0i bm9fdHJ1bmNhdGUifHxpPT09InBhZ2UifHxpPT0icGFybUxpc3QiKWRbYl0uZmls dGVyc1tpXT0Ka1tiXS5maWx0ZXJzW2ldO2Vsc2UgaWYoa1tiXS5maWx0ZXJzW2ld JiZrW2JdLmZpbHRlcnNbaV0uZmlsdGVycyl7ZFtiXS5maWx0ZXJzW2ldPXtmaWx0 ZXJzOntkYXRhOnt9fX07aWYodHlwZW9mIGtbYl0uZmlsdGVyc1tpXS5maWx0ZXJz LmRhdGE9PT0ib2JqZWN0Iilmb3IodmFyIG0gaW4ga1tiXS5maWx0ZXJzW2ldLmZp bHRlcnMuZGF0YSlkW2JdLmZpbHRlcnNbaV0uZmlsdGVycy5kYXRhW21dPWtbYl0u ZmlsdGVyc1tpXS5maWx0ZXJzLmRhdGFbbV07ZWxzZSBkW2JdLmZpbHRlcnNbaV0u ZmlsdGVycy5kYXRhPWtbYl0uZmlsdGVyc1tpXS5maWx0ZXJzLmRhdGF9fWQ9e3Nm OmQsYzpPKyt9O3I9UmlnaHROb3cuVGV4dC5FbmNvZGluZy5iYXNlNjRFbmNvZGUo UmlnaHROb3cuSlNPTi5zdHJpbmdpZnkoZCkpO3JldHVybiBkfWZ1bmN0aW9uIEco ZCl7eiYmbltyXT93YSgpOlAoZCx4YSk7dD1xfWZ1bmN0aW9uIFAoZCxiKXtkPXtm aWx0ZXJzOlJpZ2h0Tm93LkpTT04uc3RyaW5naWZ5KGQuc2YpLApyZXBvcnRfaWQ6 ZC5yZXBvcnRfaWQscl90b2s6ZC50b2tlbixmb3JtYXQ6UmlnaHROb3cuSlNPTi5z dHJpbmdpZnkoZC5mbXQpfTtSaWdodE5vdy5BamF4Lm1ha2VSZXF1ZXN0KCIvY2kv YWpheFJlcXVlc3QvZ2V0UmVwb3J0RGF0YSIsZCx7c3VjY2Vzc0hhbmRsZXI6Yixz Y29wZTp0aGlzfSl9ZnVuY3Rpb24geGEoZCl7aWYoZC5yZXNwb25zZVRleHQhPT11 bmRlZmluZWQpaWYoZD1SaWdodE5vdy5KU09OLnBhcnNlKGQucmVzcG9uc2VUZXh0 KSl7aWYoeil7bltyXT17ZmlsdGVyczprLGRhdGE6ZCxyZXBvcnRJRDpkLnJlcG9y dF9pZCxzdGF0ZTorK3Z9O0Nbdl09cn12YXIgYj1SaWdodE5vdy5MYW5nLmNsb25l T2JqZWN0KGtbZC5yZXBvcnRfaWRdKTt4KGQsZC5yZXBvcnRfaWQsa1tkLnJlcG9y dF9pZF0pO2tbZC5yZXBvcnRfaWRdPWI7a1tkLnJlcG9ydF9pZF0uZmlsdGVycy5u b190cnVuY2F0ZT0wfX1mdW5jdGlvbiB5YShkKXtpZihkLnJlc3BvbnNlVGV4dCE9 PXVuZGVmaW5lZClpZihkPQpSaWdodE5vdy5KU09OLnBhcnNlKGQucmVzcG9uc2VU ZXh0KSl7bi5kZWZhdWx0RGF0YXx8KG4uZGVmYXVsdERhdGE9W10pO24uZGVmYXVs dERhdGFbZC5yZXBvcnRfaWRdPWQ7eChkLGQucmVwb3J0X2lkLGtbZC5yZXBvcnRf aWRdKX19ZnVuY3Rpb24gd2EoKXt2YXIgZD12O3Y9bltyXS5zdGF0ZTtpZihxPT10 KXgobltyXS5kYXRhLHEsbltyXS5maWx0ZXJzW3FdKTtlbHNle2lmKGQ8PXYpe2Zv cihkPXY7ZD49MDtkLS0pe3ZhciBiPUNbZF07aWYoYiYmbltiXSYmdD09bltiXS5y ZXBvcnRJRCl7eChuW2JdLmRhdGEsbltiXS5yZXBvcnRJRCxuW2JdLmZpbHRlcnNb bltiXS5yZXBvcnRJRF0pO3JldHVybn19bi5kZWZhdWx0RGF0YSYmbi5kZWZhdWx0 RGF0YVt0XSYmeChuLmRlZmF1bHREYXRhW3RdLmRhdGEsdCxudWxsKX1lbHNlIGZv cihkPXY7ZDw9Qy5sZW5ndGg7ZCsrKWlmKChiPUNbZF0pJiZuW2JdJiZ0PT1uW2Jd LnJlcG9ydElEJiZ2Pm5bYl0uc3RhdGUpe3gobltiXS5kYXRhLG5bYl0ucmVwb3J0 SUQsCm5bYl0uZmlsdGVyc1tuW2JdLnJlcG9ydElEXSk7cmV0dXJufVAoRih0KSx5 YSl9fWZ1bmN0aW9uIHgoZCxiLGkpe3ZhciBtPW5ldyBSaWdodE5vdy5FdmVudC5F dmVudE9iamVjdDttLmRhdGE9ZDttLmZpbHRlcnMucmVwb3J0X2lkPWI7bS5maWx0 ZXJzLmFsbEZpbHRlcnM9aTtSaWdodE5vdy5FdmVudC5maXJlKCJldnRfcmVwb3J0 UmVzcG9uc2UiLG0pfWZ1bmN0aW9uIEgoKXt2YXIgZD1SaWdodE5vdy5KU09OLnN0 cmluZ2lmeShSaWdodE5vdy5VSS5Gb3JtLmZvcm1GaWVsZHMpO2Q9e2lfaWQ6USxm X3RvazpSaWdodE5vdy5VSS5Gb3JtLmZvcm1Ub2tlbixmb3JtOmR9O2lmKFJpZ2h0 Tm93LlVJLkZvcm0uc21hcnRBc3Npc3RhbnQhPW51bGwpZC5zbXJ0X2Fzc3Q9Umln aHROb3cuVUkuRm9ybS5zbWFydEFzc2lzdGFudDtSaWdodE5vdy5BamF4Lm1ha2VS ZXF1ZXN0KCIvY2kvYWpheFJlcXVlc3Qvc2VuZEZvcm0iLGQse2RhdGE6e2V2ZW50 TmFtZToiZXZ0X2Zvcm1CdXR0b25TdWJtaXRSZXNwb25zZSJ9LApmYWlsdXJlSGFu ZGxlcjpmdW5jdGlvbihiKXtiLnN0YXR1cz09PTQxOCYmYi5hcmd1bWVudCYmYi5h cmd1bWVudC5ldmVudE5hbWUmJlJpZ2h0Tm93LkV2ZW50LmZpcmUoYi5hcmd1bWVu dC5ldmVudE5hbWUse21lc3NhZ2U6UmlnaHROb3cuSW50ZXJmYWNlLmdldE1lc3Nh Z2UoIkVSUl9TVUJNSVRUSU5HX0ZPUk1fRFVFX0lOVl9JTlBVVF9MQkwiKX0pfX0p fWZ1bmN0aW9uIHphKGQsYil7Yj1iWzBdO2Q9e3B3X3Jlc2V0OmIuZGF0YS5yZXNl dFN0cmluZ307dHJ5e3ZhciBpPVJpZ2h0Tm93LkpTT04uc3RyaW5naWZ5KFJpZ2h0 Tm93LlVJLkZvcm0uZm9ybUZpZWxkcyk7ZC5mX3Rvaz1SaWdodE5vdy5VSS5Gb3Jt LmZvcm1Ub2tlbjtkLmZvcm09aX1jYXRjaChtKXt9UmlnaHROb3cuQWpheC5tYWtl UmVxdWVzdCgiL2NpL2FqYXhSZXF1ZXN0L3Jlc2V0UGFzc3dvcmQiLGQse2RhdGE6 e2V2ZW50TmFtZToiZXZ0X2Zvcm1CdXR0b25TdWJtaXRSZXNwb25zZSJ9fSl9ZnVu Y3Rpb24gQWEoZCwKYil7Yj1iWzBdO2Q9e2ludGVyZmFjZV9pZDpiLmRhdGEuaW50 ZXJmYWNlX2lkfTtpZihiLmRhdGEucWlkKWQucWlkPWIuZGF0YS5xaWQ7aWYoYi5k YXRhLmNfaWQpZC5jX2lkPWIuZGF0YS5jX2lkO2lmKGIuZGF0YS5vcmdfaWQpZC5v cmdfaWQ9Yi5kYXRhLm9yZ19pZDtpZihiLmRhdGEuY29udGFjdF9lbWFpbClkLmNv bnRhY3RfZW1haWw9Yi5kYXRhLmNvbnRhY3RfZW1haWw7aWYoYi5kYXRhLmNvbnRh Y3RfZm5hbWUpZC5jb250YWN0X2ZuYW1lPWIuZGF0YS5jb250YWN0X2ZuYW1lO2lm KGIuZGF0YS5jb250YWN0X2xuYW1lKWQuY29udGFjdF9sbmFtZT1iLmRhdGEuY29u dGFjdF9sbmFtZTtpZihiLmRhdGEucHJvZClkLnByb2Q9Yi5kYXRhLnByb2Q7aWYo Yi5kYXRhLmNhdClkLmNhdD1iLmRhdGEuY2F0O1JpZ2h0Tm93LkFqYXgubWFrZVJl cXVlc3QoIi9jaS9hamF4UmVxdWVzdE9wdGlvbmFsL2NoZWNrQ2hhdFF1ZXVlIixk LHtkYXRhOntldmVudE5hbWU6ImV2dF9jaGF0UXVldWVSZXNwb25zZSJ9fSl9CmZ1 bmN0aW9uIEJhKGQsYil7ZD17ZW5nYWdlbWVudElkOmJbMF0uZGF0YS5lbmdhZ2Vt ZW50X2lkLGNoYXRTSWQ6YlswXS5kYXRhLmNoYXRfc2lkfTtSaWdodE5vdy5BamF4 Lm1ha2VSZXF1ZXN0KCIvY2kvYWpheFJlcXVlc3Qvbm90aWZ5Q2hhdFNlcnZpY2VG QXR0YWNoIixkLHtkYXRhOntldmVudE5hbWU6ImV2dF9jaGF0Tm90aWZ5RmF0dGFj aFJlc3BvbnNlIn19KX1mdW5jdGlvbiBDYShkLGIpe2I9YlswXTtkPVtdO3ZhciBp PWIuZGF0YS5jaGF0TGFuZGluZ1VybCxtPVJpZ2h0Tm93LlVJLkZvcm0sbz1SaWdo dE5vdy5Vcmw7Zm9yKHZhciBzIGluIG0uZm9ybUZpZWxkcyl7c3dpdGNoKG0uZm9y bUZpZWxkc1tzXS5uYW1lKXtjYXNlICJwcm9kIjpjYXNlICJjYXQiOnZhciBBPSIi O0E9bS5mb3JtRmllbGRzW3NdLnZhbHVlLmxlbmd0aC0xO2lmKEE+PTApe0E9bS5m b3JtRmllbGRzW3NdLnZhbHVlW0FdO2k9by5hZGRQYXJhbWV0ZXIoaSxtLmZvcm1G aWVsZHNbc10ubmFtZSxBKX1icmVhazsKY2FzZSAiZmlyc3RfbmFtZSI6Y2FzZSAi bGFzdF9uYW1lIjpjYXNlICJlbWFpbCI6Y2FzZSAic3ViamVjdCI6aT1vLmFkZFBh cmFtZXRlcihpLG0uZm9ybUZpZWxkc1tzXS5uYW1lLG0uZm9ybUZpZWxkc1tzXS52 YWx1ZSk7YnJlYWt9aWYobS5mb3JtRmllbGRzW3NdLmN1c3RvbSlpZihiLmRhdGEu cmV0dXJuQ3VzdG9tRmllbGRzSW5BcnJheSYmbS5mb3JtRmllbGRzW3NdLnZhbHVl KWRbIl9pY2ZfIittLmZvcm1GaWVsZHNbc10uY3VzdG9tSURdPW0uZm9ybUZpZWxk c1tzXS52YWx1ZTtlbHNlIGk9by5hZGRQYXJhbWV0ZXIoaSwiX2ljZl8iK20uZm9y bUZpZWxkc1tzXS5jdXN0b21JRCxtLmZvcm1GaWVsZHNbc10udmFsdWUpfWk9by5h ZGRQYXJhbWV0ZXIoaSwicV9pZCIsby5nZXRQYXJhbWV0ZXIoInFfaWQiKSk7aT1v LmFkZFBhcmFtZXRlcihpLCJwYWMiLG8uZ2V0UGFyYW1ldGVyKCJwYWMiKSk7aT1v LmFkZFBhcmFtZXRlcihpLCJzdXJ2ZXlfc2VuZF9pZCIsby5nZXRQYXJhbWV0ZXIo InN1cnZleV9zZW5kX2lkIikpOwppPW8uYWRkUGFyYW1ldGVyKGksInN1cnZleV9z ZW5kX2RlbGF5IixvLmdldFBhcmFtZXRlcigic3VydmV5X3NlbmRfZGVsYXkiKSk7 aT1vLmFkZFBhcmFtZXRlcihpLCJzdXJ2ZXlfY29tcF9pZCIsby5nZXRQYXJhbWV0 ZXIoInN1cnZleV9jb21wX2lkIikpO2k9by5hZGRQYXJhbWV0ZXIoaSwic3VydmV5 X3Rlcm1faWQiLG8uZ2V0UGFyYW1ldGVyKCJzdXJ2ZXlfdGVybV9pZCIpKTtiLmRh dGEuY2hhdExhbmRpbmdVcmw9aTtiLmRhdGEuY3VzdG9tRmllbGRzPWQ7dGhpcy5m aXJlKCJldnRfY2hhdFRyYW5zbGF0ZUZvcm1GaWVsZHNSZXNwb25zZSIsYil9dmFy IGs9e30seT1udWxsLHA9e30sdT1udWxsLFE9MCxJPTEsSj0yLHo9ZmFsc2UsRT1m YWxzZSxuPVtdLHI9IiIscT0wLHY9MCx0LEM9W10sTz0wLEs9ZmFsc2U7dGhpcy5p bml0aWFsaXplRXZlbnRCdXM9ZnVuY3Rpb24oKXtpZihSaWdodE5vdy5VcmwuZ2V0 U2Vzc2lvbigpIT0iIikoeT1SaWdodE5vdy5VcmwuZ2V0UGFyYW1ldGVyKCJzbm8i KSl8fAooeT0wKTtRPVJpZ2h0Tm93LlVybC5nZXRQYXJhbWV0ZXIoImlfaWQiKXx8 MDt2YXIgZD0ic3Vic2NyaWJlIjt0aGlzW2RdKCJldnRfYW5zd2VyTm90aWZpY2F0 aW9uVXBkYXRlUmVxdWVzdCIsYSx0aGlzKTt0aGlzW2RdKCJldnRfbWVudUZpbHRl clNlbGVjdFJlcXVlc3QiLGlhLHRoaXMpO3RoaXNbZF0oImV2dF9wcm9kQ2F0RGVs ZXRlUmVxdWVzdCIsa2EsdGhpcyk7dGhpc1tkXSgiZXZ0X3Byb2RDYXRSZW5ld1Jl cXVlc3QiLGxhLHRoaXMpO3RoaXNbZF0oImV2dF9wcm9kQ2F0QWRkUmVxdWVzdCIs amEsdGhpcyk7dGhpc1tkXSgiZXZ0X2ZpbGVVcGxvYWRSZXF1ZXN0IixmLHRoaXMp O3RoaXNbZF0oImV2dF9mb3JtQnV0dG9uU3VibWl0UmVxdWVzdCIsaCx0aGlzKTt0 aGlzW2RdKCJldnRfZm9ybUZpZWxkVmFsaWRhdGVSZXNwb25zZSIsZyx0aGlzKTt0 aGlzW2RdKCJldnRfZm9ybUZpZWxkQ291bnRSZXF1ZXN0IixqLHRoaXMpO3RoaXNb ZF0oImV2dF9mb3JtRmllbGRQcm92aW5jZVJlcXVlc3QiLApsLHRoaXMpO3RoaXNb ZF0oImV2dF9mb3JtRmllbGRBY2NvdW50RXhpc3RzUmVxdWVzdCIsVCx0aGlzKTt0 aGlzW2RdKCJldnRfZm9ybVN1Ym1pdFJlcXVlc3QiLEgsdGhpcyk7dGhpc1tkXSgi ZXZ0X3Bhc3N3b3JkUmVzZXRTdWJtaXRSZXF1ZXN0Iix6YSx0aGlzKTt0aGlzW2Rd KCJldnRfZW1haWxMaW5rUmVxdWVzdCIsWSx0aGlzKTt0aGlzW2RdKCJldnRfZW1h aWxQYXNzd29yZFJlcXVlc3QiLFosdGhpcyk7dGhpc1tkXSgiZXZ0X2VtYWlsVXNl cm5hbWVSZXF1ZXN0IiwkLHRoaXMpO3RoaXNbZF0oImV2dF9hbnN3ZXJGZWVkYmFj a1JlcXVlc3QiLGJhLHRoaXMpO3RoaXNbZF0oImV2dF9zaXRlRmVlZGJhY2tSZXF1 ZXN0IixhYSx0aGlzKTt0aGlzW2RdKCJldnRfYW5zd2VyUmF0aW5nUmVxdWVzdCIs Y2EsdGhpcyk7dGhpc1tkXSgiZXZ0X2xvZ2luRm9ybVN1Ym1pdFJlcXVlc3QiLGMs dGhpcyk7dGhpc1tkXSgiZXZ0X2xvZ291dFJlcXVlc3QiLGUsdGhpcyk7dGhpc1tk XSgiZXZ0X21lbnVGaWx0ZXJSZXF1ZXN0IiwKZ2EsdGhpcyk7dGhpc1tkXSgiZXZ0 X2FjY2Vzc2libGVUcmVlVmlld1JlcXVlc3QiLGVhLHRoaXMpO3RoaXNbZF0oImV2 dF9zZWFyY2hUeXBlUmVxdWVzdCIsVSx0aGlzKTt0aGlzW2RdKCJldnRfc29ydFR5 cGVSZXF1ZXN0IixWLHRoaXMpO3RoaXNbZF0oImV2dF9vcmdUeXBlUmVxdWVzdCIs Vyx0aGlzKTt0aGlzW2RdKCJldnRfY3VzdG9tTWVudVJlcXVlc3QiLFgsdGhpcyk7 dGhpc1tkXSgiZXZ0X2tleXdvcmRDaGFuZ2VkUmVxdWVzdCIsZGEsdGhpcyk7dGhp c1tkXSgiZXZ0X3NlYXJjaFJlcXVlc3QiLG1hLHRoaXMpO3RoaXNbZF0oImV2dF9z ZWFyY2hGaWx0ZXJzUmVzcG9uc2UiLG9hLHRoaXMpO3RoaXNbZF0oImV2dF9zZWFy Y2hJblByb2dyZXNzUmVxdWVzdCIsdGEsdGhpcyk7dGhpc1tkXSgiZXZ0X21vcmVS ZXN1bHRzUmVxdWVzdCIsc2EsdGhpcyk7dGhpc1tkXSgiZXZ0X3BhZ2VSZXF1ZXN0 Iix1YSx0aGlzKTt0aGlzW2RdKCJldnRfc2V0SW5pdGlhbEZpbHRlcnNSZXF1ZXN0 IiwKcWEsdGhpcyk7dGhpc1tkXSgiZXZ0X2NoYXRRdWV1ZVJlcXVlc3QiLEFhLHRo aXMpO3RoaXNbZF0oImV2dF9jaGF0Tm90aWZ5RmF0dGFjaFJlcXVlc3QiLEJhLHRo aXMpO3RoaXNbZF0oImV2dF9jaGF0VHJhbnNsYXRlRm9ybUZpZWxkc1JlcXVlc3Qi LENhLHRoaXMpO3RoaXNbZF0oImV2dF9jb21tdW5pdHlTZWFyY2hSZXF1ZXN0IixS LHRoaXMpO3RoaXNbZF0oImV2dF9hbnN3ZXJDb21tZW50QWN0aW9uUmVxdWVzdCIs Uyx0aGlzKX19fTtZQUhPTy51dGlsLkV2ZW50Lm9uRE9NUmVhZHkoZnVuY3Rpb24o KXt2YXIgYT1SaWdodE5vdy5FdmVudDthLkV2ZW50QnVzPW5ldyBhLkV2ZW50QnVz O2EuRXZlbnRCdXMuaW5pdGlhbGl6ZUV2ZW50QnVzLmNhbGwoYSl9KTsK ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=standard1316468885.js Content-Type: application/x-javascript; charset=UTF-8; name=standard1316468885.js Content-Location: http://acer--uk.custhelp.com/euf/rightnow/optimized/templates/standard1316468885.js Content-Transfer-Encoding: Base64 ClJpZ2h0Tm93LldpZGdldC5Mb2dvdXRMaW5rMj1mdW5jdGlvbihkYXRhLGluc3Rh bmNlSUQpe3RoaXMuZGF0YT1kYXRhO3RoaXMuaW5zdGFuY2VJRD1pbnN0YW5jZUlE O2lmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJybl8iK3RoaXMuaW5zdGFuY2VJ RCkpCntZQUhPTy51dGlsLkV2ZW50LmFkZExpc3RlbmVyKCJybl8iK3RoaXMuaW5z dGFuY2VJRCsiX0xvZ291dExpbmsiLCJjbGljayIsdGhpcy5fb25Mb2dvdXRDbGlj ayxudWxsLHRoaXMpO1JpZ2h0Tm93LkV2ZW50LnN1YnNjcmliZSgiZXZ0X2xvZ291 dFJlc3BvbnNlIix0aGlzLl9vbkxvZ291dENvbXBsZXRlZCx0aGlzKTt9fTtSaWdo dE5vdy5XaWRnZXQuTG9nb3V0TGluazIucHJvdG90eXBlPXtfb25Mb2dvdXRDb21w bGV0ZWQ6ZnVuY3Rpb24odHlwZSxhcmcpCnt2YXIgcmVzdWx0PWFyZ1swXTtpZihy ZXN1bHQuc3VjY2Vzcz09PTEmJiFSaWdodE5vdy5VSS5Gb3JtLmxvZ291dEluUHJv Z3Jlc3MpCntSaWdodE5vdy5VSS5Gb3JtLmxvZ291dEluUHJvZ3Jlc3M9dHJ1ZTtp ZihyZXN1bHQuc29jaWFsTG9nb3V0KQpSaWdodE5vdy5VcmwubmF2aWdhdGUocmVz dWx0LnNvY2lhbExvZ291dCx0cnVlKTtlbHNlIGlmKHRoaXMuZGF0YS5hdHRycy5y ZWRpcmVjdF91cmw9PT0nJykKUmlnaHROb3cuVXJsLm5hdmlnYXRlKHJlc3VsdC51 cmwsdHJ1ZSk7ZWxzZQpSaWdodE5vdy5VcmwubmF2aWdhdGUodGhpcy5kYXRhLmF0 dHJzLnJlZGlyZWN0X3VybCtyZXN1bHQuc2Vzc2lvbix0cnVlKTt9fSxfb25Mb2dv dXRDbGljazpmdW5jdGlvbigpCnt2YXIgZW89bmV3IFJpZ2h0Tm93LkV2ZW50LkV2 ZW50T2JqZWN0KCk7ZW8ud19pZD10aGlzLmluc3RhbmNlSUQ7ZW8uZGF0YS5jdXJy ZW50VXJsPXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtlby5kYXRhLnJlZGlyZWN0 VXJsPXRoaXMuZGF0YS5hdHRycy5yZWRpcmVjdF91cmw7UmlnaHROb3cuRXZlbnQu ZmlyZSgiZXZ0X2xvZ291dFJlcXVlc3QiLGVvKTt9fTsKUmlnaHROb3cuV2lkZ2V0 LkxvZ2luRGlhbG9nMj1mdW5jdGlvbihkYXRhLGluc3RhbmNlSUQpe3RoaXMuZGF0 YT1kYXRhO3RoaXMuaW5zdGFuY2VJRD1pbnN0YW5jZUlEO3RoaXMuX2RpYWxvZz10 aGlzLl9rZXlMaXN0ZW5lcj1udWxsO3RoaXMuX2Vycm9yRGlzcGxheT1kb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgicm5fIit0aGlzLmluc3RhbmNlSUQrIl9FcnJvck1l c3NhZ2UiKTt0aGlzLl9jb250YWluZXI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo InJuXyIrdGhpcy5pbnN0YW5jZUlEKTtpZih0aGlzLl9jb250YWluZXIpCnt2YXIg cm5fdHJpZ2dlcl9lbGVtZW50cz10aGlzLmRhdGEuYXR0cnMudHJpZ2dlcl9lbGVt ZW50LnNwbGl0KCIsIik7dmFyIHJuX3JlZGlyZWN0X3VybHM9dGhpcy5kYXRhLmF0 dHJzLnJlZGlyZWN0X3VybC5zcGxpdCgiLCIpO2Zvcih2YXIgaSBpbiBybl90cmln Z2VyX2VsZW1lbnRzKXtZQUhPTy51dGlsLkV2ZW50LmFkZExpc3RlbmVyKHJuX3Ry aWdnZXJfZWxlbWVudHNbaV0sImNsaWNrIix0aGlzLl9vbkxvZ2luVHJpZ2dlckNs aWNrLHJuX3JlZGlyZWN0X3VybHNbaV0sdGhpcyk7fQpSaWdodE5vdy5FdmVudC5z dWJzY3JpYmUoImV2dF9sb2dpbkZvcm1TdWJtaXRSZXNwb25zZSIsdGhpcy5fb25S ZXNwb25zZVJlY2VpdmVkLHRoaXMpO319O1JpZ2h0Tm93LldpZGdldC5Mb2dpbkRp YWxvZzIucHJvdG90eXBlPXtfb25Mb2dpblRyaWdnZXJDbGljazpmdW5jdGlvbih0 eXBlLGFyZyl7WUFIT08udXRpbC5Eb20uYWRkQ2xhc3ModGhpcy5fZXJyb3JEaXNw bGF5LCdybl9IaWRkZW4nKTtpZihhcmcpe3RoaXMuZGF0YS5hdHRycy5yZWRpcmVj dF91cmw9YXJnO30KaWYoIXRoaXMuX2RpYWxvZyl7dmFyIGRpYWxvZ1RpdGxlPXRo aXMuZGF0YS5hdHRycy5sYWJlbF9kaWFsb2dfdGl0bGU7dmFyIGJ1dHRvbnM9W3t0 ZXh0OnRoaXMuZGF0YS5hdHRycy5sYWJlbF9sb2dpbl9idXR0b24saGFuZGxlcjp7 Zm46dGhpcy5fb25TdWJtaXQsc2NvcGU6dGhpc319XTt0aGlzLl9kaWFsb2c9Umln aHROb3cuVUkuRGlhbG9nLmFjdGlvbkRpYWxvZyhkaWFsb2dUaXRsZSxkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgicm5fIit0aGlzLmluc3RhbmNlSUQpLHsiYnV0dG9u cyI6YnV0dG9uc30pO3RoaXMuX2tleUxpc3RlbmVyPVJpZ2h0Tm93LlVJLkRpYWxv Zy5hZGREaWFsb2dFbnRlcktleUxpc3RlbmVyKHRoaXMuX2RpYWxvZyx0aGlzLl9v blN1Ym1pdCx0aGlzKTt0aGlzLl9kaWFsb2cudmFsaWRhdGU9ZnVuY3Rpb24oKXty ZXR1cm4gZmFsc2U7fTt9CmlmKHRoaXMuX2Vycm9yRGlzcGxheSkKdGhpcy5fZXJy b3JEaXNwbGF5LmlubmVySFRNTD0iIjtZQUhPTy51dGlsLkRvbS5yZW1vdmVDbGFz cygicm5fIit0aGlzLmluc3RhbmNlSUQsJ3JuX0hpZGRlbicpO3RoaXMuX2RpYWxv Zy5zaG93KCk7dmFyIGZvY3VzRWxlbWVudD1udWxsO3RoaXMuX3VzZXJuYW1lRmll bGQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJuXyIrdGhpcy5pbnN0YW5jZUlE KyJfVXNlcm5hbWUiKTt0aGlzLl9wYXNzd29yZEZpZWxkPWRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCJybl8iK3RoaXMuaW5zdGFuY2VJRCsiX1Bhc3N3b3JkIik7aWYo dGhpcy5fdXNlcm5hbWVGaWVsZCkKe2lmKHRoaXMuX3VzZXJuYW1lRmllbGQudmFs dWU9PT0nJykKZm9jdXNFbGVtZW50PXRoaXMuX3VzZXJuYW1lRmllbGQ7ZWxzZQpm b2N1c0VsZW1lbnQ9dGhpcy5fcGFzc3dvcmRGaWVsZDtSaWdodE5vdy5VSS5EaWFs b2cuZW5hYmxlRGlhbG9nQ29udHJvbHModGhpcy5fZGlhbG9nLHRoaXMuX2tleUxp c3RlbmVyLGZvY3VzRWxlbWVudCk7Zm9jdXNFbGVtZW50LmZvY3VzKCk7fX0sX29u Q2FuY2VsOmZ1bmN0aW9uKHR5cGUsYXJnKXtpZih0aGlzLl9lcnJvckRpc3BsYXkp Cnt0aGlzLl9lcnJvckRpc3BsYXkuaW5uZXJIVE1MPSIiO1lBSE9PLnV0aWwuRG9t LnJlbW92ZUNsYXNzKHRoaXMuX2Vycm9yRGlzcGxheSwncm5fTWVzc2FnZUJveCBy bl9FcnJvck1lc3NhZ2UnKTtZQUhPTy51dGlsLkRvbS5hZGRDbGFzcyh0aGlzLl9l cnJvckRpc3BsYXksJ3JuX0hpZGRlbicpO30KaWYodGhpcy5fZGlhbG9nKQp7Umln aHROb3cuVUkuRGlhbG9nLmRpc2FibGVEaWFsb2dDb250cm9scyh0aGlzLl9kaWFs b2csdGhpcy5fa2V5TGlzdGVuZXIpO3RoaXMuX2RpYWxvZy5oaWRlKCk7fX0sX29u U3VibWl0OmZ1bmN0aW9uKHR5cGUsYXJncyl7aWYodHlwZT09PSJrZXlQcmVzc2Vk IiYmKFlBSE9PLnV0aWwuRXZlbnQuZ2V0VGFyZ2V0KGFyZ3NbMV0pLnRhZ05hbWU9 PT0nQSd8fFlBSE9PLnV0aWwuRXZlbnQuZ2V0VGFyZ2V0KGFyZ3NbMV0pLmlubmVy SFRNTD09PXRoaXMuZGF0YS5hdHRycy5sYWJlbF9sb2dpbl9idXR0b258fFlBSE9P LnV0aWwuRXZlbnQuZ2V0VGFyZ2V0KGFyZ3NbMV0pLmlubmVySFRNTD09PXRoaXMu ZGF0YS5hdHRycy5sYWJlbF9jYW5jZWxfYnV0dG9uKSkKcmV0dXJuO3ZhciBlbz1u ZXcgUmlnaHROb3cuRXZlbnQuRXZlbnRPYmplY3QoKTtlby53X2lkPXRoaXMuaW5z dGFuY2VJRDtlby5kYXRhLnVzZXJuYW1lPSh0aGlzLl91c2VybmFtZUZpZWxkKT9Z QUhPTy5sYW5nLnRyaW0odGhpcy5fdXNlcm5hbWVGaWVsZC52YWx1ZSk6IiI7dmFy IGVycm9yTWVzc2FnZT0iIjtpZihlby5kYXRhLnVzZXJuYW1lLmluZGV4T2YoJyAn KT4tMSkKZXJyb3JNZXNzYWdlPVJpZ2h0Tm93LkludGVyZmFjZS5nZXRNZXNzYWdl KCJVU0VSTkFNRV9GSUVMRF9DT05UQUlOX1NQQUNFU19NU0ciKTtlbHNlIGlmKGVv LmRhdGEudXNlcm5hbWUuaW5kZXhPZigiJyIpPi0xfHxlby5kYXRhLnVzZXJuYW1l LmluZGV4T2YoJyInKT4tMSkKZXJyb3JNZXNzYWdlPVJpZ2h0Tm93LkludGVyZmFj ZS5nZXRNZXNzYWdlKCJVU0VSTkFNRV9GSUVMRF9DT05UX1FVT1RFX0NIQVJTX01T RyIpO2Vsc2UgaWYoZW8uZGF0YS51c2VybmFtZS5pbmRleE9mKCI8Iik+LTF8fGVv LmRhdGEudXNlcm5hbWUuaW5kZXhPZigiPiIpPi0xKQplcnJvck1lc3NhZ2U9Umln aHROb3cuSW50ZXJmYWNlLmdldE1lc3NhZ2UoIlVTRVJOQU1FX0ZJRUxEX0NPTlRB SU5fVEhBTl9DSEFSU19NU0ciKTtpZihlcnJvck1lc3NhZ2UhPT0iIikKe3RoaXMu X2FkZEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UsJ3JuXycrdGhpcy5pbnN0YW5j ZUlEKydfVXNlcm5hbWUnKTtyZXR1cm4gZmFsc2U7fQppZighdGhpcy5kYXRhLmF0 dHJzLmRpc2FibGVfcGFzc3dvcmQmJnRoaXMuX3Bhc3N3b3JkRmllbGQpCmVvLmRh dGEucGFzc3dvcmQ9dGhpcy5fcGFzc3dvcmRGaWVsZC52YWx1ZTtlbHNlCmVvLmRh dGEucGFzc3dvcmQ9IiI7ZW8uZGF0YS51cmw9d2luZG93LmxvY2F0aW9uLnBhdGhu YW1lO1JpZ2h0Tm93LkV2ZW50LmZpcmUoImV2dF9sb2dpbkZvcm1TdWJtaXRSZXF1 ZXN0Iixlbyk7bmV3IFlBSE9PLnV0aWwuQW5pbSgicm5fIit0aGlzLmluc3RhbmNl SUQrIl9Db250ZW50Iix7b3BhY2l0eTp7dG86MH19LDAuNSxZQUhPTy51dGlsLkVh c2luZy5lYXNlT3V0KS5hbmltYXRlKCk7WUFIT08udXRpbC5Eb20uYWRkQ2xhc3Mo InJuXyIrdGhpcy5pbnN0YW5jZUlELCdybl9Db250ZW50TG9hZGluZycpO2lmKFlB SE9PLmVudi51YS5pZT4wKQp7aWYod2luZG93LmV4dGVybmFsJiYiQXV0b0NvbXBs ZXRlU2F2ZUZvcm0iaW4gd2luZG93LmV4dGVybmFsKQp7dmFyIGZvcm09ZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoInJuXyIrdGhpcy5pbnN0YW5jZUlEKyJfRm9ybSIp O2lmKGZvcm0pCndpbmRvdy5leHRlcm5hbC5BdXRvQ29tcGxldGVTYXZlRm9ybShm b3JtKTt9fQpyZXR1cm4gZmFsc2U7fSxfb25SZXNwb25zZVJlY2VpdmVkOmZ1bmN0 aW9uKHR5cGUscmVzdWx0KXtyZXN1bHQ9cmVzdWx0WzBdO25ldyBZQUhPTy51dGls LkFuaW0oInJuXyIrdGhpcy5pbnN0YW5jZUlEKyJfQ29udGVudCIse29wYWNpdHk6 e3RvOjF9fSwwLjUsWUFIT08udXRpbC5FYXNpbmcuZWFzZUluKS5hbmltYXRlKCk7 WUFIT08udXRpbC5Eb20ucmVtb3ZlQ2xhc3MoInJuXyIrdGhpcy5pbnN0YW5jZUlE LCdybl9Db250ZW50TG9hZGluZycpO2lmKHRoaXMuaW5zdGFuY2VJRD09cmVzdWx0 LndfaWQpCntpZihyZXN1bHQuc3VjY2Vzcz09MSkKe3RoaXMuX2RpYWxvZy5zZXRG b290ZXIoIiIpO2lmKHRoaXMuX2NvbnRhaW5lcikKZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoInJuXyIrdGhpcy5pbnN0YW5jZUlEKS5pbm5lckhUTUw9cmVzdWx0Lm1l c3NhZ2U7UmlnaHROb3cuVXJsLm5hdmlnYXRlKHRoaXMuX2dldFJlZGlyZWN0VXJs KHJlc3VsdCkpO30KZWxzZQp7dGhpcy5fYWRkRXJyb3JNZXNzYWdlKHJlc3VsdC5t ZXNzYWdlLCdybl8nK3RoaXMuaW5zdGFuY2VJRCsnX1VzZXJuYW1lJyk7fX19LF9n ZXRSZWRpcmVjdFVybDpmdW5jdGlvbihyZXN1bHQpe2lmKHRoaXMuZGF0YS5qcy5y ZWRpcmVjdE92ZXJyaWRlKQp7dmFyIHNlc3Npb25WYWx1ZT1yZXN1bHQuc2Vzc2lv blBhcm0uc3Vic3RyKHJlc3VsdC5zZXNzaW9uUGFybS5sYXN0SW5kZXhPZigiLyIp KzEpO2lmKCFzZXNzaW9uVmFsdWUmJnRoaXMuZGF0YS5qcy5yZWRpcmVjdFNlc3Np b24pCnNlc3Npb25WYWx1ZT10aGlzLmRhdGEuanMucmVkaXJlY3RTZXNzaW9uO3Jl dHVybiBSaWdodE5vdy5VcmwuYWRkUGFyYW1ldGVyKHRoaXMuZGF0YS5qcy5yZWRp cmVjdE92ZXJyaWRlLCdzZXNzaW9uJyxzZXNzaW9uVmFsdWUpK3RoaXMuZGF0YS5h dHRycy5hcHBlbmRfdG9fdXJsO30KaWYodGhpcy5kYXRhLmF0dHJzLnJlZGlyZWN0 X3VybD09PScnKQp7aWYocmVzdWx0LmFkZFNlc3Npb24pCnJldHVybiByZXN1bHQu dXJsK3RoaXMuZGF0YS5hdHRycy5hcHBlbmRfdG9fdXJsK3Jlc3VsdC5zZXNzaW9u UGFybTtyZXR1cm4gcmVzdWx0LnVybCt0aGlzLmRhdGEuYXR0cnMuYXBwZW5kX3Rv X3VybDt9CmlmKHJlc3VsdC5hZGRTZXNzaW9uKQpyZXR1cm4gdGhpcy5kYXRhLmF0 dHJzLnJlZGlyZWN0X3VybCtyZXN1bHQuc2Vzc2lvblBhcm07cmV0dXJuIHRoaXMu ZGF0YS5hdHRycy5yZWRpcmVjdF91cmw7fSxfYWRkRXJyb3JNZXNzYWdlOmZ1bmN0 aW9uKG1lc3NhZ2UsZm9jdXNFbGVtZW50KXtpZih0aGlzLl9lcnJvckRpc3BsYXkp CntZQUhPTy51dGlsLkRvbS5hZGRDbGFzcyh0aGlzLl9lcnJvckRpc3BsYXksJ3Ju X01lc3NhZ2VCb3ggcm5fRXJyb3JNZXNzYWdlJyk7WUFIT08udXRpbC5Eb20ucmVt b3ZlQ2xhc3ModGhpcy5fZXJyb3JEaXNwbGF5LCdybl9IaWRkZW4nKTt0aGlzLl9l cnJvckRpc3BsYXkuaW5uZXJIVE1MPW1lc3NhZ2U7dGhpcy5fZXJyb3JEaXNwbGF5 LmZpcnN0Q2hpbGQuZm9jdXMoKTt9fX07ClJpZ2h0Tm93LldpZGdldC5OYXZpZ2F0 aW9uVGFiMj1mdW5jdGlvbihkYXRhLGluc3RhbmNlSUQpCnt0aGlzLmRhdGE9ZGF0 YTt0aGlzLmluc3RhbmNlSUQ9aW5zdGFuY2VJRDtpZih0aGlzLmRhdGEuYXR0cnMu c3VicGFnZXMpCnt0aGlzLl90b2dnbGVFbGVtZW50PWRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCJybl8iK3RoaXMuaW5zdGFuY2VJRCsiX0Ryb3Bkb3duQnV0dG9uIik7 aWYoIXRoaXMuX3RvZ2dsZUVsZW1lbnQpcmV0dXJuO1lBSE9PLnV0aWwuRXZlbnQu YWRkTGlzdGVuZXIodGhpcy5fdG9nZ2xlRWxlbWVudCwnY2xpY2snLHRoaXMuX3Rv Z2dsZURyb3Bkb3duLG51bGwsdGhpcyk7dGhpcy5fdGFiRWxlbWVudD1kb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgicm5fIit0aGlzLmluc3RhbmNlSUQpO3RoaXMuX2Ry b3Bkb3duRWxlbWVudD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicm5fIit0aGlz Lmluc3RhbmNlSUQrIl9TdWJOYXZpZ2F0aW9uIik7dGhpcy5fbGlua0VsZW1lbnRz PVlBSE9PLnV0aWwuRG9tLmdldENoaWxkcmVuKHRoaXMuX2Ryb3Bkb3duRWxlbWVu dCk7WUFIT08udXRpbC5FdmVudC5hZGRMaXN0ZW5lcih0aGlzLl9saW5rRWxlbWVu dHNbdGhpcy5fbGlua0VsZW1lbnRzLmxlbmd0aC0xXSwnZm9jdXMnLHRoaXMuX3Rv Z2dsZURyb3Bkb3duLG51bGwsdGhpcyk7WUFIT08udXRpbC5FdmVudC5hZGRMaXN0 ZW5lcih0aGlzLl9saW5rRWxlbWVudHNbMF0sJ2ZvY3VzJyx0aGlzLl90b2dnbGVE cm9wZG93bixudWxsLHRoaXMpO1lBSE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVuZXIo InJuXyIrdGhpcy5pbnN0YW5jZUlEKyJfTGluayIsImtleWRvd24iLGZ1bmN0aW9u KGV2dCl7aWYoZXZ0LmtleUNvZGUmJmV2dC5zaGlmdEtleSYmZXZ0LmtleUNvZGU9 PT1ZQUhPTy51dGlsLktleUxpc3RlbmVyLktFWS5UQUIpCnRoaXMuX2Nsb3NlRHJv cGRvd24oe3R5cGU6ImNsaWNrIn0sbnVsbCk7fSxudWxsLHRoaXMpO30KaWYodGhp cy5kYXRhLmF0dHJzLnNlYXJjaGVzX2RvbmU+MCYmdGhpcy5kYXRhLmpzLnNlYXJj aGVzPHRoaXMuZGF0YS5hdHRycy5zZWFyY2hlc19kb25lKQpSaWdodE5vdy5FdmVu dC5zdWJzY3JpYmUoImV2dF9zZWFyY2hJblByb2dyZXNzUmVxdWVzdCIsdGhpcy5f b25TZWFyY2hDb3VudENoYW5nZWQsdGhpcyk7fTtSaWdodE5vdy5XaWRnZXQuTmF2 aWdhdGlvblRhYjIucHJvdG90eXBlPXtfdG9nZ2xlRHJvcGRvd246ZnVuY3Rpb24o ZXZ0LGFyZ3MpCntZQUhPTy51dGlsLkV2ZW50LnN0b3BFdmVudChldnQpO2lmKHRo aXMuX2Ryb3Bkb3duT3BlbiYmWUFIT08udXRpbC5FdmVudC5nZXRUYXJnZXQoZXZ0 KT09PXRoaXMuX3RvZ2dsZUVsZW1lbnQpCnRoaXMuX2Nsb3NlRHJvcGRvd24oe3R5 cGU6ImNsaWNrIn0sbnVsbCk7ZWxzZQp0aGlzLl9vcGVuRHJvcGRvd24oKTtyZXR1 cm4gZmFsc2U7fSxfb3BlbkRyb3Bkb3duOmZ1bmN0aW9uKCkKe2lmKCF0aGlzLl9k cm9wZG93bk9wZW4pCnt0aGlzLl90YWJSZWdpb249WUFIT08udXRpbC5Eb20uZ2V0 UmVnaW9uKHRoaXMuX3RhYkVsZW1lbnQpO1lBSE9PLnV0aWwuRG9tLnNldFN0eWxl KHRoaXMuX2Ryb3Bkb3duRWxlbWVudCwidG9wIiwodGhpcy5fdGFiUmVnaW9uLmJv dHRvbS00KSsicHgiKTt2YXIgbGVmdD1ZQUhPTy51dGlsLkRvbS5oYXNDbGFzcyh0 aGlzLl90YWJFbGVtZW50LHRoaXMuZGF0YS5hdHRycy5jc3NfY2xhc3MpPzQ6MDtZ QUhPTy51dGlsLkRvbS5zZXRTdHlsZSh0aGlzLl9kcm9wZG93bkVsZW1lbnQsImxl ZnQiLCh0aGlzLl90YWJSZWdpb24ubGVmdC1sZWZ0KSsicHgiKTtZQUhPTy51dGls LkRvbS5yZW1vdmVDbGFzcyh0aGlzLl9kcm9wZG93bkVsZW1lbnQsInJuX1NjcmVl blJlYWRlck9ubHkiKTtZQUhPTy51dGlsLkV2ZW50LmFkZExpc3RlbmVyKFt0aGlz Ll90YWJFbGVtZW50LHRoaXMuX2Ryb3Bkb3duRWxlbWVudF0sJ21vdXNlb3V0Jyx0 aGlzLl9jbG9zZURyb3Bkb3duLG51bGwsdGhpcyk7WUFIT08udXRpbC5FdmVudC5h ZGRMaXN0ZW5lcihbdGhpcy5fZHJvcGRvd25FbGVtZW50LGRvY3VtZW50XSwnY2xp Y2snLHRoaXMuX2Nsb3NlRHJvcGRvd24sbnVsbCx0aGlzKTt2YXIgbGFzdERyb3Bk b3duRWxlbWVudD10aGlzLl9saW5rRWxlbWVudHNbdGhpcy5fbGlua0VsZW1lbnRz Lmxlbmd0aC0xXTtZQUhPTy51dGlsLkV2ZW50LmFkZExpc3RlbmVyKGxhc3REcm9w ZG93bkVsZW1lbnQsImtleWRvd24iLGZ1bmN0aW9uKGV2dCl7aWYoZXZ0LmtleUNv ZGUmJiFldnQuc2hpZnRLZXkmJmV2dC5rZXlDb2RlPT09WUFIT08udXRpbC5LZXlM aXN0ZW5lci5LRVkuVEFCKQp0aGlzLl9jbG9zZURyb3Bkb3duKGV2dCk7fSxudWxs LHRoaXMpO3RoaXMuX2Ryb3Bkb3duT3Blbj10cnVlO319LF9jbG9zZURyb3Bkb3du OmZ1bmN0aW9uKGV2dCxhcmdzKQp7aWYodGhpcy5fZHJvcGRvd25PcGVuKQp7aWYo ZXZ0LnR5cGUhPT0ia2V5ZG93biImJmV2dC50eXBlIT09ImNsaWNrIikKe3ZhciBj b29yZGluYXRlcz1ZQUhPTy51dGlsLkV2ZW50LmdldFhZKGV2dCk7Y29vcmRpbmF0 ZXM9bmV3IFlBSE9PLnV0aWwuUG9pbnQoY29vcmRpbmF0ZXNbMF0sY29vcmRpbmF0 ZXNbMV0pO3RoaXMuX2Ryb3Bkb3duUmVnaW9uPXRoaXMuX2Ryb3Bkb3duUmVnaW9u fHxZQUhPTy51dGlsLkRvbS5nZXRSZWdpb24odGhpcy5fZHJvcGRvd25FbGVtZW50 KTtpZigodGhpcy5fdGFiUmVnaW9uJiZ0aGlzLl90YWJSZWdpb24uY29udGFpbnMo Y29vcmRpbmF0ZXMpKXx8KHRoaXMuX2Ryb3Bkb3duUmVnaW9uJiZ0aGlzLl9kcm9w ZG93blJlZ2lvbi5jb250YWlucyhjb29yZGluYXRlcykpKQpyZXR1cm47fQpZQUhP Ty51dGlsLkV2ZW50LnB1cmdlRWxlbWVudChkb2N1bWVudCxmYWxzZSk7WUFIT08u dXRpbC5Eb20uc2V0U3R5bGUodGhpcy5fZHJvcGRvd25FbGVtZW50LCJ0b3AiLCJh dXRvIik7WUFIT08udXRpbC5Eb20uc2V0U3R5bGUodGhpcy5fZHJvcGRvd25FbGVt ZW50LCJsZWZ0IiwiLTEwMDAwcHgiKTtZQUhPTy51dGlsLkRvbS5hZGRDbGFzcyh0 aGlzLl9kcm9wZG93bkVsZW1lbnQsInJuX1NjcmVlblJlYWRlck9ubHkiKTt0aGlz Ll9kcm9wZG93bk9wZW49ZmFsc2U7fX0sX29uU2VhcmNoQ291bnRDaGFuZ2VkOmZ1 bmN0aW9uKCkKe3RoaXMuZGF0YS5qcy5zZWFyY2hlcysrO2lmKHRoaXMuZGF0YS5q cy5zZWFyY2hlcz49dGhpcy5kYXRhLmF0dHJzLnNlYXJjaGVzX2RvbmUpCntSaWdo dE5vdy5FdmVudC51bnN1YnNjcmliZSgiZXZ0X3NlYXJjaEluUHJvZ3Jlc3NSZXF1 ZXN0Iix0aGlzLl9vblNlYXJjaENvdW50Q2hhbmdlZCk7dmFyIHRhYkVsZW1lbnQ9 ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JuXycrdGhpcy5pbnN0YW5jZUlEKTtp Zih0YWJFbGVtZW50KQpZQUhPTy51dGlsLkRvbS5yZW1vdmVDbGFzcyh0YWJFbGVt ZW50LCdybl9IaWRkZW4nKTt9fX07ClJpZ2h0Tm93LldpZGdldC5GaXJzdFRhYj1m dW5jdGlvbihkYXRhLGluc3RhbmNlSUQpCnt0aGlzLmRhdGE9ZGF0YTt0aGlzLmlu c3RhbmNlSUQ9aW5zdGFuY2VJRDtpZih0aGlzLmRhdGEuYXR0cnMuc3VicGFnZXMp Cnt0aGlzLl90b2dnbGVFbGVtZW50PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy bl8iK3RoaXMuaW5zdGFuY2VJRCsiX0Ryb3Bkb3duQnV0dG9uIik7aWYoIXRoaXMu X3RvZ2dsZUVsZW1lbnQpcmV0dXJuO1lBSE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVu ZXIodGhpcy5fdG9nZ2xlRWxlbWVudCwnY2xpY2snLHRoaXMuX3RvZ2dsZURyb3Bk b3duLG51bGwsdGhpcyk7dGhpcy5fdGFiRWxlbWVudD1kb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgicm5fIit0aGlzLmluc3RhbmNlSUQpO3RoaXMuX2Ryb3Bkb3duRWxl bWVudD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicm5fIit0aGlzLmluc3RhbmNl SUQrIl9TdWJOYXZpZ2F0aW9uIik7dGhpcy5fbGlua0VsZW1lbnRzPVlBSE9PLnV0 aWwuRG9tLmdldENoaWxkcmVuKHRoaXMuX2Ryb3Bkb3duRWxlbWVudCk7WUFIT08u dXRpbC5FdmVudC5hZGRMaXN0ZW5lcih0aGlzLl9saW5rRWxlbWVudHNbdGhpcy5f bGlua0VsZW1lbnRzLmxlbmd0aC0xXSwnZm9jdXMnLHRoaXMuX3RvZ2dsZURyb3Bk b3duLG51bGwsdGhpcyk7WUFIT08udXRpbC5FdmVudC5hZGRMaXN0ZW5lcih0aGlz Ll9saW5rRWxlbWVudHNbMF0sJ2ZvY3VzJyx0aGlzLl90b2dnbGVEcm9wZG93bixu dWxsLHRoaXMpO1lBSE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVuZXIoInJuXyIrdGhp cy5pbnN0YW5jZUlEKyJfTGluayIsImtleWRvd24iLGZ1bmN0aW9uKGV2dCl7aWYo ZXZ0LmtleUNvZGUmJmV2dC5zaGlmdEtleSYmZXZ0LmtleUNvZGU9PT1ZQUhPTy51 dGlsLktleUxpc3RlbmVyLktFWS5UQUIpCnRoaXMuX2Nsb3NlRHJvcGRvd24oe3R5 cGU6ImNsaWNrIn0sbnVsbCk7fSxudWxsLHRoaXMpO30KaWYodGhpcy5kYXRhLmF0 dHJzLnNlYXJjaGVzX2RvbmU+MCYmdGhpcy5kYXRhLmpzLnNlYXJjaGVzPHRoaXMu ZGF0YS5hdHRycy5zZWFyY2hlc19kb25lKQpSaWdodE5vdy5FdmVudC5zdWJzY3Jp YmUoImV2dF9zZWFyY2hJblByb2dyZXNzUmVxdWVzdCIsdGhpcy5fb25TZWFyY2hD b3VudENoYW5nZWQsdGhpcyk7fTtSaWdodE5vdy5XaWRnZXQuRmlyc3RUYWIucHJv dG90eXBlPXtfdG9nZ2xlRHJvcGRvd246ZnVuY3Rpb24oZXZ0LGFyZ3MpCntZQUhP Ty51dGlsLkV2ZW50LnN0b3BFdmVudChldnQpO2lmKHRoaXMuX2Ryb3Bkb3duT3Bl biYmWUFIT08udXRpbC5FdmVudC5nZXRUYXJnZXQoZXZ0KT09PXRoaXMuX3RvZ2ds ZUVsZW1lbnQpCnRoaXMuX2Nsb3NlRHJvcGRvd24oe3R5cGU6ImNsaWNrIn0sbnVs bCk7ZWxzZQp0aGlzLl9vcGVuRHJvcGRvd24oKTtyZXR1cm4gZmFsc2U7fSxfb3Bl bkRyb3Bkb3duOmZ1bmN0aW9uKCkKe2lmKCF0aGlzLl9kcm9wZG93bk9wZW4pCnt0 aGlzLl90YWJSZWdpb249WUFIT08udXRpbC5Eb20uZ2V0UmVnaW9uKHRoaXMuX3Rh YkVsZW1lbnQpO1lBSE9PLnV0aWwuRG9tLnNldFN0eWxlKHRoaXMuX2Ryb3Bkb3du RWxlbWVudCwidG9wIiwodGhpcy5fdGFiUmVnaW9uLmJvdHRvbS00KSsicHgiKTt2 YXIgbGVmdD1ZQUhPTy51dGlsLkRvbS5oYXNDbGFzcyh0aGlzLl90YWJFbGVtZW50 LHRoaXMuZGF0YS5hdHRycy5jc3NfY2xhc3MpPzQ6MDtZQUhPTy51dGlsLkRvbS5z ZXRTdHlsZSh0aGlzLl9kcm9wZG93bkVsZW1lbnQsImxlZnQiLCh0aGlzLl90YWJS ZWdpb24ubGVmdC1sZWZ0KSsicHgiKTtZQUhPTy51dGlsLkRvbS5yZW1vdmVDbGFz cyh0aGlzLl9kcm9wZG93bkVsZW1lbnQsInJuX1NjcmVlblJlYWRlck9ubHkiKTtZ QUhPTy51dGlsLkV2ZW50LmFkZExpc3RlbmVyKFt0aGlzLl90YWJFbGVtZW50LHRo aXMuX2Ryb3Bkb3duRWxlbWVudF0sJ21vdXNlb3V0Jyx0aGlzLl9jbG9zZURyb3Bk b3duLG51bGwsdGhpcyk7WUFIT08udXRpbC5FdmVudC5hZGRMaXN0ZW5lcihbdGhp cy5fZHJvcGRvd25FbGVtZW50LGRvY3VtZW50XSwnY2xpY2snLHRoaXMuX2Nsb3Nl RHJvcGRvd24sbnVsbCx0aGlzKTt2YXIgbGFzdERyb3Bkb3duRWxlbWVudD10aGlz Ll9saW5rRWxlbWVudHNbdGhpcy5fbGlua0VsZW1lbnRzLmxlbmd0aC0xXTtZQUhP Ty51dGlsLkV2ZW50LmFkZExpc3RlbmVyKGxhc3REcm9wZG93bkVsZW1lbnQsImtl eWRvd24iLGZ1bmN0aW9uKGV2dCl7aWYoZXZ0LmtleUNvZGUmJiFldnQuc2hpZnRL ZXkmJmV2dC5rZXlDb2RlPT09WUFIT08udXRpbC5LZXlMaXN0ZW5lci5LRVkuVEFC KQp0aGlzLl9jbG9zZURyb3Bkb3duKGV2dCk7fSxudWxsLHRoaXMpO3RoaXMuX2Ry b3Bkb3duT3Blbj10cnVlO319LF9jbG9zZURyb3Bkb3duOmZ1bmN0aW9uKGV2dCxh cmdzKQp7aWYodGhpcy5fZHJvcGRvd25PcGVuKQp7aWYoZXZ0LnR5cGUhPT0ia2V5 ZG93biImJmV2dC50eXBlIT09ImNsaWNrIikKe3ZhciBjb29yZGluYXRlcz1ZQUhP Ty51dGlsLkV2ZW50LmdldFhZKGV2dCk7Y29vcmRpbmF0ZXM9bmV3IFlBSE9PLnV0 aWwuUG9pbnQoY29vcmRpbmF0ZXNbMF0sY29vcmRpbmF0ZXNbMV0pO3RoaXMuX2Ry b3Bkb3duUmVnaW9uPXRoaXMuX2Ryb3Bkb3duUmVnaW9ufHxZQUhPTy51dGlsLkRv bS5nZXRSZWdpb24odGhpcy5fZHJvcGRvd25FbGVtZW50KTtpZigodGhpcy5fdGFi UmVnaW9uJiZ0aGlzLl90YWJSZWdpb24uY29udGFpbnMoY29vcmRpbmF0ZXMpKXx8 KHRoaXMuX2Ryb3Bkb3duUmVnaW9uJiZ0aGlzLl9kcm9wZG93blJlZ2lvbi5jb250 YWlucyhjb29yZGluYXRlcykpKQpyZXR1cm47fQpZQUhPTy51dGlsLkV2ZW50LnB1 cmdlRWxlbWVudChkb2N1bWVudCxmYWxzZSk7WUFIT08udXRpbC5Eb20uc2V0U3R5 bGUodGhpcy5fZHJvcGRvd25FbGVtZW50LCJ0b3AiLCJhdXRvIik7WUFIT08udXRp bC5Eb20uc2V0U3R5bGUodGhpcy5fZHJvcGRvd25FbGVtZW50LCJsZWZ0IiwiLTEw MDAwcHgiKTtZQUhPTy51dGlsLkRvbS5hZGRDbGFzcyh0aGlzLl9kcm9wZG93bkVs ZW1lbnQsInJuX1NjcmVlblJlYWRlck9ubHkiKTt0aGlzLl9kcm9wZG93bk9wZW49 ZmFsc2U7fX0sX29uU2VhcmNoQ291bnRDaGFuZ2VkOmZ1bmN0aW9uKCkKe3RoaXMu ZGF0YS5qcy5zZWFyY2hlcysrO2lmKHRoaXMuZGF0YS5qcy5zZWFyY2hlcz49dGhp cy5kYXRhLmF0dHJzLnNlYXJjaGVzX2RvbmUpCntSaWdodE5vdy5FdmVudC51bnN1 YnNjcmliZSgiZXZ0X3NlYXJjaEluUHJvZ3Jlc3NSZXF1ZXN0Iix0aGlzLl9vblNl YXJjaENvdW50Q2hhbmdlZCk7dmFyIHRhYkVsZW1lbnQ9ZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoJ3JuXycrdGhpcy5pbnN0YW5jZUlEKTtpZih0YWJFbGVtZW50KQpZ QUhPTy51dGlsLkRvbS5yZW1vdmVDbGFzcyh0YWJFbGVtZW50LCdybl9IaWRkZW4n KTt9fX07ClJpZ2h0Tm93LldpZGdldC5TaW1wbGVTZWFyY2g9ZnVuY3Rpb24oZGF0 YSxpbnN0YW5jZUlEKXt0aGlzLmRhdGE9ZGF0YTt0aGlzLmluc3RhbmNlSUQ9aW5z dGFuY2VJRDt0aGlzLl9zZWFyY2hGaWVsZD1kb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgicm5fIit0aGlzLmluc3RhbmNlSUQrIl9TZWFyY2hGaWVsZCIpO2lmKCF0aGlz Ll9zZWFyY2hGaWVsZClyZXR1cm47aWYodGhpcy5kYXRhLmF0dHJzLmluaXRpYWxf Zm9jdXMmJnRoaXMuX3NlYXJjaEZpZWxkLmZvY3VzKQp0aGlzLl9zZWFyY2hGaWVs ZC5mb2N1cygpO2lmKHRoaXMuZGF0YS5hdHRycy5sYWJlbF9oaW50KQp7WUFIT08u dXRpbC5FdmVudC5hZGRMaXN0ZW5lcih0aGlzLl9zZWFyY2hGaWVsZCwiZm9jdXMi LHRoaXMuX29uRm9jdXMsbnVsbCx0aGlzKTtZQUhPTy51dGlsLkV2ZW50LmFkZExp c3RlbmVyKHRoaXMuX3NlYXJjaEZpZWxkLCJibHVyIix0aGlzLl9vbkJsdXIsbnVs bCx0aGlzKTt9CllBSE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVuZXIoInJuXyIrdGhp cy5pbnN0YW5jZUlEKyJfU3VibWl0IiwiY2xpY2siLHRoaXMuX29uU2VhcmNoLG51 bGwsdGhpcyk7fTtSaWdodE5vdy5XaWRnZXQuU2ltcGxlU2VhcmNoLnByb3RvdHlw ZT17X29uU2VhcmNoOmZ1bmN0aW9uKCl7aWYoWUFIT08uZW52LnVhLmllIT09MCkK e2lmKCF0aGlzLl9wYXJlbnRGb3JtKQp0aGlzLl9wYXJlbnRGb3JtPWRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCJybl8iK3RoaXMuaW5zdGFuY2VJRCsiX1NlYXJjaEZv cm0iKTtpZih0aGlzLl9wYXJlbnRGb3JtJiZ3aW5kb3cuZXh0ZXJuYWwmJiJBdXRv Q29tcGxldGVTYXZlRm9ybSJpbiB3aW5kb3cuZXh0ZXJuYWwpCnt3aW5kb3cuZXh0 ZXJuYWwuQXV0b0NvbXBsZXRlU2F2ZUZvcm0odGhpcy5fcGFyZW50Rm9ybSk7fX0K dmFyIHNlYXJjaFN0cmluZz0odGhpcy5fc2VhcmNoRmllbGQudmFsdWU9PT10aGlz LmRhdGEuYXR0cnMubGFiZWxfaGludCk/IiI6dGhpcy5fc2VhcmNoRmllbGQudmFs dWU7c2VhcmNoU3RyaW5nPVJpZ2h0Tm93LlVybC5hZGRQYXJhbWV0ZXIodGhpcy5k YXRhLmF0dHJzLnJlcG9ydF9wYWdlX3VybCwia3ciLHNlYXJjaFN0cmluZyk7c2Vh cmNoU3RyaW5nPVJpZ2h0Tm93LlVybC5hZGRQYXJhbWV0ZXIoc2VhcmNoU3RyaW5n LCJzZWFyY2giLDEpO3NlYXJjaFN0cmluZz1SaWdodE5vdy5VcmwuYWRkUGFyYW1l dGVyKHNlYXJjaFN0cmluZywic2Vzc2lvbiIsUmlnaHROb3cuVXJsLmdldFNlc3Np b24oKSk7UmlnaHROb3cuVXJsLm5hdmlnYXRlKHNlYXJjaFN0cmluZyk7fSxfb25G b2N1czpmdW5jdGlvbigpe2lmKHRoaXMuX3NlYXJjaEZpZWxkLnZhbHVlPT09dGhp cy5kYXRhLmF0dHJzLmxhYmVsX2hpbnQpCnRoaXMuX3NlYXJjaEZpZWxkLnZhbHVl PSIiO30sX29uQmx1cjpmdW5jdGlvbigpe2lmKHRoaXMuX3NlYXJjaEZpZWxkLnZh bHVlPT09IiIpCnRoaXMuX3NlYXJjaEZpZWxkLnZhbHVlPXRoaXMuZGF0YS5hdHRy cy5sYWJlbF9oaW50O319OwpSaWdodE5vdy5XaWRnZXQuU2l0ZUZlZWRiYWNrMj1m dW5jdGlvbihkYXRhLGluc3RhbmNlSUQpCnt0aGlzLmRhdGE9ZGF0YTt0aGlzLmlu c3RhbmNlSUQ9aW5zdGFuY2VJRDt0aGlzLl9kaWFsb2c9bnVsbDt0aGlzLl9lcnJv ckRpc3BsYXk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJuXyIrdGhpcy5pbnN0 YW5jZUlEKyJfRXJyb3JNZXNzYWdlIik7dGhpcy5fZW1haWxGaWVsZD1kb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgicm5fIit0aGlzLmluc3RhbmNlSUQrIl9FbWFpbElu cHV0Iik7dGhpcy5fZmVlZGJhY2tGaWVsZD1kb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgicm5fIit0aGlzLmluc3RhbmNlSUQrIl9GZWVkYmFja1RleHRhcmVhIik7aWYo IXRoaXMuX2ZlZWRiYWNrRmllbGQpCntSaWdodE5vdy5VSS5EZXZlbG9wbWVudEhl YWRlci5hZGRKYXZhc2NyaXB0RXJyb3IoUmlnaHROb3cuVGV4dC5zcHJpbnRmKFJp Z2h0Tm93LkludGVyZmFjZS5nZXRNZXNzYWdlKCJTSVRFRkVFREJBQ0syX0RJQUxP R19NSVNTSU5HX1JFUURfTVNHIiksInJuXyIrdGhpcy5pbnN0YW5jZUlEKyJfRmVl ZGJhY2tUZXh0YXJlYSIpKTtyZXR1cm47fQpZQUhPTy51dGlsLkV2ZW50LmFkZExp c3RlbmVyKCJybl8iK3RoaXMuaW5zdGFuY2VJRCsiX0ZlZWRiYWNrTGluayIsImNs aWNrIix0aGlzLl9vbkdpdmVGZWVkYmFja0NsaWNrLG51bGwsdGhpcyk7UmlnaHRO b3cuRXZlbnQuc3Vic2NyaWJlKCJldnRfc2l0ZUZlZWRiYWNrU3VibWl0UmVzcG9u c2UiLHRoaXMuX29uUmVzcG9uc2VSZWNlaXZlZCx0aGlzKTt9O1JpZ2h0Tm93Lldp ZGdldC5TaXRlRmVlZGJhY2syLnByb3RvdHlwZT17X29uR2l2ZUZlZWRiYWNrQ2xp Y2s6ZnVuY3Rpb24oKQp7aWYodGhpcy5kYXRhLmF0dHJzLmZlZWRiYWNrX3BhZ2Vf dXJsKQp7d2luZG93Lm9wZW4oUmlnaHROb3cuVXJsLmFkZFBhcmFtZXRlcih0aGlz LmRhdGEuYXR0cnMuZmVlZGJhY2tfcGFnZV91cmwsInNlc3Npb24iLFJpZ2h0Tm93 LlVybC5nZXRTZXNzaW9uKCkpLCIiLCJyZXNpemFibGUsIHNjcm9sbGJhcnMsIHdp ZHRoPTYzMCwgaGVpZ2h0PTQwMCIpO30KZWxzZQp7dGhpcy5fc2hvd0RpYWxvZygp O319LF9zaG93RGlhbG9nOmZ1bmN0aW9uKCkKe2lmKCF0aGlzLl9kaWFsb2cpCnt2 YXIgYnV0dG9ucz1be3RleHQ6dGhpcy5kYXRhLmF0dHJzLmxhYmVsX3NlbmRfYnV0 dG9uLGhhbmRsZXI6e2ZuOnRoaXMuX29uU3VibWl0LHNjb3BlOnRoaXN9LGlzRGVm YXVsdDp0cnVlfSx7dGV4dDp0aGlzLmRhdGEuYXR0cnMubGFiZWxfY2FuY2VsX2J1 dHRvbixoYW5kbGVyOntmbjp0aGlzLl9vbkNhbmNlbCxzY29wZTp0aGlzfSxpc0Rl ZmF1bHQ6ZmFsc2V9XTt0aGlzLl9kaWFsb2c9UmlnaHROb3cuVUkuRGlhbG9nLmFj dGlvbkRpYWxvZyh0aGlzLmRhdGEuYXR0cnMubGFiZWxfZGlhbG9nX3RpdGxlLGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJybl8iK3RoaXMuaW5zdGFuY2VJRCsiX1Np dGVGZWVkYmFjazJGb3JtIikseyJidXR0b25zIjpidXR0b25zfSk7WUFIT08udXRp bC5Eb20uYWRkQ2xhc3ModGhpcy5fZGlhbG9nLmlkLCdybl9TaXRlRmVlZGJhY2sy RGlhbG9nJyk7fQppZih0aGlzLl9lcnJvckRpc3BsYXkpCnt0aGlzLl9lcnJvckRp c3BsYXkuaW5uZXJIVE1MPSIiO1lBSE9PLnV0aWwuRG9tLnJlbW92ZUNsYXNzKHRo aXMuX2Vycm9yRGlzcGxheSwncm5fTWVzc2FnZUJveCBybl9FcnJvck1lc3NhZ2Un KTt9CnRoaXMuX2RpYWxvZy5zaG93KCk7dmFyIGZvY3VzRWxlbWVudDtpZih0aGlz Ll9lbWFpbEZpZWxkJiZ0aGlzLl9lbWFpbEZpZWxkLnZhbHVlPT09JycpCmZvY3Vz RWxlbWVudD10aGlzLl9lbWFpbEZpZWxkO2Vsc2UKZm9jdXNFbGVtZW50PXRoaXMu X2ZlZWRiYWNrRmllbGQ7Zm9jdXNFbGVtZW50LmZvY3VzKCk7dGhpcy5fZGlhbG9n LmVuYWJsZUJ1dHRvbnMoKTt9LF9vblN1Ym1pdDpmdW5jdGlvbigpCnt0aGlzLl9k aWFsb2cuZGlzYWJsZUJ1dHRvbnMoKTtpZighdGhpcy5fdmFsaWRhdGVEaWFsb2dE YXRhKCkpCnt0aGlzLl9kaWFsb2cuZW5hYmxlQnV0dG9ucygpO3JldHVybjt9CnRo aXMuX3N1Ym1pdEZlZWRiYWNrKCk7fSxfb25DYW5jZWw6ZnVuY3Rpb24oKQp7dGhp cy5fZGlhbG9nLmRpc2FibGVCdXR0b25zKCk7dGhpcy5fY2xvc2VEaWFsb2codHJ1 ZSk7fSxfdmFsaWRhdGVEaWFsb2dEYXRhOmZ1bmN0aW9uKCkKe1lBSE9PLnV0aWwu RG9tLnJlbW92ZUNsYXNzKHRoaXMuX2Vycm9yRGlzcGxheSwncm5fTWVzc2FnZUJv eCBybl9FcnJvck1lc3NhZ2UnKTt0aGlzLl9lcnJvckRpc3BsYXkuaW5uZXJIVE1M PSIiO3ZhciByZXR1cm5WYWx1ZT10cnVlO2lmKHRoaXMuX2VtYWlsRmllbGQpCnt0 aGlzLl9lbWFpbEZpZWxkLnZhbHVlPVlBSE9PLmxhbmcudHJpbSh0aGlzLl9lbWFp bEZpZWxkLnZhbHVlKTtpZih0aGlzLl9lbWFpbEZpZWxkLnZhbHVlPT09IiIpCnt0 aGlzLl9hZGRFcnJvck1lc3NhZ2UoUmlnaHROb3cuVGV4dC5zcHJpbnRmKFJpZ2h0 Tm93LkludGVyZmFjZS5nZXRNZXNzYWdlKCJQQ1RfU19JU19SRVFVSVJFRF9NU0ci KSx0aGlzLmRhdGEuYXR0cnMubGFiZWxfZW1haWxfYWRkcmVzcyksdGhpcy5fZW1h aWxGaWVsZC5pZCk7cmV0dXJuVmFsdWU9ZmFsc2U7fQplbHNlIGlmKCFSaWdodE5v dy5UZXh0LmlzVmFsaWRFbWFpbEFkZHJlc3ModGhpcy5fZW1haWxGaWVsZC52YWx1 ZSkpCnt0aGlzLl9hZGRFcnJvck1lc3NhZ2UodGhpcy5kYXRhLmF0dHJzLmxhYmVs X2VtYWlsX2FkZHJlc3MrJyAnK1JpZ2h0Tm93LkludGVyZmFjZS5nZXRNZXNzYWdl KCJGSUVMRF9JU19OT1RfQV9WQUxJRF9FTUFJTF9BRERSRVNTX01TRyIpLHRoaXMu X2VtYWlsRmllbGQuaWQpO3JldHVyblZhbHVlPWZhbHNlO319CnRoaXMuX2ZlZWRi YWNrRmllbGQudmFsdWU9WUFIT08ubGFuZy50cmltKHRoaXMuX2ZlZWRiYWNrRmll bGQudmFsdWUpO2lmKHRoaXMuX2ZlZWRiYWNrRmllbGQudmFsdWU9PT0iIikKe3Ro aXMuX2FkZEVycm9yTWVzc2FnZShSaWdodE5vdy5UZXh0LnNwcmludGYoUmlnaHRO b3cuSW50ZXJmYWNlLmdldE1lc3NhZ2UoIlBDVF9TX0lTX1JFUVVJUkVEX01TRyIp LHRoaXMuZGF0YS5hdHRycy5sYWJlbF9jb21tZW50X2JveCksdGhpcy5fZmVlZGJh Y2tGaWVsZC5pZCk7cmV0dXJuVmFsdWU9ZmFsc2U7fQpyZXR1cm4gcmV0dXJuVmFs dWU7fSxfY2xvc2VEaWFsb2c6ZnVuY3Rpb24oY2FuY2VsbGVkKQp7aWYoIWNhbmNl bGxlZCkKe3RoaXMuX2ZlZWRiYWNrRmllbGQudmFsdWU9IiI7fQppZih0aGlzLl9l cnJvckRpc3BsYXkpCnt0aGlzLl9lcnJvckRpc3BsYXkuaW5uZXJIVE1MPSIiO1lB SE9PLnV0aWwuRG9tLnJlbW92ZUNsYXNzKHRoaXMuX2Vycm9yRGlzcGxheSwncm5f TWVzc2FnZUJveCBybl9FcnJvck1lc3NhZ2UnKTt9CmlmKHRoaXMuX2RpYWxvZykK dGhpcy5fZGlhbG9nLmhpZGUoKTt9LF9zdWJtaXRGZWVkYmFjazpmdW5jdGlvbigp Cnt2YXIgZXZlbnRPYmplY3Q9bmV3IFJpZ2h0Tm93LkV2ZW50LkV2ZW50T2JqZWN0 KCk7ZXZlbnRPYmplY3Qud19pZD10aGlzLmluc3RhbmNlSUQ7ZXZlbnRPYmplY3Qu ZGF0YT17ImFfaWQiOm51bGwsInJhdGUiOjAsIm1lc3NhZ2UiOnRoaXMuX2ZlZWRi YWNrRmllbGQudmFsdWV9O2lmKHRoaXMuZGF0YS5qcy5pc1Byb2ZpbGUpCmV2ZW50 T2JqZWN0LmRhdGEuZW1haWw9dGhpcy5kYXRhLmpzLmVtYWlsO2Vsc2UgaWYodGhp cy5fZW1haWxGaWVsZCkKZXZlbnRPYmplY3QuZGF0YS5lbWFpbD10aGlzLl9lbWFp bEZpZWxkLnZhbHVlO1JpZ2h0Tm93LkV2ZW50LmZpcmUoImV2dF9zaXRlRmVlZGJh Y2tSZXF1ZXN0IixldmVudE9iamVjdCk7cmV0dXJuIGZhbHNlO30sX29uUmVzcG9u c2VSZWNlaXZlZDpmdW5jdGlvbih0eXBlLGFyZykKe2lmKGFyZ1sxXVswXS53X2lk PT09dGhpcy5pbnN0YW5jZUlEKQp7aWYodHlwZW9mKGFyZ1swXSk9PT0ic3RyaW5n IikKe1JpZ2h0Tm93LlVJLkRpYWxvZy5tZXNzYWdlRGlhbG9nKGFyZ1swXSx7aWNv bjoiV0FSTiIsZXhpdENhbGxiYWNrOntmbjp0aGlzLl9lbmFibGVEaWFsb2csc2Nv cGU6dGhpc319KTt9CmVsc2UKe1JpZ2h0Tm93LlVJLkRpYWxvZy5tZXNzYWdlRGlh bG9nKHRoaXMuZGF0YS5hdHRycy5sYWJlbF9mZWVkYmFja19jb25maXJtYXRpb24s e2V4aXRDYWxsYmFjazp7Zm46dGhpcy5fY2xvc2VEaWFsb2csc2NvcGU6dGhpc319 KTt9fX0sX2FkZEVycm9yTWVzc2FnZTpmdW5jdGlvbihtZXNzYWdlLGZvY3VzRWxl bWVudCkKe2lmKHRoaXMuX2Vycm9yRGlzcGxheSkKe1lBSE9PLnV0aWwuRG9tLmFk ZENsYXNzKHRoaXMuX2Vycm9yRGlzcGxheSwncm5fTWVzc2FnZUJveCBybl9FcnJv ck1lc3NhZ2UnKTt2YXIgbmV3TWVzc2FnZT0nPGEgaHJlZj0iamF2YXNjcmlwdDp2 b2lkKDApOyIgb25jbGljaz0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCcnK2Zv Y3VzRWxlbWVudCsnXCcpLmZvY3VzKCk7IHJldHVybiBmYWxzZTsiPicrbWVzc2Fn ZSsnPC9hPic7dmFyIG9sZE1lc3NhZ2U9dGhpcy5fZXJyb3JEaXNwbGF5LmlubmVy SFRNTDtpZihvbGRNZXNzYWdlPT09IiIpCnt0aGlzLl9lcnJvckRpc3BsYXkuaW5u ZXJIVE1MPW5ld01lc3NhZ2U7fQplbHNlCnt0aGlzLl9lcnJvckRpc3BsYXkuaW5u ZXJIVE1MPW9sZE1lc3NhZ2UrJzxici8+JytuZXdNZXNzYWdlO30KdGhpcy5fZXJy b3JEaXNwbGF5LmZpcnN0Q2hpbGQuZm9jdXMoKTt9fX07 ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=detail1316468885.js Content-Type: application/x-javascript; charset=UTF-8; name=detail1316468885.js Content-Location: http://acer--uk.custhelp.com/euf/rightnow/optimized/pages/answers/detail1316468885.js Content-Transfer-Encoding: Base64 ClJpZ2h0Tm93LldpZGdldC5Tb2NpYWxCb29rbWFya0xpbms9ZnVuY3Rpb24oZGF0 YSxpbnN0YW5jZUlEKXt0aGlzLmRhdGE9ZGF0YTt0aGlzLmluc3RhbmNlSUQ9aW5z dGFuY2VJRDtZQUhPTy51dGlsLkV2ZW50LmFkZExpc3RlbmVyKCJybl8iK3RoaXMu aW5zdGFuY2VJRCsiX0xpbmsiLCJjbGljayIsdGhpcy5fb25DbGljayxudWxsLHRo aXMpO307UmlnaHROb3cuV2lkZ2V0LlNvY2lhbEJvb2ttYXJrTGluay5wcm90b3R5 cGU9e19vbkNsaWNrOmZ1bmN0aW9uKGV2ZW50KQp7WUFIT08udXRpbC5FdmVudC5z dG9wRXZlbnQoZXZlbnQpO2lmKCF0aGlzLl9wYW5lbCkKe3ZhciBwYW5lbE1hcmt1 cD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicm5fIit0aGlzLmluc3RhbmNlSUQr Il9QYW5lbCIpO1lBSE9PLnV0aWwuRG9tLnJlbW92ZUNsYXNzKHBhbmVsTWFya3Vw LCJybl9IaWRkZW4iKTt0aGlzLl9wYW5lbD1uZXcgWUFIT08ud2lkZ2V0LlBhbmVs KHBhbmVsTWFya3VwLHtjbG9zZTpmYWxzZSx2aXNpYmxlOmZhbHNlLGNvbnN0cmFp bnRvdmlld3BvcnQ6dHJ1ZX0pO3RoaXMuX3BhbmVsLnNldEhlYWRlcigiIik7dGhp cy5fcGFuZWwucmVuZGVyKCk7fQplbHNlIGlmKHRoaXMuX3BhbmVsJiZ0aGlzLl9w YW5lbC5jZmcuZ2V0UHJvcGVydHkoInZpc2libGUiKT09PXRydWUpCnt0aGlzLl9j bG9zZVBhbmVsKCk7cmV0dXJuIGZhbHNlO30KdGhpcy5fcGFuZWwuc2hvdygpO3Zh ciBwYW5lbE1hcmt1cD1wYW5lbE1hcmt1cHx8ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoInJuXyIrdGhpcy5pbnN0YW5jZUlEKyJfUGFuZWwiKSxsaW5rcz1ZQUhPTy51 dGlsLkRvbS5nZXRFbGVtZW50c0J5KGZ1bmN0aW9uKCl7cmV0dXJuIHRydWU7fSwi YSIscGFuZWxNYXJrdXApO2lmKGxpbmtzLmxlbmd0aCkKe2xpbmtzWzBdLmZvY3Vz KCk7WUFIT08udXRpbC5FdmVudC5hZGRMaXN0ZW5lcihsaW5rc1tsaW5rcy5sZW5n dGgtMV0sImtleWRvd24iLGZ1bmN0aW9uKGV2ZW50KXtpZihldmVudC5rZXlDb2Rl JiYhZXZlbnQuc2hpZnRLZXkmJmV2ZW50LmtleUNvZGU9PT1ZQUhPTy51dGlsLktl eUxpc3RlbmVyLktFWS5UQUIpCnt0aGlzLl9jbG9zZVBhbmVsKCk7aWYoWUFIT08u ZW52LnVhLmllJiZZQUhPTy5lbnYudWEuaWU8PTcpCmRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCJybl8iK3RoaXMuaW5zdGFuY2VJRCsiX0xpbmsiKS5mb2N1cygpO319 LG51bGwsdGhpcyk7fQp2YXIgcGFuZWxSZWdpb249WUFIT08udXRpbC5Eb20uZ2V0 UmVnaW9uKHBhbmVsTWFya3VwKTtZQUhPTy51dGlsLkV2ZW50LmFkZExpc3RlbmVy KGRvY3VtZW50LCJjbGljayIsZnVuY3Rpb24oZXZ0KQp7dmFyIGNvb3JkaW5hdGVz PVlBSE9PLnV0aWwuRXZlbnQuZ2V0WFkoZXZ0KTtpZihjb29yZGluYXRlc1swXT09 PTAmJmNvb3JkaW5hdGVzWzFdPT09MClyZXR1cm47Y29vcmRpbmF0ZXM9bmV3IFlB SE9PLnV0aWwuUG9pbnQoY29vcmRpbmF0ZXNbMF0sY29vcmRpbmF0ZXNbMV0pO2lm KHBhbmVsUmVnaW9uJiYhcGFuZWxSZWdpb24uY29udGFpbnMoY29vcmRpbmF0ZXMp KQp7dGhpcy5fY2xvc2VQYW5lbCgpO319LG51bGwsdGhpcyk7cmV0dXJuIGZhbHNl O30sX2Nsb3NlUGFuZWw6ZnVuY3Rpb24oKQp7WUFIT08udXRpbC5FdmVudC5wdXJn ZUVsZW1lbnQoZG9jdW1lbnQpO3RoaXMuX3BhbmVsLmhpZGUoKTt9fTsKUmlnaHRO b3cuV2lkZ2V0LkVtYWlsQW5zd2VyTGluaz1mdW5jdGlvbihkYXRhLGluc3RhbmNl SUQpCnt0aGlzLmRhdGE9ZGF0YTt0aGlzLmluc3RhbmNlSUQ9aW5zdGFuY2VJRDt0 aGlzLl9kaWFsb2dFbGVtZW50PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdybl8n K3RoaXMuaW5zdGFuY2VJRCsnX0VtYWlsQW5zd2VyTGlua0Zvcm0nKTt0aGlzLl9y ZWNpcGllbnRFbWFpbEVsZW1lbnQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJu XyIrdGhpcy5pbnN0YW5jZUlEKyJfSW5wdXRSZWNpcGllbnRFbWFpbCIpO3RoaXMu X3NlbmRlckVtYWlsRWxlbWVudD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicm5f Iit0aGlzLmluc3RhbmNlSUQrIl9JbnB1dFNlbmRlckVtYWlsIik7dGhpcy5fc2Vu ZGVyTmFtZUVsZW1lbnQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJuXyIrdGhp cy5pbnN0YW5jZUlEKyJfSW5wdXRTZW5kZXJOYW1lIik7dGhpcy5fZXJyb3JEaXNw bGF5PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJybl8iK3RoaXMuaW5zdGFuY2VJ RCsiX0Vycm9yTWVzc2FnZSIpO2lmKHRoaXMuX2RpYWxvZ0VsZW1lbnQpCntZQUhP Ty51dGlsLkV2ZW50LmFkZExpc3RlbmVyKCJybl8iK3RoaXMuaW5zdGFuY2VJRCsi X0xpbmsiLCJjbGljayIsdGhpcy5fb25FbWFpbExpbmtDbGljayxudWxsLHRoaXMp O30KUmlnaHROb3cuRXZlbnQuc3Vic2NyaWJlKCJldnRfZW1haWxMaW5rU3VibWl0 UmVzcG9uc2UiLHRoaXMuX29uUmVzcG9uc2VSZWNlaXZlZCx0aGlzKTt9O1JpZ2h0 Tm93LldpZGdldC5FbWFpbEFuc3dlckxpbmsucHJvdG90eXBlPXtfb25FbWFpbExp bmtDbGljazpmdW5jdGlvbih0eXBlLGFyZykKe2lmKCEodGhpcy5fZGlhbG9nKSkK e3ZhciBidXR0b25zPVt7dGV4dDp0aGlzLmRhdGEuYXR0cnMubGFiZWxfc2VuZF9i dXR0b24saGFuZGxlcjp7Zm46dGhpcy5fc3VibWl0Q2xpY2tlZCxzY29wZTp0aGlz fSxpc0RlZmF1bHQ6dHJ1ZX0se3RleHQ6dGhpcy5kYXRhLmF0dHJzLmxhYmVsX2Nh bmNlbF9idXR0b24saGFuZGxlcjp7Zm46dGhpcy5fY2xvc2VEaWFsb2csc2NvcGU6 dGhpc30saXNEZWZhdWx0OmZhbHNlfV07dGhpcy5fZGlhbG9nPVJpZ2h0Tm93LlVJ LkRpYWxvZy5hY3Rpb25EaWFsb2codGhpcy5kYXRhLmF0dHJzLmxhYmVsX2RpYWxv Z190aXRsZSx0aGlzLl9kaWFsb2dFbGVtZW50LHsiYnV0dG9ucyI6YnV0dG9ucywi d2lkdGgiOiczMDBweCd9KTtZQUhPTy51dGlsLkRvbS5yZW1vdmVDbGFzcyh0aGlz Ll9kaWFsb2dFbGVtZW50LCJybl9IaWRkZW4iKTtZQUhPTy51dGlsLkRvbS5hZGRD bGFzcyh0aGlzLl9kaWFsb2cuaWQsJ3JuX0VtYWlsTGlua0RpYWxvZycpO30KaWYo dGhpcy5fZXJyb3JEaXNwbGF5KQp7dGhpcy5fZXJyb3JEaXNwbGF5LmlubmVySFRN TD0iIjtZQUhPTy51dGlsLkRvbS5yZW1vdmVDbGFzcyh0aGlzLl9lcnJvckRpc3Bs YXksJ3JuX01lc3NhZ2VCb3ggcm5fRXJyb3JNZXNzYWdlJyk7fQp0aGlzLl9kaWFs b2cuc2hvdygpO2lmKHRoaXMuX3JlY2lwaWVudEVtYWlsRWxlbWVudCkKdGhpcy5f cmVjaXBpZW50RW1haWxFbGVtZW50LmZvY3VzKCk7dGhpcy5fZGlhbG9nLmVuYWJs ZUJ1dHRvbnMoKTt9LF9jbG9zZURpYWxvZzpmdW5jdGlvbih0eXBlLGFyZykKe2lm KHRoaXMuX2Vycm9yRGlzcGxheSkKe3RoaXMuX2Vycm9yRGlzcGxheS5pbm5lckhU TUw9IiI7WUFIT08udXRpbC5Eb20ucmVtb3ZlQ2xhc3ModGhpcy5fZXJyb3JEaXNw bGF5LCdybl9NZXNzYWdlQm94IHJuX0Vycm9yTWVzc2FnZScpO30KdGhpcy5fZGlh bG9nLmVuYWJsZVNlY29uZEJ1dHRvbigpO3RoaXMuX2RpYWxvZy5oaWRlKCk7fSxf c3VibWl0Q2xpY2tlZDpmdW5jdGlvbigpCnt0aGlzLl9kaWFsb2cuZGlzYWJsZUJ1 dHRvbnMoKTtpZih0aGlzLl92YWxpZGF0ZUZvcm1EYXRhKCkpCnt0aGlzLl9zdWJt aXRSZXF1ZXN0KCk7fQplbHNlCnt0aGlzLl9kaWFsb2cuZW5hYmxlQnV0dG9ucygp O319LF92YWxpZGF0ZUZvcm1EYXRhOmZ1bmN0aW9uKCkKe3ZhciByZXR1cm5WYWx1 ZT10cnVlO2lmKHRoaXMuX2Vycm9yRGlzcGxheSkKe3RoaXMuX2Vycm9yRGlzcGxh eS5pbm5lckhUTUw9IiI7WUFIT08udXRpbC5Eb20ucmVtb3ZlQ2xhc3ModGhpcy5f ZXJyb3JEaXNwbGF5LCdybl9NZXNzYWdlQm94IHJuX0Vycm9yTWVzc2FnZScpO30K aWYoIXRoaXMuX3ZhbGlkYXRlRW1haWxBZGRyZXNzKHRoaXMuX3JlY2lwaWVudEVt YWlsRWxlbWVudCx0aGlzLmRhdGEuYXR0cnMubGFiZWxfdG8pKQp7cmV0dXJuVmFs dWU9ZmFsc2U7fQppZih0aGlzLl9zZW5kZXJFbWFpbEVsZW1lbnQmJiF0aGlzLl92 YWxpZGF0ZUVtYWlsQWRkcmVzcyh0aGlzLl9zZW5kZXJFbWFpbEVsZW1lbnQsdGhp cy5kYXRhLmF0dHJzLmxhYmVsX3NlbmRlcl9lbWFpbCkpCntyZXR1cm5WYWx1ZT1m YWxzZTt9CmlmKHRoaXMuX3NlbmRlck5hbWVFbGVtZW50KQp7dGhpcy5fc2VuZGVy TmFtZUVsZW1lbnQudmFsdWU9WUFIT08ubGFuZy50cmltKHRoaXMuX3NlbmRlck5h bWVFbGVtZW50LnZhbHVlKTtpZih0aGlzLl9zZW5kZXJOYW1lRWxlbWVudC52YWx1 ZSE9PSIiKQp7aWYodGhpcy5fc2VuZGVyTmFtZUVsZW1lbnQudmFsdWUuaW5kZXhP ZigiPCIpPi0xfHx0aGlzLl9zZW5kZXJOYW1lRWxlbWVudC52YWx1ZS5pbmRleE9m KCI+Iik+LTEpCnt0aGlzLl9hZGRFcnJvck1lc3NhZ2UoUmlnaHROb3cuVGV4dC5z cHJpbnRmKFJpZ2h0Tm93LkludGVyZmFjZS5nZXRNZXNzYWdlKCJQQ1RfU19DT05U QUlOX1RIQU5fTVNHIiksdGhpcy5kYXRhLmF0dHJzLmxhYmVsX3NlbmRlcl9uYW1l KSx0aGlzLl9zZW5kZXJOYW1lRWxlbWVudC5pZCk7cmV0dXJuVmFsdWU9ZmFsc2U7 fQppZih0aGlzLl9zZW5kZXJOYW1lRWxlbWVudC52YWx1ZS5pbmRleE9mKCInIik+ LTF8fHRoaXMuX3NlbmRlck5hbWVFbGVtZW50LnZhbHVlLmluZGV4T2YoJyInKT4t MSkKe3RoaXMuX2FkZEVycm9yTWVzc2FnZShSaWdodE5vdy5UZXh0LnNwcmludGYo UmlnaHROb3cuSW50ZXJmYWNlLmdldE1lc3NhZ2UoIlBDVF9TX01VU1RfTk9UX0NP TlRBSU5fUVVPVEVTX01TRyIpLHRoaXMuZGF0YS5hdHRycy5sYWJlbF9zZW5kZXJf bmFtZSksdGhpcy5fc2VuZGVyTmFtZUVsZW1lbnQuaWQpO3JldHVyblZhbHVlPWZh bHNlO30KaWYodGhpcy5fc2VuZGVyTmFtZUVsZW1lbnQudmFsdWUuaW5kZXhPZigi JiIpPi0xKQp7dGhpcy5fYWRkRXJyb3JNZXNzYWdlKFJpZ2h0Tm93LlRleHQuc3By aW50ZihSaWdodE5vdy5JbnRlcmZhY2UuZ2V0TWVzc2FnZSgiUENUX1NfTVVTVF9O T1RfQ09OVEFJTl9NU0ciKSx0aGlzLmRhdGEuYXR0cnMubGFiZWxfc2VuZGVyX25h bWUpLHRoaXMuX3NlbmRlck5hbWVFbGVtZW50LmlkKTtyZXR1cm5WYWx1ZT1mYWxz ZTt9fQplbHNlCnt0aGlzLl9hZGRFcnJvck1lc3NhZ2UoUmlnaHROb3cuVGV4dC5z cHJpbnRmKFJpZ2h0Tm93LkludGVyZmFjZS5nZXRNZXNzYWdlKCJQQ1RfU19JU19S RVFVSVJFRF9NU0ciKSx0aGlzLmRhdGEuYXR0cnMubGFiZWxfc2VuZGVyX25hbWUp LHRoaXMuX3NlbmRlck5hbWVFbGVtZW50LmlkKTtyZXR1cm5WYWx1ZT1mYWxzZTt9 fQpyZXR1cm4gcmV0dXJuVmFsdWU7fSxfdmFsaWRhdGVFbWFpbEFkZHJlc3M6ZnVu Y3Rpb24oZW1haWxGaWVsZCxsYWJlbCkKe2lmKGVtYWlsRmllbGQpCntlbWFpbEZp ZWxkLnZhbHVlPVlBSE9PLmxhbmcudHJpbShlbWFpbEZpZWxkLnZhbHVlKTt2YXIg ZW1haWxGaWVsZFZhbHVlPWVtYWlsRmllbGQudmFsdWU7aWYoZW1haWxGaWVsZFZh bHVlPT09IiIpCnt0aGlzLl9hZGRFcnJvck1lc3NhZ2UoUmlnaHROb3cuVGV4dC5z cHJpbnRmKFJpZ2h0Tm93LkludGVyZmFjZS5nZXRNZXNzYWdlKCJQQ1RfU19JU19S RVFVSVJFRF9NU0ciKSxsYWJlbCksZW1haWxGaWVsZC5pZCk7cmV0dXJuIGZhbHNl O30KaWYoZW1haWxGaWVsZFZhbHVlLmluZGV4T2YoIjsiKT49MHx8ZW1haWxGaWVs ZFZhbHVlLmluZGV4T2YoIiwiKT49MHx8ZW1haWxGaWVsZFZhbHVlLmluZGV4T2Yo IiAiKT49MCkKe3RoaXMuX2FkZEVycm9yTWVzc2FnZShSaWdodE5vdy5JbnRlcmZh Y2UuZ2V0TWVzc2FnZSgiUExFQVNFX0VOVEVSX1NJTkdMRV9FTUFJTF9BRERSRVNT X01TRyIpLGVtYWlsRmllbGQuaWQpO3JldHVybiBmYWxzZTt9CmlmKCFSaWdodE5v dy5UZXh0LmlzVmFsaWRFbWFpbEFkZHJlc3MoZW1haWxGaWVsZFZhbHVlKSkKe3Ro aXMuX2FkZEVycm9yTWVzc2FnZShSaWdodE5vdy5UZXh0LnNwcmludGYoUmlnaHRO b3cuSW50ZXJmYWNlLmdldE1lc3NhZ2UoIlBDVF9TX0lTX0lOVkFMSURfTVNHIiks bGFiZWwpLGVtYWlsRmllbGQuaWQpO3JldHVybiBmYWxzZTt9CmlmKGVtYWlsRmll bGRWYWx1ZS5sZW5ndGg+ODApCnt0aGlzLl9hZGRFcnJvck1lc3NhZ2UoUmlnaHRO b3cuVGV4dC5zcHJpbnRmKFJpZ2h0Tm93LkludGVyZmFjZS5nZXRNZXNzYWdlKCJQ Q1RfU19JU19UT09fTE9OR19NU0ciKSxsYWJlbCksZW1haWxGaWVsZC5pZCk7cmV0 dXJuIGZhbHNlO30KcmV0dXJuIHRydWU7fQpyZXR1cm4gZmFsc2U7fSxfc3VibWl0 UmVxdWVzdDpmdW5jdGlvbigpCnt2YXIgZXZlbnRPYmplY3Q9bmV3IFJpZ2h0Tm93 LkV2ZW50LkV2ZW50T2JqZWN0KCk7ZXZlbnRPYmplY3Qud19pZD10aGlzLmluc3Rh bmNlSUQ7ZXZlbnRPYmplY3QuZGF0YT17ImVtYWlsQW5zd2VyVG9rZW4iOnRoaXMu ZGF0YS5qcy5lbWFpbEFuc3dlclRva2VuLCJ0byI6dGhpcy5fcmVjaXBpZW50RW1h aWxFbGVtZW50LnZhbHVlLCJhX2lkIjp0aGlzLmRhdGEuanMuYW5zd2VySUR9O2lm KHRoaXMuZGF0YS5qcy5pc1Byb2ZpbGUpCntldmVudE9iamVjdC5kYXRhLmZyb209 dGhpcy5kYXRhLmpzLnNlbmRlckVtYWlsO2V2ZW50T2JqZWN0LmRhdGEubmFtZT10 aGlzLmRhdGEuanMuc2VuZGVyTmFtZTt9CmVsc2UKe2lmKHRoaXMuX3NlbmRlckVt YWlsRWxlbWVudCkKe2V2ZW50T2JqZWN0LmRhdGEuZnJvbT10aGlzLl9zZW5kZXJF bWFpbEVsZW1lbnQudmFsdWU7fQppZih0aGlzLl9zZW5kZXJOYW1lRWxlbWVudCkK e2V2ZW50T2JqZWN0LmRhdGEubmFtZT10aGlzLl9zZW5kZXJOYW1lRWxlbWVudC52 YWx1ZTt9fQpSaWdodE5vdy5FdmVudC5maXJlKCJldnRfZW1haWxMaW5rUmVxdWVz dCIsZXZlbnRPYmplY3QpO3RoaXMuX2Nsb3NlRGlhbG9nKCk7fSxfb25SZXNwb25z ZVJlY2VpdmVkOmZ1bmN0aW9uKHR5cGUsYXJnKQp7aWYoYXJnWzFdWzBdLndfaWQh PT10aGlzLmluc3RhbmNlSUQpCntyZXR1cm4gZmFsc2U7fQp2YXIgbWVzc2FnZVN0 cmluZz0oYXJnWzBdJiZhcmdbMF0hPT10cnVlKT9hcmdbMF06dGhpcy5kYXRhLmF0 dHJzLmxhYmVsX2VtYWlsX3NlbnQ7UmlnaHROb3cuVUkuRGlhbG9nLm1lc3NhZ2VE aWFsb2cobWVzc2FnZVN0cmluZyk7cmV0dXJuIGZhbHNlO30sX2FkZEVycm9yTWVz c2FnZTpmdW5jdGlvbihtZXNzYWdlLGZvY3VzRWxlbWVudCl7aWYodGhpcy5fZXJy b3JEaXNwbGF5KXtZQUhPTy51dGlsLkRvbS5hZGRDbGFzcyh0aGlzLl9lcnJvckRp c3BsYXksJ3JuX01lc3NhZ2VCb3ggcm5fRXJyb3JNZXNzYWdlJyk7dmFyIG5ld01l c3NhZ2U9JzxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiIG9uY2xpY2s9ImRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKFwnJytmb2N1c0VsZW1lbnQrJ1wnKS5mb2N1 cygpOyByZXR1cm4gZmFsc2U7Ij4nK21lc3NhZ2UrJzwvYT4nO3ZhciBvbGRNZXNz YWdlPXRoaXMuX2Vycm9yRGlzcGxheS5pbm5lckhUTUw7aWYob2xkTWVzc2FnZT09 PSIiKQp0aGlzLl9lcnJvckRpc3BsYXkuaW5uZXJIVE1MPW5ld01lc3NhZ2U7ZWxz ZQp0aGlzLl9lcnJvckRpc3BsYXkuaW5uZXJIVE1MPW9sZE1lc3NhZ2UrJzxici8+ JytuZXdNZXNzYWdlO3RoaXMuX2Vycm9yRGlzcGxheS5maXJzdENoaWxkLmZvY3Vz KCk7fX19OwpSaWdodE5vdy5XaWRnZXQuQW5zd2VyTm90aWZpY2F0aW9uSWNvbjM9 ZnVuY3Rpb24oZGF0YSxpbnN0YW5jZUlEKQp7dGhpcy5kYXRhPWRhdGE7dGhpcy5p bnN0YW5jZUlEPWluc3RhbmNlSUQ7aWYodGhpcy5kYXRhLmpzLnB0YSkKcmV0dXJu IGZhbHNlO3RoaXMuX3N1Ym1pdHRpbmc9ZmFsc2U7aWYodGhpcy5kYXRhLmpzLmxv Z2dlZEluKQpZQUhPTy51dGlsLkV2ZW50LmFkZExpc3RlbmVyKCJybl8iK3RoaXMu aW5zdGFuY2VJRCsiX1RyaWdnZXIiLCJjbGljayIsdGhpcy5fb25UcmlnZ2VyQ2xp Y2ssbnVsbCx0aGlzKTtSaWdodE5vdy5FdmVudC5zdWJzY3JpYmUoImV2dF9hbnN3 ZXJOb3RpZmljYXRpb25SZXNwb25zZSIsdGhpcy5fb25Ob3RpZmljYXRpb25SZXNw b25zZSx0aGlzKTtpZih0aGlzLmRhdGEuanMuYXV0b09wZW49PTEpCnRoaXMuX29u VHJpZ2dlckNsaWNrKCk7fTtSaWdodE5vdy5XaWRnZXQuQW5zd2VyTm90aWZpY2F0 aW9uSWNvbjMucHJvdG90eXBlPXtfb25UcmlnZ2VyQ2xpY2s6ZnVuY3Rpb24odHlw ZSxhcmdzKQp7aWYoIXRoaXMuX3N1Ym1pdHRpbmcpCnt0aGlzLl9zdWJtaXR0aW5n PXRydWU7dGhpcy5fY3JlYXRlTm90aWZpY2F0aW9uKHRoaXMuZGF0YS5qcy5zdGF0 dXNOZXdOb3RpZmljYXRpb24pO30KcmV0dXJuIGZhbHNlO30sX2NyZWF0ZU5vdGlm aWNhdGlvbjpmdW5jdGlvbihzdGF0dXNDb2RlKQp7dmFyIGVvPW5ldyBSaWdodE5v dy5FdmVudC5FdmVudE9iamVjdCgpO2VvLndfaWQ9dGhpcy5pbnN0YW5jZUlEO2Vv LmRhdGEuYW5zd2VySUQ9dGhpcy5kYXRhLmpzLmFuc3dlcklEO2VvLmRhdGEuc3Rh dHVzPXN0YXR1c0NvZGU7UmlnaHROb3cuRXZlbnQuZmlyZSgiZXZ0X2Fuc3dlck5v dGlmaWNhdGlvblVwZGF0ZVJlcXVlc3QiLGVvKTt9LF9vbk5vdGlmaWNhdGlvblJl c3BvbnNlOmZ1bmN0aW9uKHR5cGUscmVzdWx0KQp7dmFyIHN0YXR1cz1yZXN1bHRb MF0uc3RhdHVzLHRpdGxlLGJvZHk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2 Iik7aWYoc3RhdHVzPDApCnt0aXRsZT1SaWdodE5vdy5JbnRlcmZhY2UuZ2V0TWVz c2FnZSgiTk9USUZZX1JFUVVFU1RfRkFJTEVEX0hERyIpO2JvZHkuaW5uZXJIVE1M PVJpZ2h0Tm93LkludGVyZmFjZS5nZXRNZXNzYWdlKCJOT1RJRllfU1VCTUlUX0ZB SUxFRF9NU0ciKTt9CmVsc2UKe3N3aXRjaChzdGF0dXMpCntjYXNlIHRoaXMuZGF0 YS5qcy5zdGF0dXNBbHJlYWR5UmVnaXN0ZXJlZDp0aGlzLl9jcmVhdGVOb3RpZmlj YXRpb24odGhpcy5kYXRhLmpzLnN0YXR1c0FscmVhZHlSZWdpc3RlcmVkKTtyZXR1 cm4gZmFsc2U7Y2FzZSB0aGlzLmRhdGEuanMuc3RhdHVzQ3JlYXRlU3VjY2VlZGVk OnRpdGxlPVJpZ2h0Tm93LkludGVyZmFjZS5nZXRNZXNzYWdlKCJOT1RJRllfUkVR VUVTVF9TVUNDRVNTX0hERyIpO2JvZHkuaW5uZXJIVE1MPVJpZ2h0Tm93LkludGVy ZmFjZS5nZXRNZXNzYWdlKCJOT1RJRllfU1VCTUlUX1NVQ0NFU1NfTVNHIik7YnJl YWs7Y2FzZSB0aGlzLmRhdGEuanMuc3RhdHVzUmVuZXdhbFN1Y2NlZGVkOnRpdGxl PVJpZ2h0Tm93LkludGVyZmFjZS5nZXRNZXNzYWdlKCJOT1RJRllfUkVRVUVTVF9S RU5FV0FMX0hERyIpO2JvZHkuaW5uZXJIVE1MPVJpZ2h0Tm93LkludGVyZmFjZS5n ZXRNZXNzYWdlKCJOT1RJRllfUkVORVdBTF9TVUNDRVNTX01TRyIpO2JyZWFrO2Nh c2UgdGhpcy5kYXRhLmpzLnN0YXR1c05vUmVuZXdhbDp0aXRsZT1SaWdodE5vdy5J bnRlcmZhY2UuZ2V0TWVzc2FnZSgiWU9VUl9BTlNXRVJfTk9USUZJQ0FUSU9OX0xC TCIpO2JvZHkuaW5uZXJIVE1MPVJpZ2h0Tm93LkludGVyZmFjZS5nZXRNZXNzYWdl KCJZT1VfQVJFX0FMUkVBRFlfTk9USUZJRURfQU5TV0VSX01TRyIpO2JyZWFrO30K Ym9keS5pbm5lckhUTUwrPSc8YnIvPjxici8+PGEgaHJlZj0iJyt0aGlzLmRhdGEu YXR0cnMubm90aWZpY2F0aW9uc191cmwrJyI+Jyt0aGlzLmRhdGEuYXR0cnMubGFi ZWxfbm90aWZpY2F0aW9uX2xpbmsrIjwvYT4iO30KdmFyIGNvbmZpcm1EaWFsb2c9 UmlnaHROb3cuVUkuRGlhbG9nLmFjdGlvbkRpYWxvZyh0aXRsZSxib2R5LHsid2lk dGgiOiczMDBweCcsImhpZGVPbkVudGVyS2V5UHJlc3MiOnRydWV9KTtjb25maXJt RGlhbG9nLnNob3coKTt0aGlzLl9zdWJtaXR0aW5nPWZhbHNlO3JldHVybiBmYWxz ZTt9fTsKUmlnaHROb3cuV2lkZ2V0LkFuc3dlckZlZWRiYWNrMj1mdW5jdGlvbihk YXRhLGluc3RhbmNlSUQpCnt0aGlzLmRhdGE9ZGF0YTt0aGlzLmluc3RhbmNlSUQ9 aW5zdGFuY2VJRDt0aGlzLl9yYXRlPTA7dGhpcy5fZW1haWxGaWVsZD1kb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgicm5fIit0aGlzLmluc3RhbmNlSUQrIl9FbWFpbElu cHV0Iik7dGhpcy5fZXJyb3JEaXNwbGF5PWRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCJybl8iK3RoaXMuaW5zdGFuY2VJRCsiX0Vycm9yTWVzc2FnZSIpO3RoaXMuX2Zl ZWRiYWNrRmllbGQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJuXyIrdGhpcy5p bnN0YW5jZUlEKyJfRmVlZGJhY2tUZXh0YXJlYSIpO2lmKCF0aGlzLl9mZWVkYmFj a0ZpZWxkKQp7UmlnaHROb3cuVUkuRGV2ZWxvcG1lbnRIZWFkZXIuYWRkSmF2YXNj cmlwdEVycm9yKFJpZ2h0Tm93LlRleHQuc3ByaW50ZihSaWdodE5vdy5JbnRlcmZh Y2UuZ2V0TWVzc2FnZSgiQU5TV0VSRkVFREJBQ0syX0RJQUxPR19NSVNTSU5HX1JF UURfTVNHIiksInJuXyIrdGhpcy5pbnN0YW5jZUlEKyJfRmVlZGJhY2tUZXh0YXJl YSIpKTtyZXR1cm47fQpSaWdodE5vdy5FdmVudC5zdWJzY3JpYmUoImV2dF9hbnN3 ZXJGZWVkYmFja1N1Ym1pdFJlc3BvbnNlIix0aGlzLl9vblJlc3BvbnNlUmVjZWl2 ZWQsdGhpcyk7aWYodGhpcy5kYXRhLmpzLmJ1dHRvblZpZXcpCnt2YXIgbm9CdXR0 b249ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJuXyIrdGhpcy5pbnN0YW5jZUlE KyJfUmF0aW5nTm9CdXR0b24iKSx5ZXNCdXR0b249ZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoInJuXyIrdGhpcy5pbnN0YW5jZUlEKyJfUmF0aW5nWWVzQnV0dG9uIik7 WUFIT08udXRpbC5FdmVudC5hZGRMaXN0ZW5lcihub0J1dHRvbiwiY2xpY2siLHRo aXMuX29uQ2xpY2ssMSx0aGlzKTtZQUhPTy51dGlsLkV2ZW50LmFkZExpc3RlbmVy KHllc0J1dHRvbiwiY2xpY2siLHRoaXMuX29uQ2xpY2ssMix0aGlzKTtZQUhPTy51 dGlsLkV2ZW50LmFkZExpc3RlbmVyKFtub0J1dHRvbix5ZXNCdXR0b25dLCJtb3Vz ZW92ZXIiLGZ1bmN0aW9uKCl7dGhpcy5fd2FzTW91c2U9dHJ1ZTt9LG51bGwsdGhp cyk7WUFIT08udXRpbC5FdmVudC5hZGRMaXN0ZW5lcihbbm9CdXR0b24seWVzQnV0 dG9uXSwibW91c2VvdXQiLGZ1bmN0aW9uKCl7dGhpcy5fd2FzTW91c2U9ZmFsc2U7 fSxudWxsLHRoaXMpO30KZWxzZQp7Zm9yKHZhciBpPTA7aTw9dGhpcy5kYXRhLmF0 dHJzLm9wdGlvbnNfY291bnQ7KytpKQp7WUFIT08udXRpbC5FdmVudC5hZGRMaXN0 ZW5lcigicm5fIit0aGlzLmluc3RhbmNlSUQrIl9SYXRpbmdDZWxsXyIraSwibW91 c2VvdmVyIix0aGlzLl9vbkNlbGxPdmVyLGksdGhpcyk7WUFIT08udXRpbC5FdmVu dC5hZGRMaXN0ZW5lcigicm5fIit0aGlzLmluc3RhbmNlSUQrIl9SYXRpbmdDZWxs XyIraSwiZm9jdXMiLHRoaXMuX29uQ2VsbE92ZXIsaSx0aGlzKTtZQUhPTy51dGls LkV2ZW50LmFkZExpc3RlbmVyKCJybl8iK3RoaXMuaW5zdGFuY2VJRCsiX1JhdGlu Z0NlbGxfIitpLCJtb3VzZW91dCIsdGhpcy5fb25DZWxsT3V0LGksdGhpcyk7WUFI T08udXRpbC5FdmVudC5hZGRMaXN0ZW5lcigicm5fIit0aGlzLmluc3RhbmNlSUQr Il9SYXRpbmdDZWxsXyIraSwiYmx1ciIsdGhpcy5fb25DZWxsT3V0LGksdGhpcyk7 WUFIT08udXRpbC5FdmVudC5hZGRMaXN0ZW5lcigicm5fIit0aGlzLmluc3RhbmNl SUQrIl9SYXRpbmdDZWxsXyIraSwiY2xpY2siLHRoaXMuX29uQ2xpY2ssaSx0aGlz KTt9fX07UmlnaHROb3cuV2lkZ2V0LkFuc3dlckZlZWRiYWNrMi5wcm90b3R5cGU9 e19vbkNsaWNrOmZ1bmN0aW9uKHR5cGUsYXJncykKe2lmKHRoaXMuZGF0YS5qcy5i dXR0b25WaWV3KQp7dmFyIHJhdGluZ0J1dHRvbnM9ZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoInJuXyIrdGhpcy5pbnN0YW5jZUlEKyJfUmF0aW5nQnV0dG9ucyIpO2lm KHJhdGluZ0J1dHRvbnMpCllBSE9PLnV0aWwuRXZlbnQucHVyZ2VFbGVtZW50KHJh dGluZ0J1dHRvbnMsdHJ1ZSk7fQplbHNlCnt0aGlzLl9vbkNlbGxPdmVyKDAsYXJn cyk7WUFIT08udXRpbC5FdmVudC5wcmV2ZW50RGVmYXVsdCh0eXBlKTt2YXIgcmF0 ZU1ldGVyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJybl8iK3RoaXMuaW5zdGFu Y2VJRCsiX1JhdGluZ01ldGVyIik7aWYocmF0ZU1ldGVyKQpZQUhPTy51dGlsLkV2 ZW50LnB1cmdlRWxlbWVudChyYXRlTWV0ZXIsdHJ1ZSk7Zm9yKHZhciBjZWxsLGk9 MDtpPD10aGlzLmRhdGEuYXR0cnMub3B0aW9uc19jb3VudDsrK2kpCntjZWxsPWRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJybl8iK3RoaXMuaW5zdGFuY2VJRCsiX1Jh dGluZ0NlbGxfIitpKTtpZihjZWxsKQp7Zm9yKHZhciBqPTA7ajxjZWxsLmNoaWxk cmVuLmxlbmd0aDtqKyspCntpZihjZWxsLmNoaWxkcmVuW2pdLnRhZ05hbWUudG9M b3dlckNhc2UoKT09PSJzcGFuIiYmWUFIT08udXRpbC5Eb20uaGFzQ2xhc3MoY2Vs bC5jaGlsZHJlbltqXSwicm5fU2NyZWVuUmVhZGVyT25seSIpKQpjZWxsLmNoaWxk cmVuWzBdLmlubmVySFRNTD1SaWdodE5vdy5UZXh0LnNwcmludGYoUmlnaHROb3cu SW50ZXJmYWNlLmdldE1lc3NhZ2UoIlBDVF9EX09GX1BDVF9EX1NFTEVDVEVEX0xC TCIpLGFyZ3MsdGhpcy5kYXRhLmF0dHJzLm9wdGlvbnNfY291bnQpO319fX0KdGhp cy5fcmF0ZT1hcmdzO3RoaXMuX3N1Ym1pdEFuc3dlclJhdGluZygpO2lmKHRoaXMu X3JhdGU8PXRoaXMuZGF0YS5hdHRycy5kaWFsb2dfdGhyZXNob2xkKQp7aWYodGhp cy5kYXRhLmF0dHJzLmZlZWRiYWNrX3BhZ2VfdXJsKQp7dmFyIHBhZ2VTdHJpbmc9 dGhpcy5kYXRhLmF0dHJzLmZlZWRiYWNrX3BhZ2VfdXJsO3BhZ2VTdHJpbmc9Umln aHROb3cuVXJsLmFkZFBhcmFtZXRlcihwYWdlU3RyaW5nLCJhX2lkIix0aGlzLmRh dGEuanMuYW5zd2VySUQpO3BhZ2VTdHJpbmc9UmlnaHROb3cuVXJsLmFkZFBhcmFt ZXRlcihwYWdlU3RyaW5nLCJzZXNzaW9uIixSaWdodE5vdy5VcmwuZ2V0U2Vzc2lv bigpKTt3aW5kb3cub3BlbihwYWdlU3RyaW5nLCcnLCJyZXNpemFibGUsIHNjcm9s bGJhcnMsIHdpZHRoPTYzMCwgaGVpZ2h0PTQwMCIpO30KZWxzZQp7dGhpcy5fc2hv d0RpYWxvZygpO319fSxfc2hvd0RpYWxvZzpmdW5jdGlvbigpCntpZighdGhpcy5f ZGlhbG9nKQp7dmFyIGJ1dHRvbnM9W3t0ZXh0OnRoaXMuZGF0YS5hdHRycy5sYWJl bF9zZW5kX2J1dHRvbixoYW5kbGVyOntmbjp0aGlzLl9vblN1Ym1pdCxzY29wZTp0 aGlzfSxpc0RlZmF1bHQ6dHJ1ZX0se3RleHQ6dGhpcy5kYXRhLmF0dHJzLmxhYmVs X2NhbmNlbF9idXR0b24saGFuZGxlcjp7Zm46dGhpcy5fb25DYW5jZWwsc2NvcGU6 dGhpc30saXNEZWZhdWx0OmZhbHNlfV0sZGlhbG9nRm9ybT1kb2N1bWVudC5nZXRF bGVtZW50QnlJZCgicm5fIit0aGlzLmluc3RhbmNlSUQrIl9BbnN3ZXJGZWVkYmFj azJGb3JtIik7dGhpcy5fZGlhbG9nPVJpZ2h0Tm93LlVJLkRpYWxvZy5hY3Rpb25E aWFsb2codGhpcy5kYXRhLmF0dHJzLmxhYmVsX2RpYWxvZ190aXRsZSxkaWFsb2dG b3JtLHsiYnV0dG9ucyI6YnV0dG9uc30pO1lBSE9PLnV0aWwuRG9tLnJlbW92ZUNs YXNzKGRpYWxvZ0Zvcm0sInJuX0hpZGRlbiIpO1lBSE9PLnV0aWwuRG9tLmFkZENs YXNzKHRoaXMuX2RpYWxvZy5pZCwncm5fQW5zd2VyRmVlZGJhY2syRGlhbG9nJyk7 fQppZih0aGlzLl9lcnJvckRpc3BsYXkpCnt0aGlzLl9lcnJvckRpc3BsYXkuaW5u ZXJIVE1MPSIiO1lBSE9PLnV0aWwuRG9tLnJlbW92ZUNsYXNzKHRoaXMuX2Vycm9y RGlzcGxheSwncm5fTWVzc2FnZUJveCBybl9FcnJvck1lc3NhZ2UnKTt9CnRoaXMu X2RpYWxvZy5zaG93KCk7dmFyIGZvY3VzRWxlbWVudDtpZih0aGlzLl9lbWFpbEZp ZWxkJiZ0aGlzLl9lbWFpbEZpZWxkLnZhbHVlPT09JycpCmZvY3VzRWxlbWVudD10 aGlzLl9lbWFpbEZpZWxkO2Vsc2UKZm9jdXNFbGVtZW50PXRoaXMuX2ZlZWRiYWNr RmllbGQ7Zm9jdXNFbGVtZW50LmZvY3VzKCk7dGhpcy5fZGlhbG9nLmVuYWJsZUJ1 dHRvbnMoKTt9LF9vblN1Ym1pdDpmdW5jdGlvbigpCnt0aGlzLl9kaWFsb2cuZGlz YWJsZUJ1dHRvbnMoKTtpZighdGhpcy5fdmFsaWRhdGVEaWFsb2dEYXRhKCkpCnt0 aGlzLl9kaWFsb2cuZW5hYmxlQnV0dG9ucygpO3JldHVybjt9CnRoaXMuX2luY2lk ZW50Q3JlYXRlRmxhZz10cnVlO3RoaXMuX3N1Ym1pdEZlZWRiYWNrKCk7fSxfb25D YW5jZWw6ZnVuY3Rpb24oKQp7dGhpcy5fZGlhbG9nLmRpc2FibGVCdXR0b25zKCk7 dGhpcy5fY2xvc2VEaWFsb2codHJ1ZSk7fSxfdmFsaWRhdGVEaWFsb2dEYXRhOmZ1 bmN0aW9uKCkKe1lBSE9PLnV0aWwuRG9tLnJlbW92ZUNsYXNzKHRoaXMuX2Vycm9y RGlzcGxheSwncm5fTWVzc2FnZUJveCBybl9FcnJvck1lc3NhZ2UnKTt0aGlzLl9l cnJvckRpc3BsYXkuaW5uZXJIVE1MPSIiO3ZhciByZXR1cm5WYWx1ZT10cnVlO3Jl dHVybiByZXR1cm5WYWx1ZTt9LF9jbG9zZURpYWxvZzpmdW5jdGlvbihjYW5jZWxs ZWQpCntpZighY2FuY2VsbGVkKQp7dGhpcy5fZmVlZGJhY2tGaWVsZC52YWx1ZT0i Ijt9CmlmKHRoaXMuX2Vycm9yRGlzcGxheSkKe3RoaXMuX2Vycm9yRGlzcGxheS5p bm5lckhUTUw9IiI7WUFIT08udXRpbC5Eb20ucmVtb3ZlQ2xhc3ModGhpcy5fZXJy b3JEaXNwbGF5LCdybl9NZXNzYWdlQm94IHJuX0Vycm9yTWVzc2FnZScpO30KaWYo dGhpcy5fZGlhbG9nKQp0aGlzLl9kaWFsb2cuaGlkZSgpO30sX3N1Ym1pdEZlZWRi YWNrOmZ1bmN0aW9uKCkKe3ZhciBldmVudE9iamVjdD1uZXcgUmlnaHROb3cuRXZl bnQuRXZlbnRPYmplY3QoKTtldmVudE9iamVjdC53X2lkPXRoaXMuaW5zdGFuY2VJ RDtldmVudE9iamVjdC5kYXRhPXsic3VtbWFyeSI6dGhpcy5kYXRhLmpzLnN1bW1h cnksImFfaWQiOnRoaXMuZGF0YS5qcy5hbnN3ZXJJRCwicmF0ZSI6dGhpcy5fcmF0 ZSwiZGlhbG9nX3RocmVzaG9sZCI6dGhpcy5kYXRhLmF0dHJzLmRpYWxvZ190aHJl c2hvbGQsIm9wdGlvbnNfY291bnQiOnRoaXMuZGF0YS5hdHRycy5vcHRpb25zX2Nv dW50LCJtZXNzYWdlIjp0aGlzLl9mZWVkYmFja0ZpZWxkLnZhbHVlfTtpZih0aGlz LmRhdGEuanMuaXNQcm9maWxlKQpldmVudE9iamVjdC5kYXRhLmVtYWlsPXRoaXMu ZGF0YS5qcy5lbWFpbDtlbHNlIGlmKHRoaXMuX2VtYWlsRmllbGQpCmV2ZW50T2Jq ZWN0LmRhdGEuZW1haWw9dGhpcy5fZW1haWxGaWVsZC52YWx1ZTtSaWdodE5vdy5F dmVudC5maXJlKCJldnRfYW5zd2VyRmVlZGJhY2tSZXF1ZXN0IixldmVudE9iamVj dCk7cmV0dXJuIGZhbHNlO30sX29uUmVzcG9uc2VSZWNlaXZlZDpmdW5jdGlvbih0 eXBlLGFyZykKe2lmKHRoaXMuX2luY2lkZW50Q3JlYXRlRmxhZyYmYXJnWzFdWzBd LndfaWQ9PT10aGlzLmluc3RhbmNlSUQpCnt0aGlzLl9pbmNpZGVudENyZWF0ZUZs YWc9ZmFsc2U7aWYodHlwZW9mKGFyZ1swXSk9PT0ic3RyaW5nIikKe1JpZ2h0Tm93 LlVJLkRpYWxvZy5tZXNzYWdlRGlhbG9nKGFyZ1swXSx7aWNvbjoiV0FSTiIsZXhp dENhbGxiYWNrOntmbjp0aGlzLl9lbmFibGVEaWFsb2csc2NvcGU6dGhpc319KTt9 CmVsc2UKe1JpZ2h0Tm93LlVJLkRpYWxvZy5tZXNzYWdlRGlhbG9nKFJpZ2h0Tm93 LkludGVyZmFjZS5nZXRNZXNzYWdlKCJUSEFOS1NfRk9SX1lPVVJfRkVFREJBQ0tf TVNHIikse2V4aXRDYWxsYmFjazp7Zm46dGhpcy5fY2xvc2VEaWFsb2csc2NvcGU6 dGhpc319KTt9fQplbHNlCnt0aGlzLl9jbG9zZURpYWxvZygpO319LF9zdWJtaXRB bnN3ZXJSYXRpbmc6ZnVuY3Rpb24oKQp7dmFyIGV2ZW50T2JqZWN0PW5ldyBSaWdo dE5vdy5FdmVudC5FdmVudE9iamVjdCgpO2V2ZW50T2JqZWN0LndfaWQ9dGhpcy5p bnN0YW5jZUlEO2V2ZW50T2JqZWN0LmRhdGE9eyJhX2lkIjp0aGlzLmRhdGEuanMu YW5zd2VySUQsInJhdGUiOnRoaXMuX3JhdGUsIm9wdGlvbnNfY291bnQiOnRoaXMu ZGF0YS5hdHRycy5vcHRpb25zX2NvdW50LCJkaWFsb2dfdGhyZXNob2xkIjp0aGlz LmRhdGEuYXR0cnMuZGlhbG9nX3RocmVzaG9sZH07UmlnaHROb3cuRXZlbnQuZmly ZSgiZXZ0X2Fuc3dlclJhdGluZ1JlcXVlc3QiLGV2ZW50T2JqZWN0KTt2YXIgdGhh bmtzTGFiZWw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJuXyIrdGhpcy5pbnN0 YW5jZUlEKyJfVGhhbmtzTGFiZWwiKTtpZih0aGFua3NMYWJlbCkKe2lmKHRoaXMu X3dhc01vdXNlKQp7dGhhbmtzTGFiZWwuaW5uZXJIVE1MPXRoaXMuZGF0YS5hdHRy cy5sYWJlbF9mZWVkYmFja19zdWJtaXQ7fQplbHNlIGlmKHRoaXMuX3JhdGU+dGhp cy5kYXRhLmF0dHJzLmRpYWxvZ190aHJlc2hvbGQpCntSaWdodE5vdy5VSS5EaWFs b2cubWVzc2FnZURpYWxvZyh0aGlzLmRhdGEuYXR0cnMubGFiZWxfZmVlZGJhY2tf c3VibWl0KTt9fX0sX2FkZEVycm9yTWVzc2FnZTpmdW5jdGlvbihtZXNzYWdlLGZv Y3VzRWxlbWVudCkKe2lmKHRoaXMuX2Vycm9yRGlzcGxheSkKe1lBSE9PLnV0aWwu RG9tLmFkZENsYXNzKHRoaXMuX2Vycm9yRGlzcGxheSwncm5fTWVzc2FnZUJveCBy bl9FcnJvck1lc3NhZ2UnKTt2YXIgbmV3TWVzc2FnZT0nPGEgaHJlZj0iamF2YXNj cmlwdDp2b2lkKG51bGwpIiBvbmNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZChcJycrZm9jdXNFbGVtZW50KydcJykuZm9jdXMoKTsgcmV0dXJuIGZhbHNlOyI+ JyttZXNzYWdlKyc8L2E+Jzt2YXIgb2xkTWVzc2FnZT10aGlzLl9lcnJvckRpc3Bs YXkuaW5uZXJIVE1MO2lmKG9sZE1lc3NhZ2U9PT0iIikKe3RoaXMuX2Vycm9yRGlz cGxheS5pbm5lckhUTUw9bmV3TWVzc2FnZTt9CmVsc2UKe3RoaXMuX2Vycm9yRGlz cGxheS5pbm5lckhUTUw9b2xkTWVzc2FnZSsnPGJyLz4nK25ld01lc3NhZ2U7fQp0 aGlzLl9lcnJvckRpc3BsYXkuZmlyc3RDaGlsZC5mb2N1cygpO319LF9vbkNlbGxP dmVyOmZ1bmN0aW9uKHR5cGUsY2hvc2VuUmF0aW5nKQp7aWYodHlwZS50eXBlPT09 Im1vdXNlb3ZlciIpCnRoaXMuX3dhc01vdXNlPXRydWU7dGhpcy5fdXBkYXRlQ2Vs bENsYXNzKDEsY2hvc2VuUmF0aW5nKzEsInJuX1JhdGluZ0NlbGxPdmVyIiwiYWRk Iik7dGhpcy5fdXBkYXRlQ2VsbENsYXNzKGNob3NlblJhdGluZysxLHRoaXMuZGF0 YS5hdHRycy5vcHRpb25zX2NvdW50KzEsInJuX1JhdGluZ0NlbGxPdmVyIiwicmVt b3ZlIik7fSxfdXBkYXRlQ2VsbENsYXNzOmZ1bmN0aW9uKG1pbkJvdW5kLG1heEJv dW5kLGNzc0NsYXNzLHJlbW92ZU9yQWRkQ2xhc3MpCnt2YXIgY3NzRnVuYz0ocmVt b3ZlT3JBZGRDbGFzcz09PSJhZGQiKT9ZQUhPTy51dGlsLkRvbS5hZGRDbGFzczpZ QUhPTy51dGlsLkRvbS5yZW1vdmVDbGFzcztmb3IodmFyIGk9bWluQm91bmQ7aTxt YXhCb3VuZDtpKyspCmNzc0Z1bmMoInJuXyIrdGhpcy5pbnN0YW5jZUlEKyJfUmF0 aW5nQ2VsbF8iK2ksY3NzQ2xhc3MpO30sX29uQ2VsbE91dDpmdW5jdGlvbih0eXBl LGFyZ3MpCntpZih0eXBlLnR5cGU9PT0ibW91c2VvdXQiKQp0aGlzLl93YXNNb3Vz ZT1mYWxzZTt0aGlzLl91cGRhdGVDZWxsQ2xhc3MoMSx0aGlzLmRhdGEuYXR0cnMu b3B0aW9uc19jb3VudCsxLCJybl9SYXRpbmdDZWxsT3ZlciIsInJlbW92ZSIpO319 Ow== ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=combined.js Content-Type: application/x-javascript; charset=UTF-8; name=combined.js Content-Location: http://acer--uk.custhelp.com/euf/rightnow/js/10.2.0.1.6.140/deprecated/combined.js Content-Transfer-Encoding: Base64 LyoKQ29weXJpZ2h0IChjKSAyMDA5LCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJl c2VydmVkLgpDb2RlIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0QgTGljZW5zZToKaHR0 cDovL2RldmVsb3Blci55YWhvby5uZXQveXVpL2xpY2Vuc2UudHh0CnZlcnNpb246 IDIuNy4wCiovCihmdW5jdGlvbigpe3ZhciBHPVlBSE9PLnV0aWwuRG9tLE09WUFI T08udXRpbC5FdmVudCxJPVlBSE9PLmxhbmcsTD1ZQUhPTy5lbnYudWEsQj1ZQUhP Ty53aWRnZXQuT3ZlcmxheSxKPVlBSE9PLndpZGdldC5NZW51LEQ9e30sSz1udWxs LEU9bnVsbCxDPW51bGw7ZnVuY3Rpb24gRihPLE4sUixQKXt2YXIgUyxRO2lmKEku aXNTdHJpbmcoTykmJkkuaXNTdHJpbmcoTikpe2lmKEwuaWUpe1E9JzxpbnB1dCB0 eXBlPSInK08rJyIgbmFtZT0iJytOKyciJztpZihQKXtRKz0iIGNoZWNrZWQiO31R Kz0iPiI7Uz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFEpO31lbHNle1M9ZG9jdW1l bnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtTLm5hbWU9TjtTLnR5cGU9TztpZihQ KXtTLmNoZWNrZWQ9dHJ1ZTt9fVMudmFsdWU9Ujt9cmV0dXJuIFM7fWZ1bmN0aW9u IEgoTyxVKXt2YXIgTj1PLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCksUz10aGlzLFQs UCxRO2Z1bmN0aW9uIFYoVyl7aWYoIShXIGluIFUpKXtUPU8uZ2V0QXR0cmlidXRl Tm9kZShXKTtpZihUJiYoInZhbHVlIiBpbiBUKSl7VVtXXT1ULnZhbHVlO319fWZ1 bmN0aW9uIFIoKXtWKCJ0eXBlIik7aWYoVS50eXBlPT0iYnV0dG9uIil7VS50eXBl PSJwdXNoIjt9aWYoISgiZGlzYWJsZWQiIGluIFUpKXtVLmRpc2FibGVkPU8uZGlz YWJsZWQ7fVYoIm5hbWUiKTtWKCJ2YWx1ZSIpO1YoInRpdGxlIik7fXN3aXRjaChO KXtjYXNlIkEiOlUudHlwZT0ibGluayI7VigiaHJlZiIpO1YoInRhcmdldCIpO2Jy ZWFrO2Nhc2UiSU5QVVQiOlIoKTtpZighKCJjaGVja2VkIiBpbiBVKSl7VS5jaGVj a2VkPU8uY2hlY2tlZDt9YnJlYWs7Y2FzZSJCVVRUT04iOlIoKTtQPU8ucGFyZW50 Tm9kZS5wYXJlbnROb2RlO2lmKEcuaGFzQ2xhc3MoUCx0aGlzLkNTU19DTEFTU19O QU1FKyItY2hlY2tlZCIpKXtVLmNoZWNrZWQ9dHJ1ZTt9aWYoRy5oYXNDbGFzcyhQ LHRoaXMuQ1NTX0NMQVNTX05BTUUrIi1kaXNhYmxlZCIpKXtVLmRpc2FibGVkPXRy dWU7fU8ucmVtb3ZlQXR0cmlidXRlKCJ2YWx1ZSIpO08uc2V0QXR0cmlidXRlKCJ0 eXBlIiwiYnV0dG9uIik7YnJlYWs7fU8ucmVtb3ZlQXR0cmlidXRlKCJpZCIpO08u cmVtb3ZlQXR0cmlidXRlKCJuYW1lIik7aWYoISgidGFiaW5kZXgiIGluIFUpKXtV LnRhYmluZGV4PU8udGFiSW5kZXg7fWlmKCEoImxhYmVsIiBpbiBVKSl7UT1OPT0i SU5QVVQiP08udmFsdWU6Ty5pbm5lckhUTUw7aWYoUSYmUS5sZW5ndGg+MCl7VS5s YWJlbD1RO319fWZ1bmN0aW9uIEEoUCl7dmFyIE89UC5hdHRyaWJ1dGVzLE49Ty5z cmNlbGVtZW50LFI9Ti5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpLFE9dGhpcztpZihS PT10aGlzLk5PREVfTkFNRSl7UC5lbGVtZW50PU47UC5pZD1OLmlkO0cuZ2V0RWxl bWVudHNCeShmdW5jdGlvbihTKXtzd2l0Y2goUy5ub2RlTmFtZS50b1VwcGVyQ2Fz ZSgpKXtjYXNlIkJVVFRPTiI6Y2FzZSJBIjpjYXNlIklOUFVUIjpILmNhbGwoUSxT LE8pO2JyZWFrO319LCIqIixOKTt9ZWxzZXtzd2l0Y2goUil7Y2FzZSJCVVRUT04i OmNhc2UiQSI6Y2FzZSJJTlBVVCI6SC5jYWxsKHRoaXMsTixPKTticmVhazt9fX1Z QUhPTy53aWRnZXQuQnV0dG9uPWZ1bmN0aW9uKFIsTyl7aWYoIUImJllBSE9PLndp ZGdldC5PdmVybGF5KXtCPVlBSE9PLndpZGdldC5PdmVybGF5O31pZighSiYmWUFI T08ud2lkZ2V0Lk1lbnUpe0o9WUFIT08ud2lkZ2V0Lk1lbnU7fXZhciBRPVlBSE9P LndpZGdldC5CdXR0b24uc3VwZXJjbGFzcy5jb25zdHJ1Y3RvcixQLE47aWYoYXJn dW1lbnRzLmxlbmd0aD09MSYmIUkuaXNTdHJpbmcoUikmJiFSLm5vZGVOYW1lKXtp ZighUi5pZCl7Ui5pZD1HLmdlbmVyYXRlSWQoKTt9US5jYWxsKHRoaXMsKHRoaXMu Y3JlYXRlQnV0dG9uRWxlbWVudChSLnR5cGUpKSxSKTt9ZWxzZXtQPXtlbGVtZW50 Om51bGwsYXR0cmlidXRlczooT3x8e30pfTtpZihJLmlzU3RyaW5nKFIpKXtOPUcu Z2V0KFIpO2lmKE4pe2lmKCFQLmF0dHJpYnV0ZXMuaWQpe1AuYXR0cmlidXRlcy5p ZD1SO31QLmF0dHJpYnV0ZXMuc3JjZWxlbWVudD1OO0EuY2FsbCh0aGlzLFApO2lm KCFQLmVsZW1lbnQpe1AuZWxlbWVudD10aGlzLmNyZWF0ZUJ1dHRvbkVsZW1lbnQo UC5hdHRyaWJ1dGVzLnR5cGUpO31RLmNhbGwodGhpcyxQLmVsZW1lbnQsUC5hdHRy aWJ1dGVzKTt9fWVsc2V7aWYoUi5ub2RlTmFtZSl7aWYoIVAuYXR0cmlidXRlcy5p ZCl7aWYoUi5pZCl7UC5hdHRyaWJ1dGVzLmlkPVIuaWQ7fWVsc2V7UC5hdHRyaWJ1 dGVzLmlkPUcuZ2VuZXJhdGVJZCgpO319UC5hdHRyaWJ1dGVzLnNyY2VsZW1lbnQ9 UjtBLmNhbGwodGhpcyxQKTtpZighUC5lbGVtZW50KXtQLmVsZW1lbnQ9dGhpcy5j cmVhdGVCdXR0b25FbGVtZW50KFAuYXR0cmlidXRlcy50eXBlKTt9US5jYWxsKHRo aXMsUC5lbGVtZW50LFAuYXR0cmlidXRlcyk7fX19fTtZQUhPTy5leHRlbmQoWUFI T08ud2lkZ2V0LkJ1dHRvbixZQUhPTy51dGlsLkVsZW1lbnQse19idXR0b246bnVs bCxfbWVudTpudWxsLF9oaWRkZW5GaWVsZHM6bnVsbCxfb25jbGlja0F0dHJpYnV0 ZVZhbHVlOm51bGwsX2FjdGl2YXRpb25LZXlQcmVzc2VkOmZhbHNlLF9hY3RpdmF0 aW9uQnV0dG9uUHJlc3NlZDpmYWxzZSxfaGFzS2V5RXZlbnRIYW5kbGVyczpmYWxz ZSxfaGFzTW91c2VFdmVudEhhbmRsZXJzOmZhbHNlLF9uT3B0aW9uUmVnaW9uWDow LE5PREVfTkFNRToiU1BBTiIsQ0hFQ0tfQUNUSVZBVElPTl9LRVlTOlszMl0sQUNU SVZBVElPTl9LRVlTOlsxMywzMl0sT1BUSU9OX0FSRUFfV0lEVEg6MjAsQ1NTX0NM QVNTX05BTUU6Inl1aS1idXR0b24iLFJBRElPX0RFRkFVTFRfVElUTEU6IlVuY2hl Y2tlZC4gIENsaWNrIHRvIGNoZWNrLiIsUkFESU9fQ0hFQ0tFRF9USVRMRToiQ2hl Y2tlZC4gIENsaWNrIGFub3RoZXIgYnV0dG9uIHRvIHVuY2hlY2siLENIRUNLQk9Y X0RFRkFVTFRfVElUTEU6IlVuY2hlY2tlZC4gIENsaWNrIHRvIGNoZWNrLiIsQ0hF Q0tCT1hfQ0hFQ0tFRF9USVRMRToiQ2hlY2tlZC4gIENsaWNrIHRvIHVuY2hlY2su IixNRU5VQlVUVE9OX0RFRkFVTFRfVElUTEU6Ik1lbnUgY29sbGFwc2VkLiAgQ2xp Y2sgdG8gZXhwYW5kLiIsTUVOVUJVVFRPTl9NRU5VX1ZJU0lCTEVfVElUTEU6Ik1l bnUgZXhwYW5kZWQuICBDbGljayBvciBwcmVzcyBFc2MgdG8gY29sbGFwc2UuIixT UExJVEJVVFRPTl9ERUZBVUxUX1RJVExFOigiTWVudSBjb2xsYXBzZWQuICBDbGlj ayBpbnNpZGUgb3B0aW9uICIrInJlZ2lvbiBvciBwcmVzcyBkb3duIGFycm93IGtl eSB0byBzaG93IHRoZSBtZW51LiIpLFNQTElUQlVUVE9OX09QVElPTl9WSVNJQkxF X1RJVExFOiJNZW51IGV4cGFuZGVkLiAgUHJlc3MgRXNjIHRvIGhpZGUgdGhlIG1l bnUuIixTVUJNSVRfVElUTEU6IkNsaWNrIHRvIHN1Ym1pdCBmb3JtLiIsX3NldFR5 cGU6ZnVuY3Rpb24oTil7aWYoTj09InNwbGl0Iil7dGhpcy5vbigib3B0aW9uIix0 aGlzLl9vbk9wdGlvbik7fX0sX3NldExhYmVsOmZ1bmN0aW9uKE8pe3RoaXMuX2J1 dHRvbi5pbm5lckhUTUw9Tzt2YXIgUCxOPUwuZ2Vja287aWYoTiYmTjwxLjkmJkcu aW5Eb2N1bWVudCh0aGlzLmdldCgiZWxlbWVudCIpKSl7UD10aGlzLkNTU19DTEFT U19OQU1FO3RoaXMucmVtb3ZlQ2xhc3MoUCk7SS5sYXRlcigwLHRoaXMsdGhpcy5h ZGRDbGFzcyxQKTt9fSxfc2V0VGFiSW5kZXg6ZnVuY3Rpb24oTil7dGhpcy5fYnV0 dG9uLnRhYkluZGV4PU47fSxfc2V0VGl0bGU6ZnVuY3Rpb24oTyl7dmFyIE49Tztp Zih0aGlzLmdldCgidHlwZSIpIT0ibGluayIpe2lmKCFOKXtzd2l0Y2godGhpcy5n ZXQoInR5cGUiKSl7Y2FzZSJyYWRpbyI6Tj10aGlzLlJBRElPX0RFRkFVTFRfVElU TEU7YnJlYWs7Y2FzZSJjaGVja2JveCI6Tj10aGlzLkNIRUNLQk9YX0RFRkFVTFRf VElUTEU7YnJlYWs7Y2FzZSJtZW51IjpOPXRoaXMuTUVOVUJVVFRPTl9ERUZBVUxU X1RJVExFO2JyZWFrO2Nhc2Uic3BsaXQiOk49dGhpcy5TUExJVEJVVFRPTl9ERUZB VUxUX1RJVExFO2JyZWFrO2Nhc2Uic3VibWl0IjpOPXRoaXMuU1VCTUlUX1RJVExF O2JyZWFrO319dGhpcy5fYnV0dG9uLnRpdGxlPU47fX0sX3NldERpc2FibGVkOmZ1 bmN0aW9uKE4pe2lmKHRoaXMuZ2V0KCJ0eXBlIikhPSJsaW5rIil7aWYoTil7aWYo dGhpcy5fbWVudSl7dGhpcy5fbWVudS5oaWRlKCk7fWlmKHRoaXMuaGFzRm9jdXMo KSl7dGhpcy5ibHVyKCk7fXRoaXMuX2J1dHRvbi5zZXRBdHRyaWJ1dGUoImRpc2Fi bGVkIiwiZGlzYWJsZWQiKTt0aGlzLmFkZFN0YXRlQ1NTQ2xhc3NlcygiZGlzYWJs ZWQiKTt0aGlzLnJlbW92ZVN0YXRlQ1NTQ2xhc3NlcygiaG92ZXIiKTt0aGlzLnJl bW92ZVN0YXRlQ1NTQ2xhc3NlcygiYWN0aXZlIik7dGhpcy5yZW1vdmVTdGF0ZUNT U0NsYXNzZXMoImZvY3VzIik7fWVsc2V7dGhpcy5fYnV0dG9uLnJlbW92ZUF0dHJp YnV0ZSgiZGlzYWJsZWQiKTt0aGlzLnJlbW92ZVN0YXRlQ1NTQ2xhc3NlcygiZGlz YWJsZWQiKTt9fX0sX3NldEhyZWY6ZnVuY3Rpb24oTil7aWYodGhpcy5nZXQoInR5 cGUiKT09ImxpbmsiKXt0aGlzLl9idXR0b24uaHJlZj1OO319LF9zZXRUYXJnZXQ6 ZnVuY3Rpb24oTil7aWYodGhpcy5nZXQoInR5cGUiKT09ImxpbmsiKXt0aGlzLl9i dXR0b24uc2V0QXR0cmlidXRlKCJ0YXJnZXQiLE4pO319LF9zZXRDaGVja2VkOmZ1 bmN0aW9uKE8pe3ZhciBQPXRoaXMuZ2V0KCJ0eXBlIiksTjtpZihQPT0iY2hlY2ti b3gifHxQPT0icmFkaW8iKXtpZihPKXt0aGlzLmFkZFN0YXRlQ1NTQ2xhc3Nlcygi Y2hlY2tlZCIpO049KFA9PSJyYWRpbyIpP3RoaXMuUkFESU9fQ0hFQ0tFRF9USVRM RTp0aGlzLkNIRUNLQk9YX0NIRUNLRURfVElUTEU7fWVsc2V7dGhpcy5yZW1vdmVT dGF0ZUNTU0NsYXNzZXMoImNoZWNrZWQiKTtOPShQPT0icmFkaW8iKT90aGlzLlJB RElPX0RFRkFVTFRfVElUTEU6dGhpcy5DSEVDS0JPWF9ERUZBVUxUX1RJVExFO31p ZighdGhpcy5faGFzRGVmYXVsdFRpdGxlKXt0aGlzLnNldCgidGl0bGUiLE4pO319 fSxfc2V0TWVudTpmdW5jdGlvbihVKXt2YXIgUD10aGlzLmdldCgibGF6eWxvYWRt ZW51IiksUj10aGlzLmdldCgiZWxlbWVudCIpLE4sVz1mYWxzZSxYLE8sUTtmdW5j dGlvbiBWKCl7WC5yZW5kZXIoUi5wYXJlbnROb2RlKTt0aGlzLnJlbW92ZUxpc3Rl bmVyKCJhcHBlbmRUbyIsVik7fWZ1bmN0aW9uIFQoKXtYLmNmZy5xdWV1ZVByb3Bl cnR5KCJjb250YWluZXIiLFIucGFyZW50Tm9kZSk7dGhpcy5yZW1vdmVMaXN0ZW5l cigiYXBwZW5kVG8iLFQpO31mdW5jdGlvbiBTKCl7dmFyIFk7aWYoWCl7Ry5hZGRD bGFzcyhYLmVsZW1lbnQsdGhpcy5nZXQoIm1lbnVjbGFzc25hbWUiKSk7Ry5hZGRD bGFzcyhYLmVsZW1lbnQsInl1aS0iK3RoaXMuZ2V0KCJ0eXBlIikrIi1idXR0b24t bWVudSIpO1guc2hvd0V2ZW50LnN1YnNjcmliZSh0aGlzLl9vbk1lbnVTaG93LG51 bGwsdGhpcyk7WC5oaWRlRXZlbnQuc3Vic2NyaWJlKHRoaXMuX29uTWVudUhpZGUs bnVsbCx0aGlzKTtYLnJlbmRlckV2ZW50LnN1YnNjcmliZSh0aGlzLl9vbk1lbnVS ZW5kZXIsbnVsbCx0aGlzKTtpZihKJiZYIGluc3RhbmNlb2YgSil7aWYoUCl7WT10 aGlzLmdldCgiY29udGFpbmVyIik7aWYoWSl7WC5jZmcucXVldWVQcm9wZXJ0eSgi Y29udGFpbmVyIixZKTt9ZWxzZXt0aGlzLm9uKCJhcHBlbmRUbyIsVCk7fX1YLmNm Zy5xdWV1ZVByb3BlcnR5KCJjbGlja3RvaGlkZSIsZmFsc2UpO1gua2V5RG93bkV2 ZW50LnN1YnNjcmliZSh0aGlzLl9vbk1lbnVLZXlEb3duLHRoaXMsdHJ1ZSk7WC5z dWJzY3JpYmUoImNsaWNrIix0aGlzLl9vbk1lbnVDbGljayx0aGlzLHRydWUpO3Ro aXMub24oInNlbGVjdGVkTWVudUl0ZW1DaGFuZ2UiLHRoaXMuX29uU2VsZWN0ZWRN ZW51SXRlbUNoYW5nZSk7UT1YLnNyY0VsZW1lbnQ7aWYoUSYmUS5ub2RlTmFtZS50 b1VwcGVyQ2FzZSgpPT0iU0VMRUNUIil7US5zdHlsZS5kaXNwbGF5PSJub25lIjtR LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoUSk7fX1lbHNle2lmKEImJlggaW5zdGFu Y2VvZiBCKXtpZighSyl7Sz1uZXcgWUFIT08ud2lkZ2V0Lk92ZXJsYXlNYW5hZ2Vy KCk7Cn1LLnJlZ2lzdGVyKFgpO319dGhpcy5fbWVudT1YO2lmKCFXJiYhUCl7aWYo Ry5pbkRvY3VtZW50KFIpKXtYLnJlbmRlcihSLnBhcmVudE5vZGUpO31lbHNle3Ro aXMub24oImFwcGVuZFRvIixWKTt9fX19aWYoQil7aWYoSil7Tj1KLnByb3RvdHlw ZS5DU1NfQ0xBU1NfTkFNRTt9aWYoVSYmSiYmKFUgaW5zdGFuY2VvZiBKKSl7WD1V O1c9dHJ1ZTtTLmNhbGwodGhpcyk7fWVsc2V7aWYoQiYmVSYmKFUgaW5zdGFuY2Vv ZiBCKSl7WD1VO1c9dHJ1ZTtYLmNmZy5xdWV1ZVByb3BlcnR5KCJ2aXNpYmxlIixm YWxzZSk7Uy5jYWxsKHRoaXMpO31lbHNle2lmKEomJkkuaXNBcnJheShVKSl7WD1u ZXcgSihHLmdlbmVyYXRlSWQoKSx7bGF6eWxvYWQ6UCxpdGVtZGF0YTpVfSk7dGhp cy5fbWVudT1YO3RoaXMub24oImFwcGVuZFRvIixTKTt9ZWxzZXtpZihJLmlzU3Ry aW5nKFUpKXtPPUcuZ2V0KFUpO2lmKE8pe2lmKEomJkcuaGFzQ2xhc3MoTyxOKXx8 Ty5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpPT0iU0VMRUNUIil7WD1uZXcgSihVLHts YXp5bG9hZDpQfSk7Uy5jYWxsKHRoaXMpO31lbHNle2lmKEIpe1g9bmV3IEIoVSx7 dmlzaWJsZTpmYWxzZX0pO1MuY2FsbCh0aGlzKTt9fX19ZWxzZXtpZihVJiZVLm5v ZGVOYW1lKXtpZihKJiZHLmhhc0NsYXNzKFUsTil8fFUubm9kZU5hbWUudG9VcHBl ckNhc2UoKT09IlNFTEVDVCIpe1g9bmV3IEooVSx7bGF6eWxvYWQ6UH0pO1MuY2Fs bCh0aGlzKTt9ZWxzZXtpZihCKXtpZighVS5pZCl7Ry5nZW5lcmF0ZUlkKFUpO31Y PW5ldyBCKFUse3Zpc2libGU6ZmFsc2V9KTtTLmNhbGwodGhpcyk7fX19fX19fX19 LF9zZXRPbkNsaWNrOmZ1bmN0aW9uKE4pe2lmKHRoaXMuX29uY2xpY2tBdHRyaWJ1 dGVWYWx1ZSYmKHRoaXMuX29uY2xpY2tBdHRyaWJ1dGVWYWx1ZSE9Tikpe3RoaXMu cmVtb3ZlTGlzdGVuZXIoImNsaWNrIix0aGlzLl9vbmNsaWNrQXR0cmlidXRlVmFs dWUuZm4pO3RoaXMuX29uY2xpY2tBdHRyaWJ1dGVWYWx1ZT1udWxsO31pZighdGhp cy5fb25jbGlja0F0dHJpYnV0ZVZhbHVlJiZJLmlzT2JqZWN0KE4pJiZJLmlzRnVu Y3Rpb24oTi5mbikpe3RoaXMub24oImNsaWNrIixOLmZuLE4ub2JqLE4uc2NvcGUp O3RoaXMuX29uY2xpY2tBdHRyaWJ1dGVWYWx1ZT1OO319LF9pc0FjdGl2YXRpb25L ZXk6ZnVuY3Rpb24oTil7dmFyIFM9dGhpcy5nZXQoInR5cGUiKSxPPShTPT0iY2hl Y2tib3gifHxTPT0icmFkaW8iKT90aGlzLkNIRUNLX0FDVElWQVRJT05fS0VZUzp0 aGlzLkFDVElWQVRJT05fS0VZUyxRPU8ubGVuZ3RoLFI9ZmFsc2UsUDtpZihRPjAp e1A9US0xO2Rve2lmKE49PU9bUF0pe1I9dHJ1ZTticmVhazt9fXdoaWxlKFAtLSk7 fXJldHVybiBSO30sX2lzU3BsaXRCdXR0b25PcHRpb25LZXk6ZnVuY3Rpb24oUCl7 dmFyIE89KE0uZ2V0Q2hhckNvZGUoUCk9PTQwKTt2YXIgTj1mdW5jdGlvbihRKXtN LnByZXZlbnREZWZhdWx0KFEpO3RoaXMucmVtb3ZlTGlzdGVuZXIoImtleXByZXNz IixOKTt9O2lmKE8pe2lmKEwub3BlcmEpe3RoaXMub24oImtleXByZXNzIixOKTt9 TS5wcmV2ZW50RGVmYXVsdChQKTt9cmV0dXJuIE87fSxfYWRkTGlzdGVuZXJzVG9G b3JtOmZ1bmN0aW9uKCl7dmFyIFQ9dGhpcy5nZXRGb3JtKCksUz1ZQUhPTy53aWRn ZXQuQnV0dG9uLm9uRm9ybUtleVByZXNzLFIsTixRLFAsTztpZihUKXtNLm9uKFQs InJlc2V0Iix0aGlzLl9vbkZvcm1SZXNldCxudWxsLHRoaXMpO00ub24oVCwic3Vi bWl0Iix0aGlzLl9vbkZvcm1TdWJtaXQsbnVsbCx0aGlzKTtOPXRoaXMuZ2V0KCJz cmNlbGVtZW50Iik7aWYodGhpcy5nZXQoInR5cGUiKT09InN1Ym1pdCJ8fChOJiZO LnR5cGU9PSJzdWJtaXQiKSl7UT1NLmdldExpc3RlbmVycyhULCJrZXlwcmVzcyIp O1I9ZmFsc2U7aWYoUSl7UD1RLmxlbmd0aDtpZihQPjApe089UC0xO2Rve2lmKFFb T10uZm49PVMpe1I9dHJ1ZTticmVhazt9fXdoaWxlKE8tLSk7fX1pZighUil7TS5v bihULCJrZXlwcmVzcyIsUyk7fX19fSxfc2hvd01lbnU6ZnVuY3Rpb24oUil7aWYo WUFIT08ud2lkZ2V0Lk1lbnVNYW5hZ2VyKXtZQUhPTy53aWRnZXQuTWVudU1hbmFn ZXIuaGlkZVZpc2libGUoKTt9aWYoSyl7Sy5oaWRlQWxsKCk7fXZhciBOPXRoaXMu X21lbnUsUT10aGlzLmdldCgibWVudWFsaWdubWVudCIpLFA9dGhpcy5nZXQoImZv Y3VzbWVudSIpLE87aWYodGhpcy5fcmVuZGVyZWRNZW51KXtOLmNmZy5zZXRQcm9w ZXJ0eSgiY29udGV4dCIsW3RoaXMuZ2V0KCJlbGVtZW50IiksUVswXSxRWzFdXSk7 Ti5jZmcuc2V0UHJvcGVydHkoInByZXZlbnRjb250ZXh0b3ZlcmxhcCIsdHJ1ZSk7 Ti5jZmcuc2V0UHJvcGVydHkoImNvbnN0cmFpbnRvdmlld3BvcnQiLHRydWUpO31l bHNle04uY2ZnLnF1ZXVlUHJvcGVydHkoImNvbnRleHQiLFt0aGlzLmdldCgiZWxl bWVudCIpLFFbMF0sUVsxXV0pO04uY2ZnLnF1ZXVlUHJvcGVydHkoInByZXZlbnRj b250ZXh0b3ZlcmxhcCIsdHJ1ZSk7Ti5jZmcucXVldWVQcm9wZXJ0eSgiY29uc3Ry YWludG92aWV3cG9ydCIsdHJ1ZSk7fXRoaXMuZm9jdXMoKTtpZihKJiZOJiYoTiBp bnN0YW5jZW9mIEopKXtPPU4uZm9jdXM7Ti5mb2N1cz1mdW5jdGlvbigpe307aWYo dGhpcy5fcmVuZGVyZWRNZW51KXtOLmNmZy5zZXRQcm9wZXJ0eSgibWluc2Nyb2xs aGVpZ2h0Iix0aGlzLmdldCgibWVudW1pbnNjcm9sbGhlaWdodCIpKTtOLmNmZy5z ZXRQcm9wZXJ0eSgibWF4aGVpZ2h0Iix0aGlzLmdldCgibWVudW1heGhlaWdodCIp KTt9ZWxzZXtOLmNmZy5xdWV1ZVByb3BlcnR5KCJtaW5zY3JvbGxoZWlnaHQiLHRo aXMuZ2V0KCJtZW51bWluc2Nyb2xsaGVpZ2h0IikpO04uY2ZnLnF1ZXVlUHJvcGVy dHkoIm1heGhlaWdodCIsdGhpcy5nZXQoIm1lbnVtYXhoZWlnaHQiKSk7fU4uc2hv dygpO04uZm9jdXM9TztOLmFsaWduKCk7aWYoUi50eXBlPT0ibW91c2Vkb3duIil7 TS5zdG9wUHJvcGFnYXRpb24oUik7fWlmKFApe04uZm9jdXMoKTt9fWVsc2V7aWYo QiYmTiYmKE4gaW5zdGFuY2VvZiBCKSl7aWYoIXRoaXMuX3JlbmRlcmVkTWVudSl7 Ti5yZW5kZXIodGhpcy5nZXQoImVsZW1lbnQiKS5wYXJlbnROb2RlKTt9Ti5zaG93 KCk7Ti5hbGlnbigpO319fSxfaGlkZU1lbnU6ZnVuY3Rpb24oKXt2YXIgTj10aGlz Ll9tZW51O2lmKE4pe04uaGlkZSgpO319LF9vbk1vdXNlT3ZlcjpmdW5jdGlvbihP KXt2YXIgUT10aGlzLmdldCgidHlwZSIpLE4sUDtpZihRPT09InNwbGl0Iil7Tj10 aGlzLmdldCgiZWxlbWVudCIpO1A9KEcuZ2V0WChOKSsoTi5vZmZzZXRXaWR0aC10 aGlzLk9QVElPTl9BUkVBX1dJRFRIKSk7dGhpcy5fbk9wdGlvblJlZ2lvblg9UDt9 aWYoIXRoaXMuX2hhc01vdXNlRXZlbnRIYW5kbGVycyl7aWYoUT09PSJzcGxpdCIp e3RoaXMub24oIm1vdXNlbW92ZSIsdGhpcy5fb25Nb3VzZU1vdmUpO310aGlzLm9u KCJtb3VzZW91dCIsdGhpcy5fb25Nb3VzZU91dCk7dGhpcy5faGFzTW91c2VFdmVu dEhhbmRsZXJzPXRydWU7fXRoaXMuYWRkU3RhdGVDU1NDbGFzc2VzKCJob3ZlciIp O2lmKFE9PT0ic3BsaXQiJiYoTS5nZXRQYWdlWChPKT5QKSl7dGhpcy5hZGRTdGF0 ZUNTU0NsYXNzZXMoImhvdmVyb3B0aW9uIik7fWlmKHRoaXMuX2FjdGl2YXRpb25C dXR0b25QcmVzc2VkKXt0aGlzLmFkZFN0YXRlQ1NTQ2xhc3NlcygiYWN0aXZlIik7 fWlmKHRoaXMuX2JPcHRpb25QcmVzc2VkKXt0aGlzLmFkZFN0YXRlQ1NTQ2xhc3Nl cygiYWN0aXZlb3B0aW9uIik7fWlmKHRoaXMuX2FjdGl2YXRpb25CdXR0b25QcmVz c2VkfHx0aGlzLl9iT3B0aW9uUHJlc3NlZCl7TS5yZW1vdmVMaXN0ZW5lcihkb2N1 bWVudCwibW91c2V1cCIsdGhpcy5fb25Eb2N1bWVudE1vdXNlVXApO319LF9vbk1v dXNlTW92ZTpmdW5jdGlvbihOKXt2YXIgTz10aGlzLl9uT3B0aW9uUmVnaW9uWDtp ZihPKXtpZihNLmdldFBhZ2VYKE4pPk8pe3RoaXMuYWRkU3RhdGVDU1NDbGFzc2Vz KCJob3Zlcm9wdGlvbiIpO31lbHNle3RoaXMucmVtb3ZlU3RhdGVDU1NDbGFzc2Vz KCJob3Zlcm9wdGlvbiIpO319fSxfb25Nb3VzZU91dDpmdW5jdGlvbihOKXt2YXIg Tz10aGlzLmdldCgidHlwZSIpO3RoaXMucmVtb3ZlU3RhdGVDU1NDbGFzc2VzKCJo b3ZlciIpO2lmKE8hPSJtZW51Iil7dGhpcy5yZW1vdmVTdGF0ZUNTU0NsYXNzZXMo ImFjdGl2ZSIpO31pZih0aGlzLl9hY3RpdmF0aW9uQnV0dG9uUHJlc3NlZHx8dGhp cy5fYk9wdGlvblByZXNzZWQpe00ub24oZG9jdW1lbnQsIm1vdXNldXAiLHRoaXMu X29uRG9jdW1lbnRNb3VzZVVwLG51bGwsdGhpcyk7fWlmKE89PT0ic3BsaXQiJiYo TS5nZXRQYWdlWChOKT50aGlzLl9uT3B0aW9uUmVnaW9uWCkpe3RoaXMucmVtb3Zl U3RhdGVDU1NDbGFzc2VzKCJob3Zlcm9wdGlvbiIpO319LF9vbkRvY3VtZW50TW91 c2VVcDpmdW5jdGlvbihQKXt0aGlzLl9hY3RpdmF0aW9uQnV0dG9uUHJlc3NlZD1m YWxzZTt0aGlzLl9iT3B0aW9uUHJlc3NlZD1mYWxzZTt2YXIgUT10aGlzLmdldCgi dHlwZSIpLE4sTztpZihRPT0ibWVudSJ8fFE9PSJzcGxpdCIpe049TS5nZXRUYXJn ZXQoUCk7Tz10aGlzLl9tZW51LmVsZW1lbnQ7aWYoTiE9TyYmIUcuaXNBbmNlc3Rv cihPLE4pKXt0aGlzLnJlbW92ZVN0YXRlQ1NTQ2xhc3NlcygoUT09Im1lbnUiPyJh Y3RpdmUiOiJhY3RpdmVvcHRpb24iKSk7dGhpcy5faGlkZU1lbnUoKTt9fU0ucmVt b3ZlTGlzdGVuZXIoZG9jdW1lbnQsIm1vdXNldXAiLHRoaXMuX29uRG9jdW1lbnRN b3VzZVVwKTt9LF9vbk1vdXNlRG93bjpmdW5jdGlvbihQKXt2YXIgUSxPPXRydWU7 ZnVuY3Rpb24gTigpe3RoaXMuX2hpZGVNZW51KCk7dGhpcy5yZW1vdmVMaXN0ZW5l cigibW91c2V1cCIsTik7fWlmKChQLndoaWNofHxQLmJ1dHRvbik9PTEpe2lmKCF0 aGlzLmhhc0ZvY3VzKCkpe3RoaXMuZm9jdXMoKTt9UT10aGlzLmdldCgidHlwZSIp O2lmKFE9PSJzcGxpdCIpe2lmKE0uZ2V0UGFnZVgoUCk+dGhpcy5fbk9wdGlvblJl Z2lvblgpe3RoaXMuZmlyZUV2ZW50KCJvcHRpb24iLFApO089ZmFsc2U7fWVsc2V7 dGhpcy5hZGRTdGF0ZUNTU0NsYXNzZXMoImFjdGl2ZSIpO3RoaXMuX2FjdGl2YXRp b25CdXR0b25QcmVzc2VkPXRydWU7fX1lbHNle2lmKFE9PSJtZW51Iil7aWYodGhp cy5pc0FjdGl2ZSgpKXt0aGlzLl9oaWRlTWVudSgpO3RoaXMuX2FjdGl2YXRpb25C dXR0b25QcmVzc2VkPWZhbHNlO31lbHNle3RoaXMuX3Nob3dNZW51KFApO3RoaXMu X2FjdGl2YXRpb25CdXR0b25QcmVzc2VkPXRydWU7fX1lbHNle3RoaXMuYWRkU3Rh dGVDU1NDbGFzc2VzKCJhY3RpdmUiKTt0aGlzLl9hY3RpdmF0aW9uQnV0dG9uUHJl c3NlZD10cnVlO319aWYoUT09InNwbGl0Inx8UT09Im1lbnUiKXt0aGlzLl9oaWRl TWVudVRpbWVyPUkubGF0ZXIoMjUwLHRoaXMsdGhpcy5vbixbIm1vdXNldXAiLE5d KTt9fXJldHVybiBPO30sX29uTW91c2VVcDpmdW5jdGlvbihQKXt2YXIgUT10aGlz LmdldCgidHlwZSIpLE49dGhpcy5faGlkZU1lbnVUaW1lcixPPXRydWU7aWYoTil7 Ti5jYW5jZWwoKTt9aWYoUT09ImNoZWNrYm94Inx8UT09InJhZGlvIil7dGhpcy5z ZXQoImNoZWNrZWQiLCEodGhpcy5nZXQoImNoZWNrZWQiKSkpO310aGlzLl9hY3Rp dmF0aW9uQnV0dG9uUHJlc3NlZD1mYWxzZTtpZihRIT0ibWVudSIpe3RoaXMucmVt b3ZlU3RhdGVDU1NDbGFzc2VzKCJhY3RpdmUiKTt9aWYoUT09InNwbGl0IiYmTS5n ZXRQYWdlWChQKT50aGlzLl9uT3B0aW9uUmVnaW9uWCl7Tz1mYWxzZTt9cmV0dXJu IE87fSxfb25Gb2N1czpmdW5jdGlvbihPKXt2YXIgTjt0aGlzLmFkZFN0YXRlQ1NT Q2xhc3NlcygiZm9jdXMiKTtpZih0aGlzLl9hY3RpdmF0aW9uS2V5UHJlc3NlZCl7 dGhpcy5hZGRTdGF0ZUNTU0NsYXNzZXMoImFjdGl2ZSIpO31DPXRoaXM7aWYoIXRo aXMuX2hhc0tleUV2ZW50SGFuZGxlcnMpe049dGhpcy5fYnV0dG9uO00ub24oTiwi Ymx1ciIsdGhpcy5fb25CbHVyLG51bGwsdGhpcyk7TS5vbihOLCJrZXlkb3duIix0 aGlzLl9vbktleURvd24sbnVsbCx0aGlzKTtNLm9uKE4sImtleXVwIix0aGlzLl9v bktleVVwLG51bGwsdGhpcyk7CnRoaXMuX2hhc0tleUV2ZW50SGFuZGxlcnM9dHJ1 ZTt9dGhpcy5maXJlRXZlbnQoImZvY3VzIixPKTt9LF9vbkJsdXI6ZnVuY3Rpb24o Til7dGhpcy5yZW1vdmVTdGF0ZUNTU0NsYXNzZXMoImZvY3VzIik7aWYodGhpcy5n ZXQoInR5cGUiKSE9Im1lbnUiKXt0aGlzLnJlbW92ZVN0YXRlQ1NTQ2xhc3Nlcygi YWN0aXZlIik7fWlmKHRoaXMuX2FjdGl2YXRpb25LZXlQcmVzc2VkKXtNLm9uKGRv Y3VtZW50LCJrZXl1cCIsdGhpcy5fb25Eb2N1bWVudEtleVVwLG51bGwsdGhpcyk7 fUM9bnVsbDt0aGlzLmZpcmVFdmVudCgiYmx1ciIsTik7fSxfb25Eb2N1bWVudEtl eVVwOmZ1bmN0aW9uKE4pe2lmKHRoaXMuX2lzQWN0aXZhdGlvbktleShNLmdldENo YXJDb2RlKE4pKSl7dGhpcy5fYWN0aXZhdGlvbktleVByZXNzZWQ9ZmFsc2U7TS5y ZW1vdmVMaXN0ZW5lcihkb2N1bWVudCwia2V5dXAiLHRoaXMuX29uRG9jdW1lbnRL ZXlVcCk7fX0sX29uS2V5RG93bjpmdW5jdGlvbihPKXt2YXIgTj10aGlzLl9tZW51 O2lmKHRoaXMuZ2V0KCJ0eXBlIik9PSJzcGxpdCImJnRoaXMuX2lzU3BsaXRCdXR0 b25PcHRpb25LZXkoTykpe3RoaXMuZmlyZUV2ZW50KCJvcHRpb24iLE8pO31lbHNl e2lmKHRoaXMuX2lzQWN0aXZhdGlvbktleShNLmdldENoYXJDb2RlKE8pKSl7aWYo dGhpcy5nZXQoInR5cGUiKT09Im1lbnUiKXt0aGlzLl9zaG93TWVudShPKTt9ZWxz ZXt0aGlzLl9hY3RpdmF0aW9uS2V5UHJlc3NlZD10cnVlO3RoaXMuYWRkU3RhdGVD U1NDbGFzc2VzKCJhY3RpdmUiKTt9fX1pZihOJiZOLmNmZy5nZXRQcm9wZXJ0eSgi dmlzaWJsZSIpJiZNLmdldENoYXJDb2RlKE8pPT0yNyl7Ti5oaWRlKCk7dGhpcy5m b2N1cygpO319LF9vbktleVVwOmZ1bmN0aW9uKE4pe3ZhciBPO2lmKHRoaXMuX2lz QWN0aXZhdGlvbktleShNLmdldENoYXJDb2RlKE4pKSl7Tz10aGlzLmdldCgidHlw ZSIpO2lmKE89PSJjaGVja2JveCJ8fE89PSJyYWRpbyIpe3RoaXMuc2V0KCJjaGVj a2VkIiwhKHRoaXMuZ2V0KCJjaGVja2VkIikpKTt9dGhpcy5fYWN0aXZhdGlvbktl eVByZXNzZWQ9ZmFsc2U7aWYodGhpcy5nZXQoInR5cGUiKSE9Im1lbnUiKXt0aGlz LnJlbW92ZVN0YXRlQ1NTQ2xhc3NlcygiYWN0aXZlIik7fX19LF9vbkNsaWNrOmZ1 bmN0aW9uKFEpe3ZhciBTPXRoaXMuZ2V0KCJ0eXBlIiksTixSLE8sUDtzd2l0Y2go Uyl7Y2FzZSJyYWRpbyI6Y2FzZSJjaGVja2JveCI6aWYoIXRoaXMuX2hhc0RlZmF1 bHRUaXRsZSl7aWYodGhpcy5nZXQoImNoZWNrZWQiKSl7Tj0oUz09InJhZGlvIik/ dGhpcy5SQURJT19DSEVDS0VEX1RJVExFOnRoaXMuQ0hFQ0tCT1hfQ0hFQ0tFRF9U SVRMRTt9ZWxzZXtOPShTPT0icmFkaW8iKT90aGlzLlJBRElPX0RFRkFVTFRfVElU TEU6dGhpcy5DSEVDS0JPWF9ERUZBVUxUX1RJVExFO310aGlzLnNldCgidGl0bGUi LE4pO31icmVhaztjYXNlInN1Ym1pdCI6aWYoUS5yZXR1cm5WYWx1ZSE9PWZhbHNl KXt0aGlzLnN1Ym1pdEZvcm0oKTt9YnJlYWs7Y2FzZSJyZXNldCI6Uj10aGlzLmdl dEZvcm0oKTtpZihSKXtSLnJlc2V0KCk7fWJyZWFrO2Nhc2UibWVudSI6Tj10aGlz Ll9tZW51LmNmZy5nZXRQcm9wZXJ0eSgidmlzaWJsZSIpP3RoaXMuTUVOVUJVVFRP Tl9NRU5VX1ZJU0lCTEVfVElUTEU6dGhpcy5NRU5VQlVUVE9OX0RFRkFVTFRfVElU TEU7dGhpcy5zZXQoInRpdGxlIixOKTticmVhaztjYXNlInNwbGl0IjppZih0aGlz Ll9uT3B0aW9uUmVnaW9uWD4wJiYoTS5nZXRQYWdlWChRKT50aGlzLl9uT3B0aW9u UmVnaW9uWCkpe1A9ZmFsc2U7fWVsc2V7dGhpcy5faGlkZU1lbnUoKTtPPXRoaXMu Z2V0KCJzcmNlbGVtZW50Iik7aWYoTyYmTy50eXBlPT0ic3VibWl0IiYmUS5yZXR1 cm5WYWx1ZSE9PWZhbHNlKXt0aGlzLnN1Ym1pdEZvcm0oKTt9fU49dGhpcy5fbWVu dS5jZmcuZ2V0UHJvcGVydHkoInZpc2libGUiKT90aGlzLlNQTElUQlVUVE9OX09Q VElPTl9WSVNJQkxFX1RJVExFOnRoaXMuU1BMSVRCVVRUT05fREVGQVVMVF9USVRM RTt0aGlzLnNldCgidGl0bGUiLE4pO2JyZWFrO31yZXR1cm4gUDt9LF9vbkRibENs aWNrOmZ1bmN0aW9uKE8pe3ZhciBOPXRydWU7aWYodGhpcy5nZXQoInR5cGUiKT09 InNwbGl0IiYmTS5nZXRQYWdlWChPKT50aGlzLl9uT3B0aW9uUmVnaW9uWCl7Tj1m YWxzZTt9cmV0dXJuIE47fSxfb25BcHBlbmRUbzpmdW5jdGlvbihOKXtJLmxhdGVy KDAsdGhpcyx0aGlzLl9hZGRMaXN0ZW5lcnNUb0Zvcm0pO30sX29uRm9ybVJlc2V0 OmZ1bmN0aW9uKE8pe3ZhciBQPXRoaXMuZ2V0KCJ0eXBlIiksTj10aGlzLl9tZW51 O2lmKFA9PSJjaGVja2JveCJ8fFA9PSJyYWRpbyIpe3RoaXMucmVzZXRWYWx1ZSgi Y2hlY2tlZCIpO31pZihKJiZOJiYoTiBpbnN0YW5jZW9mIEopKXt0aGlzLnJlc2V0 VmFsdWUoInNlbGVjdGVkTWVudUl0ZW0iKTt9fSxfb25Gb3JtU3VibWl0OmZ1bmN0 aW9uKE4pe3RoaXMuY3JlYXRlSGlkZGVuRmllbGRzKCk7fSxfb25Eb2N1bWVudE1v dXNlRG93bjpmdW5jdGlvbihRKXt2YXIgTj1NLmdldFRhcmdldChRKSxQPXRoaXMu Z2V0KCJlbGVtZW50IiksTz10aGlzLl9tZW51LmVsZW1lbnQ7aWYoTiE9UCYmIUcu aXNBbmNlc3RvcihQLE4pJiZOIT1PJiYhRy5pc0FuY2VzdG9yKE8sTikpe3RoaXMu X2hpZGVNZW51KCk7TS5yZW1vdmVMaXN0ZW5lcihkb2N1bWVudCwibW91c2Vkb3du Iix0aGlzLl9vbkRvY3VtZW50TW91c2VEb3duKTt9fSxfb25PcHRpb246ZnVuY3Rp b24oTil7aWYodGhpcy5oYXNDbGFzcygieXVpLXNwbGl0LWJ1dHRvbi1hY3RpdmVv cHRpb24iKSl7dGhpcy5faGlkZU1lbnUoKTt0aGlzLl9iT3B0aW9uUHJlc3NlZD1m YWxzZTt9ZWxzZXt0aGlzLl9zaG93TWVudShOKTt0aGlzLl9iT3B0aW9uUHJlc3Nl ZD10cnVlO319LF9vbk1lbnVTaG93OmZ1bmN0aW9uKE8pe00ub24oZG9jdW1lbnQs Im1vdXNlZG93biIsdGhpcy5fb25Eb2N1bWVudE1vdXNlRG93bixudWxsLHRoaXMp O3ZhciBOLFA7aWYodGhpcy5nZXQoInR5cGUiKT09InNwbGl0Iil7Tj10aGlzLlNQ TElUQlVUVE9OX09QVElPTl9WSVNJQkxFX1RJVExFO1A9ImFjdGl2ZW9wdGlvbiI7 fWVsc2V7Tj10aGlzLk1FTlVCVVRUT05fTUVOVV9WSVNJQkxFX1RJVExFO1A9ImFj dGl2ZSI7fXRoaXMuYWRkU3RhdGVDU1NDbGFzc2VzKFApO3RoaXMuc2V0KCJ0aXRs ZSIsTik7fSxfb25NZW51SGlkZTpmdW5jdGlvbihQKXt2YXIgTz10aGlzLl9tZW51 LE4sUTtpZih0aGlzLmdldCgidHlwZSIpPT0ic3BsaXQiKXtOPXRoaXMuU1BMSVRC VVRUT05fREVGQVVMVF9USVRMRTtRPSJhY3RpdmVvcHRpb24iO31lbHNle049dGhp cy5NRU5VQlVUVE9OX0RFRkFVTFRfVElUTEU7UT0iYWN0aXZlIjt9dGhpcy5yZW1v dmVTdGF0ZUNTU0NsYXNzZXMoUSk7dGhpcy5zZXQoInRpdGxlIixOKTtpZih0aGlz LmdldCgidHlwZSIpPT0ic3BsaXQiKXt0aGlzLl9iT3B0aW9uUHJlc3NlZD1mYWxz ZTt9fSxfb25NZW51S2V5RG93bjpmdW5jdGlvbihQLE8pe3ZhciBOPU9bMF07aWYo TS5nZXRDaGFyQ29kZShOKT09Mjcpe3RoaXMuZm9jdXMoKTtpZih0aGlzLmdldCgi dHlwZSIpPT0ic3BsaXQiKXt0aGlzLl9iT3B0aW9uUHJlc3NlZD1mYWxzZTt9fX0s X29uTWVudVJlbmRlcjpmdW5jdGlvbihQKXt2YXIgUz10aGlzLmdldCgiZWxlbWVu dCIpLE89Uy5wYXJlbnROb2RlLE49dGhpcy5fbWVudSxSPU4uZWxlbWVudCxRPU4u c3JjRWxlbWVudDtpZihPIT1SLnBhcmVudE5vZGUpe08uYXBwZW5kQ2hpbGQoUik7 fXRoaXMuX3JlbmRlcmVkTWVudT10cnVlO2lmKFEmJlEubm9kZU5hbWUudG9Mb3dl ckNhc2UoKT09PSJzZWxlY3QiJiZRLnZhbHVlKXt0aGlzLnNldCgic2VsZWN0ZWRN ZW51SXRlbSIsTi5nZXRJdGVtKFEuc2VsZWN0ZWRJbmRleCkpO319LF9vbk1lbnVD bGljazpmdW5jdGlvbihPLE4pe3ZhciBRPU5bMV0sUDtpZihRKXt0aGlzLnNldCgi c2VsZWN0ZWRNZW51SXRlbSIsUSk7UD10aGlzLmdldCgic3JjZWxlbWVudCIpO2lm KFAmJlAudHlwZT09InN1Ym1pdCIpe3RoaXMuc3VibWl0Rm9ybSgpO310aGlzLl9o aWRlTWVudSgpO319LF9vblNlbGVjdGVkTWVudUl0ZW1DaGFuZ2U6ZnVuY3Rpb24o Til7dmFyIE89Ti5wcmV2VmFsdWUsUD1OLm5ld1ZhbHVlO2lmKE8pe0cucmVtb3Zl Q2xhc3MoTy5lbGVtZW50LCJ5dWktYnV0dG9uLXNlbGVjdGVkbWVudWl0ZW0iKTt9 aWYoUCl7Ry5hZGRDbGFzcyhQLmVsZW1lbnQsInl1aS1idXR0b24tc2VsZWN0ZWRt ZW51aXRlbSIpO319LGNyZWF0ZUJ1dHRvbkVsZW1lbnQ6ZnVuY3Rpb24oTil7dmFy IFA9dGhpcy5OT0RFX05BTUUsTz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFApO08u aW5uZXJIVE1MPSI8IitQKycgY2xhc3M9ImZpcnN0LWNoaWxkIj4nKyhOPT0ibGlu ayI/IjxhPjwvYT4iOic8YnV0dG9uIHR5cGU9ImJ1dHRvbiI+PC9idXR0b24+Jykr IjwvIitQKyI+IjtyZXR1cm4gTzt9LGFkZFN0YXRlQ1NTQ2xhc3NlczpmdW5jdGlv bihOKXt2YXIgTz10aGlzLmdldCgidHlwZSIpO2lmKEkuaXNTdHJpbmcoTikpe2lm KE4hPSJhY3RpdmVvcHRpb24iJiZOIT0iaG92ZXJvcHRpb24iKXt0aGlzLmFkZENs YXNzKHRoaXMuQ1NTX0NMQVNTX05BTUUrKCItIitOKSk7fXRoaXMuYWRkQ2xhc3Mo Inl1aS0iK08rKCItYnV0dG9uLSIrTikpO319LHJlbW92ZVN0YXRlQ1NTQ2xhc3Nl czpmdW5jdGlvbihOKXt2YXIgTz10aGlzLmdldCgidHlwZSIpO2lmKEkuaXNTdHJp bmcoTikpe3RoaXMucmVtb3ZlQ2xhc3ModGhpcy5DU1NfQ0xBU1NfTkFNRSsoIi0i K04pKTt0aGlzLnJlbW92ZUNsYXNzKCJ5dWktIitPKygiLWJ1dHRvbi0iK04pKTt9 fSxjcmVhdGVIaWRkZW5GaWVsZHM6ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUhpZGRl bkZpZWxkcygpO3ZhciBWPXRoaXMuZ2V0Rm9ybSgpLFosTyxTLFgsWSxULFUsTixS LFcsUCxRPWZhbHNlO2lmKFYmJiF0aGlzLmdldCgiZGlzYWJsZWQiKSl7Tz10aGlz LmdldCgidHlwZSIpO1M9KE89PSJjaGVja2JveCJ8fE89PSJyYWRpbyIpO2lmKChT JiZ0aGlzLmdldCgiY2hlY2tlZCIpKXx8KEU9PXRoaXMpKXtaPUYoKFM/TzoiaGlk ZGVuIiksdGhpcy5nZXQoIm5hbWUiKSx0aGlzLmdldCgidmFsdWUiKSx0aGlzLmdl dCgiY2hlY2tlZCIpKTtpZihaKXtpZihTKXtaLnN0eWxlLmRpc3BsYXk9Im5vbmUi O31WLmFwcGVuZENoaWxkKFopO319WD10aGlzLl9tZW51O2lmKEomJlgmJihYIGlu c3RhbmNlb2YgSikpe1k9dGhpcy5nZXQoInNlbGVjdGVkTWVudUl0ZW0iKTtQPVgu c3JjRWxlbWVudDtRPShQJiZQLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PSJTRUxF Q1QiKTtpZihZKXtVPShZLnZhbHVlPT09bnVsbHx8WS52YWx1ZT09PSIiKT9ZLmNm Zy5nZXRQcm9wZXJ0eSgidGV4dCIpOlkudmFsdWU7VD10aGlzLmdldCgibmFtZSIp O2lmKFEpe1c9UC5uYW1lO31lbHNle2lmKFQpe1c9KFQrIl9vcHRpb25zIik7fX1p ZihVJiZXKXtOPUYoImhpZGRlbiIsVyxVKTtWLmFwcGVuZENoaWxkKE4pO319ZWxz ZXtpZihRKXtWLmFwcGVuZENoaWxkKFApO319fWlmKFomJk4pe3RoaXMuX2hpZGRl bkZpZWxkcz1bWixOXTt9ZWxzZXtpZighWiYmTil7dGhpcy5faGlkZGVuRmllbGRz PU47fWVsc2V7aWYoWiYmIU4pe3RoaXMuX2hpZGRlbkZpZWxkcz1aO319fVI9dGhp cy5faGlkZGVuRmllbGRzO31yZXR1cm4gUjt9LHJlbW92ZUhpZGRlbkZpZWxkczpm dW5jdGlvbigpe3ZhciBRPXRoaXMuX2hpZGRlbkZpZWxkcyxPLFA7ZnVuY3Rpb24g TihSKXtpZihHLmluRG9jdW1lbnQoUikpe1IucGFyZW50Tm9kZS5yZW1vdmVDaGls ZChSKTt9fWlmKFEpe2lmKEkuaXNBcnJheShRKSl7Tz1RLmxlbmd0aDtpZihPPjAp e1A9Ty0xO2Rve04oUVtQXSk7fXdoaWxlKFAtLSk7fX1lbHNle04oUSk7fXRoaXMu X2hpZGRlbkZpZWxkcz1udWxsO319LHN1Ym1pdEZvcm06ZnVuY3Rpb24oKXt2YXIg UT10aGlzLmdldEZvcm0oKSxQPXRoaXMuZ2V0KCJzcmNlbGVtZW50IiksTz1mYWxz ZSxOO2lmKFEpe2lmKHRoaXMuZ2V0KCJ0eXBlIik9PSJzdWJtaXQifHwoUCYmUC50 eXBlPT0ic3VibWl0Iikpe0U9dGhpczsKfWlmKEwuaWUpe089US5maXJlRXZlbnQo Im9uc3VibWl0Iik7fWVsc2V7Tj1kb2N1bWVudC5jcmVhdGVFdmVudCgiSFRNTEV2 ZW50cyIpO04uaW5pdEV2ZW50KCJzdWJtaXQiLHRydWUsdHJ1ZSk7Tz1RLmRpc3Bh dGNoRXZlbnQoTik7fWlmKChMLmllfHxMLndlYmtpdCkmJk8pe1Euc3VibWl0KCk7 fX1yZXR1cm4gTzt9LGluaXQ6ZnVuY3Rpb24oTyxhKXt2YXIgUT1hLnR5cGU9PSJs aW5rIj8iYSI6ImJ1dHRvbiIsVj1hLnNyY2VsZW1lbnQsWj1PLmdldEVsZW1lbnRz QnlUYWdOYW1lKFEpWzBdLFg7aWYoIVope1g9Ty5nZXRFbGVtZW50c0J5VGFnTmFt ZSgiaW5wdXQiKVswXTtpZihYKXtaPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1 dHRvbiIpO1ouc2V0QXR0cmlidXRlKCJ0eXBlIiwiYnV0dG9uIik7WC5wYXJlbnRO b2RlLnJlcGxhY2VDaGlsZChaLFgpO319dGhpcy5fYnV0dG9uPVo7dGhpcy5faGFz RGVmYXVsdFRpdGxlPShhLnRpdGxlJiZhLnRpdGxlLmxlbmd0aD4wKTtZQUhPTy53 aWRnZXQuQnV0dG9uLnN1cGVyY2xhc3MuaW5pdC5jYWxsKHRoaXMsTyxhKTt2YXIg VD10aGlzLmdldCgiaWQiKSxOPVQrIi1idXR0b24iO1ouaWQ9Tjt2YXIgVSxXO3Zh ciBkPWZ1bmN0aW9uKGUpe3JldHVybihlLmh0bWxGb3I9PT1UKTt9O3ZhciBTPWZ1 bmN0aW9uKCl7Vy5zZXRBdHRyaWJ1dGUoKEwuaWU/Imh0bWxGb3IiOiJmb3IiKSxO KTt9O2lmKFYmJnRoaXMuZ2V0KCJ0eXBlIikhPSJsaW5rIil7VT1HLmdldEVsZW1l bnRzQnkoZCwibGFiZWwiKTtpZihJLmlzQXJyYXkoVSkmJlUubGVuZ3RoPjApe1c9 VVswXTt9fURbVF09dGhpczt0aGlzLmFkZENsYXNzKHRoaXMuQ1NTX0NMQVNTX05B TUUpO3RoaXMuYWRkQ2xhc3MoInl1aS0iK3RoaXMuZ2V0KCJ0eXBlIikrIi1idXR0 b24iKTtNLm9uKHRoaXMuX2J1dHRvbiwiZm9jdXMiLHRoaXMuX29uRm9jdXMsbnVs bCx0aGlzKTt0aGlzLm9uKCJtb3VzZW92ZXIiLHRoaXMuX29uTW91c2VPdmVyKTt0 aGlzLm9uKCJtb3VzZWRvd24iLHRoaXMuX29uTW91c2VEb3duKTt0aGlzLm9uKCJt b3VzZXVwIix0aGlzLl9vbk1vdXNlVXApO3RoaXMub24oImNsaWNrIix0aGlzLl9v bkNsaWNrKTt2YXIgWT10aGlzLmdldCgib25jbGljayIpO3RoaXMuc2V0KCJvbmNs aWNrIixudWxsKTt0aGlzLnNldCgib25jbGljayIsWSk7dGhpcy5vbigiZGJsY2xp Y2siLHRoaXMuX29uRGJsQ2xpY2spO2lmKFcpe3RoaXMub24oImFwcGVuZFRvIixT KTt9dGhpcy5vbigiYXBwZW5kVG8iLHRoaXMuX29uQXBwZW5kVG8pO3ZhciBjPXRo aXMuZ2V0KCJjb250YWluZXIiKSxQPXRoaXMuZ2V0KCJlbGVtZW50IiksYj1HLmlu RG9jdW1lbnQoUCksUjtpZihjKXtpZihWJiZWIT1QKXtSPVYucGFyZW50Tm9kZTtp ZihSKXtSLnJlbW92ZUNoaWxkKFYpO319aWYoSS5pc1N0cmluZyhjKSl7TS5vbkNv bnRlbnRSZWFkeShjLHRoaXMuYXBwZW5kVG8sYyx0aGlzKTt9ZWxzZXt0aGlzLm9u KCJpbml0IixmdW5jdGlvbigpe0kubGF0ZXIoMCx0aGlzLHRoaXMuYXBwZW5kVG8s Yyk7fSk7fX1lbHNle2lmKCFiJiZWJiZWIT1QKXtSPVYucGFyZW50Tm9kZTtpZihS KXt0aGlzLmZpcmVFdmVudCgiYmVmb3JlQXBwZW5kVG8iLHt0eXBlOiJiZWZvcmVB cHBlbmRUbyIsdGFyZ2V0OlJ9KTtSLnJlcGxhY2VDaGlsZChQLFYpO3RoaXMuZmly ZUV2ZW50KCJhcHBlbmRUbyIse3R5cGU6ImFwcGVuZFRvIix0YXJnZXQ6Un0pO319 ZWxzZXtpZih0aGlzLmdldCgidHlwZSIpIT0ibGluayImJmImJlYmJlY9PVApe3Ro aXMuX2FkZExpc3RlbmVyc1RvRm9ybSgpO319fXRoaXMuZmlyZUV2ZW50KCJpbml0 Iix7dHlwZToiaW5pdCIsdGFyZ2V0OnRoaXN9KTt9LGluaXRBdHRyaWJ1dGVzOmZ1 bmN0aW9uKE8pe3ZhciBOPU98fHt9O1lBSE9PLndpZGdldC5CdXR0b24uc3VwZXJj bGFzcy5pbml0QXR0cmlidXRlcy5jYWxsKHRoaXMsTik7dGhpcy5zZXRBdHRyaWJ1 dGVDb25maWcoInR5cGUiLHt2YWx1ZTooTi50eXBlfHwicHVzaCIpLHZhbGlkYXRv cjpJLmlzU3RyaW5nLHdyaXRlT25jZTp0cnVlLG1ldGhvZDp0aGlzLl9zZXRUeXBl fSk7dGhpcy5zZXRBdHRyaWJ1dGVDb25maWcoImxhYmVsIix7dmFsdWU6Ti5sYWJl bCx2YWxpZGF0b3I6SS5pc1N0cmluZyxtZXRob2Q6dGhpcy5fc2V0TGFiZWx9KTt0 aGlzLnNldEF0dHJpYnV0ZUNvbmZpZygidmFsdWUiLHt2YWx1ZTpOLnZhbHVlfSk7 dGhpcy5zZXRBdHRyaWJ1dGVDb25maWcoIm5hbWUiLHt2YWx1ZTpOLm5hbWUsdmFs aWRhdG9yOkkuaXNTdHJpbmd9KTt0aGlzLnNldEF0dHJpYnV0ZUNvbmZpZygidGFi aW5kZXgiLHt2YWx1ZTpOLnRhYmluZGV4LHZhbGlkYXRvcjpJLmlzTnVtYmVyLG1l dGhvZDp0aGlzLl9zZXRUYWJJbmRleH0pO3RoaXMuY29uZmlndXJlQXR0cmlidXRl KCJ0aXRsZSIse3ZhbHVlOk4udGl0bGUsdmFsaWRhdG9yOkkuaXNTdHJpbmcsbWV0 aG9kOnRoaXMuX3NldFRpdGxlfSk7dGhpcy5zZXRBdHRyaWJ1dGVDb25maWcoImRp c2FibGVkIix7dmFsdWU6KE4uZGlzYWJsZWR8fGZhbHNlKSx2YWxpZGF0b3I6SS5p c0Jvb2xlYW4sbWV0aG9kOnRoaXMuX3NldERpc2FibGVkfSk7dGhpcy5zZXRBdHRy aWJ1dGVDb25maWcoImhyZWYiLHt2YWx1ZTpOLmhyZWYsdmFsaWRhdG9yOkkuaXNT dHJpbmcsbWV0aG9kOnRoaXMuX3NldEhyZWZ9KTt0aGlzLnNldEF0dHJpYnV0ZUNv bmZpZygidGFyZ2V0Iix7dmFsdWU6Ti50YXJnZXQsdmFsaWRhdG9yOkkuaXNTdHJp bmcsbWV0aG9kOnRoaXMuX3NldFRhcmdldH0pO3RoaXMuc2V0QXR0cmlidXRlQ29u ZmlnKCJjaGVja2VkIix7dmFsdWU6KE4uY2hlY2tlZHx8ZmFsc2UpLHZhbGlkYXRv cjpJLmlzQm9vbGVhbixtZXRob2Q6dGhpcy5fc2V0Q2hlY2tlZH0pO3RoaXMuc2V0 QXR0cmlidXRlQ29uZmlnKCJjb250YWluZXIiLHt2YWx1ZTpOLmNvbnRhaW5lcix3 cml0ZU9uY2U6dHJ1ZX0pO3RoaXMuc2V0QXR0cmlidXRlQ29uZmlnKCJzcmNlbGVt ZW50Iix7dmFsdWU6Ti5zcmNlbGVtZW50LHdyaXRlT25jZTp0cnVlfSk7dGhpcy5z ZXRBdHRyaWJ1dGVDb25maWcoIm1lbnUiLHt2YWx1ZTpudWxsLG1ldGhvZDp0aGlz Ll9zZXRNZW51LHdyaXRlT25jZTp0cnVlfSk7dGhpcy5zZXRBdHRyaWJ1dGVDb25m aWcoImxhenlsb2FkbWVudSIse3ZhbHVlOihOLmxhenlsb2FkbWVudT09PWZhbHNl P2ZhbHNlOnRydWUpLHZhbGlkYXRvcjpJLmlzQm9vbGVhbix3cml0ZU9uY2U6dHJ1 ZX0pO3RoaXMuc2V0QXR0cmlidXRlQ29uZmlnKCJtZW51Y2xhc3NuYW1lIix7dmFs dWU6KE4ubWVudWNsYXNzbmFtZXx8Inl1aS1idXR0b24tbWVudSIpLHZhbGlkYXRv cjpJLmlzU3RyaW5nLG1ldGhvZDp0aGlzLl9zZXRNZW51Q2xhc3NOYW1lLHdyaXRl T25jZTp0cnVlfSk7dGhpcy5zZXRBdHRyaWJ1dGVDb25maWcoIm1lbnVtaW5zY3Jv bGxoZWlnaHQiLHt2YWx1ZTooTi5tZW51bWluc2Nyb2xsaGVpZ2h0fHw5MCksdmFs aWRhdG9yOkkuaXNOdW1iZXJ9KTt0aGlzLnNldEF0dHJpYnV0ZUNvbmZpZygibWVu dW1heGhlaWdodCIse3ZhbHVlOihOLm1lbnVtYXhoZWlnaHR8fDApLHZhbGlkYXRv cjpJLmlzTnVtYmVyfSk7dGhpcy5zZXRBdHRyaWJ1dGVDb25maWcoIm1lbnVhbGln bm1lbnQiLHt2YWx1ZTooTi5tZW51YWxpZ25tZW50fHxbInRsIiwiYmwiXSksdmFs aWRhdG9yOkkuaXNBcnJheX0pO3RoaXMuc2V0QXR0cmlidXRlQ29uZmlnKCJzZWxl Y3RlZE1lbnVJdGVtIix7dmFsdWU6bnVsbH0pO3RoaXMuc2V0QXR0cmlidXRlQ29u ZmlnKCJvbmNsaWNrIix7dmFsdWU6Ti5vbmNsaWNrLG1ldGhvZDp0aGlzLl9zZXRP bkNsaWNrfSk7dGhpcy5zZXRBdHRyaWJ1dGVDb25maWcoImZvY3VzbWVudSIse3Zh bHVlOihOLmZvY3VzbWVudT09PWZhbHNlP2ZhbHNlOnRydWUpLHZhbGlkYXRvcjpJ LmlzQm9vbGVhbn0pO30sZm9jdXM6ZnVuY3Rpb24oKXtpZighdGhpcy5nZXQoImRp c2FibGVkIikpe3RoaXMuX2J1dHRvbi5mb2N1cygpO319LGJsdXI6ZnVuY3Rpb24o KXtpZighdGhpcy5nZXQoImRpc2FibGVkIikpe3RoaXMuX2J1dHRvbi5ibHVyKCk7 fX0saGFzRm9jdXM6ZnVuY3Rpb24oKXtyZXR1cm4oQz09dGhpcyk7fSxpc0FjdGl2 ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc0NsYXNzKHRoaXMuQ1NTX0NMQVNT X05BTUUrIi1hY3RpdmUiKTt9LGdldE1lbnU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy5fbWVudTt9LGdldEZvcm06ZnVuY3Rpb24oKXt2YXIgTj10aGlzLl9idXR0b24s TztpZihOKXtPPU4uZm9ybTt9cmV0dXJuIE87fSxnZXRIaWRkZW5GaWVsZHM6ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5faGlkZGVuRmllbGRzO30sZGVzdHJveTpmdW5j dGlvbigpe3ZhciBQPXRoaXMuZ2V0KCJlbGVtZW50IiksTz1QLnBhcmVudE5vZGUs Tj10aGlzLl9tZW51LFI7aWYoTil7aWYoSyYmSy5maW5kKE4pKXtLLnJlbW92ZShO KTt9Ti5kZXN0cm95KCk7fU0ucHVyZ2VFbGVtZW50KFApO00ucHVyZ2VFbGVtZW50 KHRoaXMuX2J1dHRvbik7TS5yZW1vdmVMaXN0ZW5lcihkb2N1bWVudCwibW91c2V1 cCIsdGhpcy5fb25Eb2N1bWVudE1vdXNlVXApO00ucmVtb3ZlTGlzdGVuZXIoZG9j dW1lbnQsImtleXVwIix0aGlzLl9vbkRvY3VtZW50S2V5VXApO00ucmVtb3ZlTGlz dGVuZXIoZG9jdW1lbnQsIm1vdXNlZG93biIsdGhpcy5fb25Eb2N1bWVudE1vdXNl RG93bik7dmFyIFE9dGhpcy5nZXRGb3JtKCk7aWYoUSl7TS5yZW1vdmVMaXN0ZW5l cihRLCJyZXNldCIsdGhpcy5fb25Gb3JtUmVzZXQpO00ucmVtb3ZlTGlzdGVuZXIo USwic3VibWl0Iix0aGlzLl9vbkZvcm1TdWJtaXQpO310aGlzLnVuc3Vic2NyaWJl QWxsKCk7aWYoTyl7Ty5yZW1vdmVDaGlsZChQKTt9ZGVsZXRlIERbdGhpcy5nZXQo ImlkIildO1I9Ry5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHRoaXMuQ1NTX0NMQVNT X05BTUUsdGhpcy5OT0RFX05BTUUsUSk7aWYoSS5pc0FycmF5KFIpJiZSLmxlbmd0 aD09PTApe00ucmVtb3ZlTGlzdGVuZXIoUSwia2V5cHJlc3MiLFlBSE9PLndpZGdl dC5CdXR0b24ub25Gb3JtS2V5UHJlc3MpO319LGZpcmVFdmVudDpmdW5jdGlvbihP LE4pe3ZhciBQPWFyZ3VtZW50c1swXTtpZih0aGlzLkRPTV9FVkVOVFNbUF0mJnRo aXMuZ2V0KCJkaXNhYmxlZCIpKXtyZXR1cm4gZmFsc2U7fXJldHVybiBZQUhPTy53 aWRnZXQuQnV0dG9uLnN1cGVyY2xhc3MuZmlyZUV2ZW50LmFwcGx5KHRoaXMsYXJn dW1lbnRzKTt9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuKCJCdXR0b24gIit0 aGlzLmdldCgiaWQiKSk7fX0pO1lBSE9PLndpZGdldC5CdXR0b24ub25Gb3JtS2V5 UHJlc3M9ZnVuY3Rpb24oUil7dmFyIFA9TS5nZXRUYXJnZXQoUiksUz1NLmdldENo YXJDb2RlKFIpLFE9UC5ub2RlTmFtZSYmUC5ub2RlTmFtZS50b1VwcGVyQ2FzZSgp LE49UC50eXBlLFQ9ZmFsc2UsVixYLE8sVztmdW5jdGlvbiBVKGEpe3ZhciBaLFk7 c3dpdGNoKGEubm9kZU5hbWUudG9VcHBlckNhc2UoKSl7Y2FzZSJJTlBVVCI6Y2Fz ZSJCVVRUT04iOmlmKGEudHlwZT09InN1Ym1pdCImJiFhLmRpc2FibGVkKXtpZigh VCYmIU8pe089YTt9fWJyZWFrO2RlZmF1bHQ6Wj1hLmlkO2lmKFope1Y9RFtaXTtp ZihWKXtUPXRydWU7aWYoIVYuZ2V0KCJkaXNhYmxlZCIpKXtZPVYuZ2V0KCJzcmNl bGVtZW50Iik7aWYoIVgmJihWLmdldCgidHlwZSIpPT0ic3VibWl0Inx8KFkmJlku dHlwZT09InN1Ym1pdCIpKSl7WD1WO319fX1icmVhazt9fWlmKFM9PTEzJiYoKFE9 PSJJTlBVVCImJihOPT0idGV4dCJ8fE49PSJwYXNzd29yZCJ8fE49PSJjaGVja2Jv eCJ8fE49PSJyYWRpbyJ8fE49PSJmaWxlIikpfHxRPT0iU0VMRUNUIikpe0cuZ2V0 RWxlbWVudHNCeShVLCIqIix0aGlzKTtpZihPKXtPLmZvY3VzKCk7fWVsc2V7aWYo IU8mJlgpe00ucHJldmVudERlZmF1bHQoUik7aWYoTC5pZSl7WC5nZXQoImVsZW1l bnQiKS5maXJlRXZlbnQoIm9uY2xpY2siKTt9ZWxzZXtXPWRvY3VtZW50LmNyZWF0 ZUV2ZW50KCJIVE1MRXZlbnRzIik7Vy5pbml0RXZlbnQoImNsaWNrIix0cnVlLHRy dWUpO2lmKEwuZ2Vja288MS45KXtYLmZpcmVFdmVudCgiY2xpY2siLFcpOwp9ZWxz ZXtYLmdldCgiZWxlbWVudCIpLmRpc3BhdGNoRXZlbnQoVyk7fX19fX19O1lBSE9P LndpZGdldC5CdXR0b24uYWRkSGlkZGVuRmllbGRzVG9Gb3JtPWZ1bmN0aW9uKE4p e3ZhciBTPUcuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShZQUhPTy53aWRnZXQuQnV0 dG9uLnByb3RvdHlwZS5DU1NfQ0xBU1NfTkFNRSwiKiIsTiksUT1TLmxlbmd0aCxS LE8sUDtpZihRPjApe2ZvcihQPTA7UDxRO1ArKyl7Tz1TW1BdLmlkO2lmKE8pe1I9 RFtPXTtpZihSKXtSLmNyZWF0ZUhpZGRlbkZpZWxkcygpO319fX19O1lBSE9PLndp ZGdldC5CdXR0b24uZ2V0QnV0dG9uPWZ1bmN0aW9uKE4pe3JldHVybiBEW05dO307 fSkoKTsoZnVuY3Rpb24oKXt2YXIgQz1ZQUhPTy51dGlsLkRvbSxCPVlBSE9PLnV0 aWwuRXZlbnQsRD1ZQUhPTy5sYW5nLEE9WUFIT08ud2lkZ2V0LkJ1dHRvbixFPXt9 O1lBSE9PLndpZGdldC5CdXR0b25Hcm91cD1mdW5jdGlvbihKLEgpe3ZhciBJPVlB SE9PLndpZGdldC5CdXR0b25Hcm91cC5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLEss RyxGO2lmKGFyZ3VtZW50cy5sZW5ndGg9PTEmJiFELmlzU3RyaW5nKEopJiYhSi5u b2RlTmFtZSl7aWYoIUouaWQpe0Y9Qy5nZW5lcmF0ZUlkKCk7Si5pZD1GO31JLmNh bGwodGhpcywodGhpcy5fY3JlYXRlR3JvdXBFbGVtZW50KCkpLEopO31lbHNle2lm KEQuaXNTdHJpbmcoSikpe0c9Qy5nZXQoSik7aWYoRyl7aWYoRy5ub2RlTmFtZS50 b1VwcGVyQ2FzZSgpPT10aGlzLk5PREVfTkFNRSl7SS5jYWxsKHRoaXMsRyxIKTt9 fX1lbHNle0s9Si5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpO2lmKEsmJks9PXRoaXMu Tk9ERV9OQU1FKXtpZighSi5pZCl7Si5pZD1DLmdlbmVyYXRlSWQoKTt9SS5jYWxs KHRoaXMsSixIKTt9fX19O1lBSE9PLmV4dGVuZChZQUhPTy53aWRnZXQuQnV0dG9u R3JvdXAsWUFIT08udXRpbC5FbGVtZW50LHtfYnV0dG9uczpudWxsLE5PREVfTkFN RToiRElWIixDU1NfQ0xBU1NfTkFNRToieXVpLWJ1dHRvbmdyb3VwIixfY3JlYXRl R3JvdXBFbGVtZW50OmZ1bmN0aW9uKCl7dmFyIEY9ZG9jdW1lbnQuY3JlYXRlRWxl bWVudCh0aGlzLk5PREVfTkFNRSk7cmV0dXJuIEY7fSxfc2V0RGlzYWJsZWQ6ZnVu Y3Rpb24oRyl7dmFyIEg9dGhpcy5nZXRDb3VudCgpLEY7aWYoSD4wKXtGPUgtMTtk b3t0aGlzLl9idXR0b25zW0ZdLnNldCgiZGlzYWJsZWQiLEcpO313aGlsZShGLS0p O319LF9vbktleURvd246ZnVuY3Rpb24oSyl7dmFyIEc9Qi5nZXRUYXJnZXQoSyks ST1CLmdldENoYXJDb2RlKEspLEg9Ry5wYXJlbnROb2RlLnBhcmVudE5vZGUuaWQs Sj1FW0hdLEY9LTE7aWYoST09Mzd8fEk9PTM4KXtGPShKLmluZGV4PT09MCk/KHRo aXMuX2J1dHRvbnMubGVuZ3RoLTEpOihKLmluZGV4LTEpO31lbHNle2lmKEk9PTM5 fHxJPT00MCl7Rj0oSi5pbmRleD09PSh0aGlzLl9idXR0b25zLmxlbmd0aC0xKSk/ MDooSi5pbmRleCsxKTt9fWlmKEY+LTEpe3RoaXMuY2hlY2soRik7dGhpcy5nZXRC dXR0b24oRikuZm9jdXMoKTt9fSxfb25BcHBlbmRUbzpmdW5jdGlvbihIKXt2YXIg ST10aGlzLl9idXR0b25zLEc9SS5sZW5ndGgsRjtmb3IoRj0wO0Y8RztGKyspe0lb Rl0uYXBwZW5kVG8odGhpcy5nZXQoImVsZW1lbnQiKSk7fX0sX29uQnV0dG9uQ2hl Y2tlZENoYW5nZTpmdW5jdGlvbihHLEYpe3ZhciBJPUcubmV3VmFsdWUsSD10aGlz LmdldCgiY2hlY2tlZEJ1dHRvbiIpO2lmKEkmJkghPUYpe2lmKEgpe0guc2V0KCJj aGVja2VkIixmYWxzZSx0cnVlKTt9dGhpcy5zZXQoImNoZWNrZWRCdXR0b24iLEYp O3RoaXMuc2V0KCJ2YWx1ZSIsRi5nZXQoInZhbHVlIikpO31lbHNle2lmKEgmJiFI LnNldCgiY2hlY2tlZCIpKXtILnNldCgiY2hlY2tlZCIsdHJ1ZSx0cnVlKTt9fX0s aW5pdDpmdW5jdGlvbihJLEgpe3RoaXMuX2J1dHRvbnM9W107WUFIT08ud2lkZ2V0 LkJ1dHRvbkdyb3VwLnN1cGVyY2xhc3MuaW5pdC5jYWxsKHRoaXMsSSxIKTt0aGlz LmFkZENsYXNzKHRoaXMuQ1NTX0NMQVNTX05BTUUpO3ZhciBKPXRoaXMuZ2V0RWxl bWVudHNCeUNsYXNzTmFtZSgieXVpLXJhZGlvLWJ1dHRvbiIpO2lmKEoubGVuZ3Ro PjApe3RoaXMuYWRkQnV0dG9ucyhKKTt9ZnVuY3Rpb24gRihLKXtyZXR1cm4oSy50 eXBlPT0icmFkaW8iKTt9Sj1DLmdldEVsZW1lbnRzQnkoRiwiaW5wdXQiLHRoaXMu Z2V0KCJlbGVtZW50IikpO2lmKEoubGVuZ3RoPjApe3RoaXMuYWRkQnV0dG9ucyhK KTt9dGhpcy5vbigia2V5ZG93biIsdGhpcy5fb25LZXlEb3duKTt0aGlzLm9uKCJh cHBlbmRUbyIsdGhpcy5fb25BcHBlbmRUbyk7dmFyIEc9dGhpcy5nZXQoImNvbnRh aW5lciIpO2lmKEcpe2lmKEQuaXNTdHJpbmcoRykpe0Iub25Db250ZW50UmVhZHko RyxmdW5jdGlvbigpe3RoaXMuYXBwZW5kVG8oRyk7fSxudWxsLHRoaXMpO31lbHNl e3RoaXMuYXBwZW5kVG8oRyk7fX19LGluaXRBdHRyaWJ1dGVzOmZ1bmN0aW9uKEcp e3ZhciBGPUd8fHt9O1lBSE9PLndpZGdldC5CdXR0b25Hcm91cC5zdXBlcmNsYXNz LmluaXRBdHRyaWJ1dGVzLmNhbGwodGhpcyxGKTt0aGlzLnNldEF0dHJpYnV0ZUNv bmZpZygibmFtZSIse3ZhbHVlOkYubmFtZSx2YWxpZGF0b3I6RC5pc1N0cmluZ30p O3RoaXMuc2V0QXR0cmlidXRlQ29uZmlnKCJkaXNhYmxlZCIse3ZhbHVlOihGLmRp c2FibGVkfHxmYWxzZSksdmFsaWRhdG9yOkQuaXNCb29sZWFuLG1ldGhvZDp0aGlz Ll9zZXREaXNhYmxlZH0pO3RoaXMuc2V0QXR0cmlidXRlQ29uZmlnKCJ2YWx1ZSIs e3ZhbHVlOkYudmFsdWV9KTt0aGlzLnNldEF0dHJpYnV0ZUNvbmZpZygiY29udGFp bmVyIix7dmFsdWU6Ri5jb250YWluZXIsd3JpdGVPbmNlOnRydWV9KTt0aGlzLnNl dEF0dHJpYnV0ZUNvbmZpZygiY2hlY2tlZEJ1dHRvbiIse3ZhbHVlOm51bGx9KTt9 LGFkZEJ1dHRvbjpmdW5jdGlvbihKKXt2YXIgTCxLLEcsRixILEk7aWYoSiBpbnN0 YW5jZW9mIEEmJkouZ2V0KCJ0eXBlIik9PSJyYWRpbyIpe0w9Sjt9ZWxzZXtpZigh RC5pc1N0cmluZyhKKSYmIUoubm9kZU5hbWUpe0oudHlwZT0icmFkaW8iO0w9bmV3 IEEoSik7fWVsc2V7TD1uZXcgQShKLHt0eXBlOiJyYWRpbyJ9KTt9fWlmKEwpe0Y9 dGhpcy5fYnV0dG9ucy5sZW5ndGg7SD1MLmdldCgibmFtZSIpO0k9dGhpcy5nZXQo Im5hbWUiKTtMLmluZGV4PUY7dGhpcy5fYnV0dG9uc1tGXT1MO0VbTC5nZXQoImlk IildPUw7aWYoSCE9SSl7TC5zZXQoIm5hbWUiLEkpO31pZih0aGlzLmdldCgiZGlz YWJsZWQiKSl7TC5zZXQoImRpc2FibGVkIix0cnVlKTt9aWYoTC5nZXQoImNoZWNr ZWQiKSl7dGhpcy5zZXQoImNoZWNrZWRCdXR0b24iLEwpO31LPUwuZ2V0KCJlbGVt ZW50Iik7Rz10aGlzLmdldCgiZWxlbWVudCIpO2lmKEsucGFyZW50Tm9kZSE9Ryl7 Ry5hcHBlbmRDaGlsZChLKTt9TC5vbigiY2hlY2tlZENoYW5nZSIsdGhpcy5fb25C dXR0b25DaGVja2VkQ2hhbmdlLEwsdGhpcyk7fXJldHVybiBMO30sYWRkQnV0dG9u czpmdW5jdGlvbihHKXt2YXIgSCxJLEosRjtpZihELmlzQXJyYXkoRykpe0g9Ry5s ZW5ndGg7Sj1bXTtpZihIPjApe2ZvcihGPTA7RjxIO0YrKyl7ST10aGlzLmFkZEJ1 dHRvbihHW0ZdKTtpZihJKXtKW0oubGVuZ3RoXT1JO319fX1yZXR1cm4gSjt9LHJl bW92ZUJ1dHRvbjpmdW5jdGlvbihIKXt2YXIgST10aGlzLmdldEJ1dHRvbihIKSxH LEY7aWYoSSl7dGhpcy5fYnV0dG9ucy5zcGxpY2UoSCwxKTtkZWxldGUgRVtJLmdl dCgiaWQiKV07SS5yZW1vdmVMaXN0ZW5lcigiY2hlY2tlZENoYW5nZSIsdGhpcy5f b25CdXR0b25DaGVja2VkQ2hhbmdlKTtJLmRlc3Ryb3koKTtHPXRoaXMuX2J1dHRv bnMubGVuZ3RoO2lmKEc+MCl7Rj10aGlzLl9idXR0b25zLmxlbmd0aC0xO2Rve3Ro aXMuX2J1dHRvbnNbRl0uaW5kZXg9Rjt9d2hpbGUoRi0tKTt9fX0sZ2V0QnV0dG9u OmZ1bmN0aW9uKEYpe3JldHVybiB0aGlzLl9idXR0b25zW0ZdO30sZ2V0QnV0dG9u czpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9idXR0b25zO30sZ2V0Q291bnQ6ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5fYnV0dG9ucy5sZW5ndGg7fSxmb2N1czpmdW5j dGlvbihIKXt2YXIgSSxHLEY7aWYoRC5pc051bWJlcihIKSl7ST10aGlzLl9idXR0 b25zW0hdO2lmKEkpe0kuZm9jdXMoKTt9fWVsc2V7Rz10aGlzLmdldENvdW50KCk7 Zm9yKEY9MDtGPEc7RisrKXtJPXRoaXMuX2J1dHRvbnNbRl07aWYoIUkuZ2V0KCJk aXNhYmxlZCIpKXtJLmZvY3VzKCk7YnJlYWs7fX19fSxjaGVjazpmdW5jdGlvbihG KXt2YXIgRz10aGlzLmdldEJ1dHRvbihGKTtpZihHKXtHLnNldCgiY2hlY2tlZCIs dHJ1ZSk7fX0sZGVzdHJveTpmdW5jdGlvbigpe3ZhciBJPXRoaXMuX2J1dHRvbnMu bGVuZ3RoLEg9dGhpcy5nZXQoImVsZW1lbnQiKSxGPUgucGFyZW50Tm9kZSxHO2lm KEk+MCl7Rz10aGlzLl9idXR0b25zLmxlbmd0aC0xO2Rve3RoaXMuX2J1dHRvbnNb R10uZGVzdHJveSgpO313aGlsZShHLS0pO31CLnB1cmdlRWxlbWVudChIKTtGLnJl bW92ZUNoaWxkKEgpO30sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4oIkJ1dHRv bkdyb3VwICIrdGhpcy5nZXQoImlkIikpO319KTt9KSgpO1lBSE9PLnJlZ2lzdGVy KCJidXR0b24iLFlBSE9PLndpZGdldC5CdXR0b24se3ZlcnNpb246IjIuNy4wIixi dWlsZDoiMTc5OSJ9KTt2YXIgUk5UPXt9O1JOVC5uYW1lc3BhY2U9ZnVuY3Rpb24o bmFtZSkKe3ZhciBhPWFyZ3VtZW50cyxvPW51bGwsaSxqLGQ7Zm9yKGk9MDtpPGEu bGVuZ3RoO2k9aSsxKXtkPWFbaV0uc3BsaXQoIi4iKTtvPVJOVDtmb3Ioaj0oZFsw XT09IlJOVCIpPzE6MDtqPGQubGVuZ3RoO2orKyl7b1tkW2pdXT1vW2Rbal1dfHx7 fTtvPW9bZFtqXV07fX0KcmV0dXJuIG87fTtSTlQubmFtZXNwYWNlKCJNZXNzYWdl QmFzZSIsIldpZGdldHMiLCJQcm9maWxlIiwiRXZlbnRzIik7Uk5ULldpZGdldHMu dG9Hbz0wO1JOVC5XaWRnZXRzLmNfaWQ9MDtSTlQuV2lkZ2V0cy5hX2lkPTA7Uk5U LldpZGdldHMuaV9pZD0wO1JOVC5XaWRnZXRzLnNtcnRfYXNzdD10cnVlO1JOVC5X aWRnZXRzLmZvcm09bnVsbDtSTlQuV2lkZ2V0cy5mb3JtX2Vycm9yPWZhbHNlO1JO VC5XaWRnZXRzLmVycm9yX2NvdW50PTA7Uk5ULldpZGdldHMuRm9ybUZpZWxkcz1u ZXcgQXJyYXkoKTtSTlQuV2lkZ2V0cy5jaGF0U3VibWl0PTA7Uk5ULldpZGdldHMu cGFzc3dvcmRSZXNldD0wO1JOVC5WSVNfRU5EVVNFUl9FRElUX1JXPTB4MDAwMDAw MDQ7Uk5ULlZJU19FTkRVU0VSX0RJU1BMQVk9MHgwMDAwMDAwODtSTlQuVklTX0VO RFVTRVJfRURJVF9STz0weDAwMDAwMDEwO1JOVC5FVUZfRFRfREFURT0xO1JOVC5F VUZfRFRfREFURVRJTUU9MjtSTlQuRVVGX0RUX1JBRElPPTM7Uk5ULkVVRl9EVF9T RUxFQ1Q9NDtSTlQuRVVGX0RUX0lOVD01O1JOVC5FVUZfRFRfTUVNTz02O1JOVC5F VUZfRFRfUEFTU1dPUkQ9NztSTlQuRVVGX0RUX1ZBUkNIQVI9ODtSTlQuRVVGX0RU X0hJRVJNRU5VPTk7Uk5ULkVVRl9EVF9USFJFQUQ9MTA7Uk5ULkVVRl9EVF9GQVRU QUNIPTExO1JOVC5FVUZfRFRfQ0hFQ0s9MTI7Uk5ULlRCTF9JTkNJREVOVFM9MTtS TlQuVEJMX0NPTlRBQ1RTPTI7Uk5ULlRCTF9BTlNXRVJTPTk7Uk5ULklOVF9OVUxM PS0yMTQ3NDgzNjQ3O1JOVC5BQ1RJT05fQUREPTE7Uk5ULmJhc2U2NGNoYXJhY3Rl ck1hcD0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9w cXJzdHV2d3h5ejAxMjM0NTY3ODlfLy4iO1JOVC5iYXNlNjRFbmNvZGU9ZnVuY3Rp b24oaW5wdXRTdHJpbmcpCntyZXR1cm4gUmlnaHROb3cuVGV4dC5FbmNvZGluZy5i YXNlNjRFbmNvZGUoaW5wdXRTdHJpbmcpO307Uk5ULmJhc2U2NERlY29kZT1mdW5j dGlvbihpbnB1dFN0cmluZykKe3JldHVybiBSaWdodE5vdy5UZXh0LkVuY29kaW5n LmJhc2U2NERlY29kZShpbnB1dFN0cmluZyk7fTtSTlQuZ2V0QXNjaWlQcmVmaXg9 ZnVuY3Rpb24oaW5wdXRTdHJpbmcpCntyZXR1cm4gUmlnaHROb3cuVGV4dC5FbmNv ZGluZy5nZXRBc2NpaVByZWZpeChpbnB1dFN0cmluZyk7fTtSTlQudXRmOEVuY29k ZT1mdW5jdGlvbihpbnB1dFN0cmluZykKe3JldHVybiBSaWdodE5vdy5UZXh0LkVu Y29kaW5nLnV0ZjhFbmNvZGUoaW5wdXRTdHJpbmcpO307Uk5ULnV0ZjhEZWNvZGU9 ZnVuY3Rpb24oaW5wdXRTdHJpbmcpCntyZXR1cm4gUmlnaHROb3cuVGV4dC5FbmNv ZGluZy51dGY4RGVjb2RlKGlucHV0U3RyaW5nKTt9O2Z1bmN0aW9uIEV2ZW50T2Jq ZWN0KCkKe3JldHVybiBuZXcgUmlnaHROb3cuRXZlbnQuRXZlbnRPYmplY3QoKTt9 ClJOVC5nb1RvVXJsPWZ1bmN0aW9uKHVybCxleHRlcm5hbCkKe1JpZ2h0Tm93LlVy bC5uYXZpZ2F0ZSh1cmwsZXh0ZXJuYWwpO307ZnVuY3Rpb24gaXNFbXB0eSgpCntp Zih0eXBlb2YodGhpcyk9PSJvYmplY3QiKQp7Zm9yKHZhciBwcm9wIGluIHRoaXMp CmlmKHRoaXMuaGFzT3duUHJvcGVydHkocHJvcCkpCnJldHVybiBmYWxzZTt9CnJl dHVybiB0cnVlO30KT2JqZWN0LnByb3RvdHlwZS5pc0VtcHR5PWlzRW1wdHk7ZnVu Y3Rpb24gZmFjdG9yaWFsKG4pCntpZihuPDApCnJldHVybiBudWxsO2lmKG49PTAp CnJldHVybiAxO2Vsc2UKcmV0dXJuIG4qZmFjdG9yaWFsKG4tMSk7fQpmdW5jdGlv biBmaW5kUGFyZW50Rm9ybShpZCkKe3ZhciBub2RlPWRvY3VtZW50LmdldEVsZW1l bnRCeUlkKGlkKTtpZihub2RlKQp7d2hpbGUobm9kZS5wYXJlbnROb2RlLnRhZ05h bWUhPSJCT0RZIikKe25vZGU9bm9kZS5wYXJlbnROb2RlO2lmKG5vZGUudGFnTmFt ZT09IkZPUk0iKQpyZXR1cm4gbm9kZTt9fQpyZXR1cm4gbnVsbDt9CmZ1bmN0aW9u IGlzQXJyYXkob2JqKQp7cmV0dXJuIFlBSE9PLmxhbmcuaXNBcnJheShvYmopO30K ZnVuY3Rpb24gYWR2YW5jZWRNb2RlKGRpc3BFbGVtZW50LGxpbmtFbGVtZW50LGJh c2ljVGV4dCxhZHZhbmNlZFRleHQpCntSaWdodE5vdy5VSS50b2dnbGVWaXNpYmls aXR5QW5kVGV4dChkaXNwRWxlbWVudCxsaW5rRWxlbWVudCxiYXNpY1RleHQsYWR2 YW5jZWRUZXh0KTt9CmZ1bmN0aW9uIGhpZGVTaG93KGVsZW1lbnQsaW1hZ2VJZCxl eHBhbmRUZXh0LGNvbGxhcHNlVGV4dCkKe1JpZ2h0Tm93LlVJLmhpZGVTaG93KGVs ZW1lbnQsaW1hZ2VJZCxleHBhbmRUZXh0LGNvbGxhcHNlVGV4dCk7fQpmdW5jdGlv biB1cmxQYXJtQWRkKHVybCxwYXJtX2tleSxwYXJtX3ZhbCkKe3JldHVybiBSaWdo dE5vdy5VcmwuYWRkUGFyYW1ldGVyKHVybCxwYXJtX2tleSxwYXJtX3ZhbCk7fQpm dW5jdGlvbiBnZXRVcmxQYXJtKHBhcm1fa2V5KQp7cmV0dXJuIFJpZ2h0Tm93LlVy bC5nZXRQYXJhbWV0ZXIocGFybV9rZXkpO30KZnVuY3Rpb24gdXJsUGFybURlbGV0 ZSh1cmwscGFybV9rZXkpCntyZXR1cm4gUmlnaHROb3cuVXJsLmRlbGV0ZVBhcmFt ZXRlcih1cmwscGFybV9rZXkpO30KZnVuY3Rpb24gc2VhcmNoRmlsdGVyc1RvVXJs KHVybCxmaWx0ZXJzLHJlcG9ydElkLHNlYXJjaGVzKQp7cmV0dXJuIFJpZ2h0Tm93 LlVybC5jb252ZXJ0U2VhcmNoRmlsdGVycyh1cmwsZmlsdGVycyxyZXBvcnRJZCxz ZWFyY2hlcyk7fQpmdW5jdGlvbiB0cmltQ29tbWEodmFsKQp7cmV0dXJuIFJpZ2h0 Tm93LlRleHQudHJpbUNvbW1hKHZhbCk7fQpmdW5jdGlvbiBnZXRTdWJzdHJpbmdB ZnRlcihoYXlzdGFjayxuZWVkbGUpCntSaWdodE5vdy5UZXh0LmdldFN1YnN0cmlu Z0FmdGVyKGhheXN0YWNrLG5lZWRsZSk7fQpmdW5jdGlvbiBoaWdobGlnaHRFbGVt ZW50KGNvbnRlbnQsc2VhcmNoVGVybSkKe3JldHVybiBSaWdodE5vdy5VSS5oaWdo bGlnaHRFbGVtZW50KGNvbnRlbnQsc2VhcmNoVGVybSk7fQpmdW5jdGlvbiBjbGVh ckhpZ2hsaWdodHModGV4dCkKe3JldHVybiBSaWdodE5vdy5VSS5jbGVhckhpZ2hs aWdodHModGV4dCk7fQpmdW5jdGlvbiBfY3JlYXRlQ29va2llU3RyaW5nKG5hbWUs dmFsdWUsZW5jb2RlVmFsdWUsb3B0aW9ucyl7dmFyIGxhbmc9WUFIT08ubGFuZzt2 YXIgdGV4dD1lbmNvZGVVUklDb21wb25lbnQobmFtZSkrIj0iKyhlbmNvZGVWYWx1 ZT9lbmNvZGVVUklDb21wb25lbnQodmFsdWUpOnZhbHVlKTtpZihsYW5nLmlzT2Jq ZWN0KG9wdGlvbnMpKXtpZihvcHRpb25zLmV4cGlyZXMgaW5zdGFuY2VvZiBEYXRl KXt0ZXh0Kz0iOyBleHBpcmVzPSIrb3B0aW9ucy5leHBpcmVzLnRvR01UU3RyaW5n KCk7fQppZihsYW5nLmlzU3RyaW5nKG9wdGlvbnMucGF0aCkmJm9wdGlvbnMucGF0 aCE9IiIpe3RleHQrPSI7IHBhdGg9IitvcHRpb25zLnBhdGg7fQppZihsYW5nLmlz U3RyaW5nKG9wdGlvbnMuZG9tYWluKSYmb3B0aW9ucy5kb21haW4hPSIiKXt0ZXh0 Kz0iOyBkb21haW49IitvcHRpb25zLmRvbWFpbjt9CmlmKG9wdGlvbnMuc2VjdXJl PT09dHJ1ZSl7dGV4dCs9Ijsgc2VjdXJlIjt9fQpyZXR1cm4gdGV4dDt9CmZ1bmN0 aW9uIF9wYXJzZUNvb2tpZVN0cmluZyh0ZXh0LGRlY29kZSl7dmFyIGNvb2tpZXM9 bmV3IE9iamVjdCgpO2lmKFlBSE9PLmxhbmcuaXNTdHJpbmcodGV4dCkmJnRleHQu bGVuZ3RoPjApe3ZhciBkZWNvZGVWYWx1ZT0oZGVjb2RlPT09ZmFsc2U/ZnVuY3Rp b24ocyl7cmV0dXJuIHM7fTpkZWNvZGVVUklDb21wb25lbnQpO2lmKC9bXj1dKz1b Xj07XT8oPzo7IFtePV0rPVtePV0/KT8vLnRlc3QodGV4dCkpe3ZhciBjb29raWVQ YXJ0cz10ZXh0LnNwbGl0KC87XHMvZyksY29va2llTmFtZT1udWxsLGNvb2tpZVZh bHVlPW51bGwsY29va2llTmFtZVZhbHVlPW51bGw7Zm9yKHZhciBpPTAsbGVuPWNv b2tpZVBhcnRzLmxlbmd0aDtpPGxlbjtpKyspe2Nvb2tpZU5hbWVWYWx1ZT1jb29r aWVQYXJ0c1tpXS5tYXRjaCgvKFtePV0rKT0vaSk7aWYoY29va2llTmFtZVZhbHVl IGluc3RhbmNlb2YgQXJyYXkpe3RyeXtjb29raWVOYW1lPWRlY29kZVVSSUNvbXBv bmVudChjb29raWVOYW1lVmFsdWVbMV0pO2Nvb2tpZVZhbHVlPWRlY29kZVZhbHVl KGNvb2tpZVBhcnRzW2ldLnN1YnN0cmluZyhjb29raWVOYW1lVmFsdWVbMV0ubGVu Z3RoKzEpKTt9Y2F0Y2goZXgpe319ZWxzZXtjb29raWVOYW1lPWRlY29kZVVSSUNv bXBvbmVudChjb29raWVQYXJ0c1tpXSk7Y29va2llVmFsdWU9Y29va2llTmFtZTt9 CmNvb2tpZXNbY29va2llTmFtZV09Y29va2llVmFsdWU7fX19CnJldHVybiBjb29r aWVzO30KZnVuY3Rpb24gX2dldENvb2tpZShuYW1lLGNvbnZlcnRlcil7dmFyIGxh bmc9WUFIT08ubGFuZzt2YXIgY29va2llcz1fcGFyc2VDb29raWVTdHJpbmcoZG9j dW1lbnQuY29va2llKTtpZighbGFuZy5pc1N0cmluZyhuYW1lKXx8bmFtZT09PSIi KXt0aHJvdyBuZXcgVHlwZUVycm9yKCJDb29raWUuZ2V0KCk6IENvb2tpZSBuYW1l IG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLiIpO30KaWYobGFuZy5pc1VuZGVm aW5lZChjb29raWVzW25hbWVdKSl7cmV0dXJuIG51bGw7fQppZighbGFuZy5pc0Z1 bmN0aW9uKGNvbnZlcnRlcikpe3JldHVybiBjb29raWVzW25hbWVdO31lbHNle3Jl dHVybiBjb252ZXJ0ZXIoY29va2llc1tuYW1lXSk7fX0KZnVuY3Rpb24gX3NldENv b2tpZShuYW1lLHZhbHVlLG9wdGlvbnMpe3ZhciBsYW5nPVlBSE9PLmxhbmc7aWYo IWxhbmcuaXNTdHJpbmcobmFtZSkpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkNvb2tp ZS5zZXQoKTogQ29va2llIG5hbWUgbXVzdCBiZSBhIHN0cmluZy4iKTt9CmlmKGxh bmcuaXNVbmRlZmluZWQodmFsdWUpKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJDb29r aWUuc2V0KCk6IFZhbHVlIGNhbm5vdCBiZSB1bmRlZmluZWQuIik7fQp2YXIgdGV4 dD1fY3JlYXRlQ29va2llU3RyaW5nKG5hbWUsdmFsdWUsdHJ1ZSxvcHRpb25zKTtk b2N1bWVudC5jb29raWU9dGV4dDtyZXR1cm4gdGV4dDt9CmZ1bmN0aW9uIHNldENv b2tpZShuYW1lLHZhbHVlLGV4cGlyZXMscGF0aCxkb21haW4sc2VjdXJlKQp7dmFy IG9wdGlvbnM9e3BhdGg6cGF0aCxkb21haW46ZG9tYWluLHNlY3VyZTpzZWN1cmV9 O2lmKGV4cGlyZXMpe3ZhciBleHBpcmVEYXRlPW5ldyBEYXRlKCk7ZXhwaXJlRGF0 ZS5zZXREYXRlKGV4cGlyZURhdGUuZ2V0RGF0ZSgpK2V4cGlyZXMpO29wdGlvbnMu ZXhwaXJlcz1leHBpcmVEYXRlO30KcmV0dXJuIF9zZXRDb29raWUobmFtZSx2YWx1 ZSxvcHRpb25zKTt9CmZ1bmN0aW9uIGdldENvb2tpZShuYW1lKQp7cmV0dXJuIF9n ZXRDb29raWUobmFtZSk7fQpmdW5jdGlvbiBnZXRJbnB1dEZpZWxkQnlDb2x1bW5O YW1lKG5hbWUscGFyZW50Rm9ybSkKe3JldHVybiBSaWdodE5vdy5VSS5nZXRJbnB1 dEZpZWxkQnlDb2x1bW5OYW1lKG5hbWUscGFyZW50Rm9ybSk7fQpmdW5jdGlvbiB1 cmlUb0Fzc29jKHNlZ21lbnQpCntyZXR1cm4gUmlnaHROb3cuVXJsLmNvbnZlcnRU b0FycmF5KHNlZ21lbnQpO30KZnVuY3Rpb24gc3Vic2NyaWJlT25jZShub2Rlcyxl dmVudE5hbWUsaGFuZGxlcikKe3ZhciByZXN1bHQ9dHJ1ZTtpZihZQUhPTy5sYW5n LmlzQXJyYXkobm9kZXMpfHxZQUhPTy5sYW5nLmlzT2JqZWN0KG5vZGVzKSkKe2Zv cih2YXIgaT0wO2k8bm9kZXMubGVuZ3RoO2krKykKcmVzdWx0PXN1YnNjcmliZU9u Y2VIZWxwZXIobm9kZXNbaV0sZXZlbnROYW1lLGhhbmRsZXIpJiZyZXN1bHQ7fQpl bHNlCntyZXN1bHQ9c3Vic2NyaWJlT25jZUhlbHBlcihub2RlcyxldmVudE5hbWUs aGFuZGxlcik7fQpyZXR1cm4gcmVzdWx0O30KZnVuY3Rpb24gc3Vic2NyaWJlT25j ZUhlbHBlcihub2RlLGV2ZW50TmFtZSxoYW5kbGVyKQp7dmFyIGxpc3RlbmVycz1Z QUhPTy51dGlsLkV2ZW50LmdldExpc3RlbmVycyhub2RlLGV2ZW50TmFtZSk7dmFy IGNhbkFkZD10cnVlO3ZhciByZXN1bHQ9dHJ1ZTtpZihsaXN0ZW5lcnMpCnt2YXIg aj0wO3doaWxlKGo8bGlzdGVuZXJzLmxlbmd0aCYmY2FuQWRkKQp7aWYobGlzdGVu ZXJzW2pdLmZuPT1oYW5kbGVyKQpjYW5BZGQ9ZmFsc2U7aisrO319CmlmKGNhbkFk ZCkKcmVzdWx0PVlBSE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVuZXIobm9kZSxldmVu dE5hbWUsaGFuZGxlcik7cmV0dXJuIHJlc3VsdDt9CnZhciBkaWFsb2dCdXR0b25O YW1lPSJybl9kbGdfYnRuXyI7dmFyIGRpYWxvZ0NvdW50PTA7ZnVuY3Rpb24gYWN0 aW9uRGlhbG9nKHRpdGxlLGVsZW1lbnQsYnV0dG9ucyx3aWR0aCkKe2lmKCghKHRp dGxlKSl8fCghKGVsZW1lbnQpKXx8KCEoYnV0dG9ucykpKQpyZXR1cm4gbnVsbDtZ QUhPTy5uYW1lc3BhY2UoJ3dpZGdldC5hY3Rpb25EaWFsb2cnKTtkaWFsb2dDb3Vu dCsrO3ZhciBlbGVtZW50TmFtZT0ncm5EaWFsb2cnK2RpYWxvZ0NvdW50O1lBSE9P LndpZGdldC5hY3Rpb25EaWFsb2cuZGlhbG9nPW5ldyBZQUhPTy53aWRnZXQuU2lt cGxlRGlhbG9nKGVsZW1lbnROYW1lLHt2aXNpYmxlOmZhbHNlLHpJbmRleDo5OTk5 LGNsb3NlOnRydWUsZHJhZ2dhYmxlOmZhbHNlLGZpeGVkY2VudGVyOnRydWUsbW9k YWw6dHJ1ZSxwb3NpdGlvbjonYWJzb2x1dGUnLGNvbnN0cmFpbnRvdmlld3BvcnQ6 dHJ1ZSx1bmRlcmxheTonc2hhZG93J30pO1lBSE9PLndpZGdldC5hY3Rpb25EaWFs b2cuZGlhbG9nLmRpYWxvZ051bWJlcj1kaWFsb2dDb3VudDtZQUhPTy53aWRnZXQu YWN0aW9uRGlhbG9nLmRpYWxvZy5zZXRIZWFkZXIoIjxkaXYgY2xhc3M9J3RsJz48 L2Rpdj48c3BhbiBjbGFzcz0nRGlhbG9nSGVhZGVyJz4iK3RpdGxlKyI8L3NwYW4+ PGRpdiBjbGFzcz0ndHInPjwvZGl2PiIpO1lBSE9PLndpZGdldC5hY3Rpb25EaWFs b2cuZGlhbG9nLnNldEJvZHkoZWxlbWVudCk7WUFIT08ud2lkZ2V0LmFjdGlvbkRp YWxvZy5kaWFsb2cuc2V0Rm9vdGVyKCc8ZGl2IGNsYXNzPSJibCI+PC9kaXY+IDxz cGFuIGlkPSJybl9kbGdfYnV0dG9ucyI+PC9zcGFuPjxkaXYgY2xhc3M9ImJyIj48 L2Rpdj4nKTtpZih3aWR0aCkKWUFIT08ud2lkZ2V0LmFjdGlvbkRpYWxvZy5kaWFs b2cuY2ZnLnF1ZXVlUHJvcGVydHkoJ3dpZHRoJyx3aWR0aCk7WUFIT08ud2lkZ2V0 LmFjdGlvbkRpYWxvZy5kaWFsb2cucmVuZGVyKGRvY3VtZW50LmJvZHkpO1lBSE9P LndpZGdldC5hY3Rpb25EaWFsb2cuZGlhbG9nLmNsb3NlLmlubmVySFRNTD0iIjt2 YXIgZGlhbG9nQnV0dG9uUHJlZml4PWRpYWxvZ0J1dHRvbk5hbWUrZGlhbG9nQ291 bnQ7dmFyIGJ1dHRvbkFycmF5PW5ldyBBcnJheSgpO2Zvcih2YXIgaT0wO2k8YnV0 dG9ucy5sZW5ndGg7aSsrKQp7YnV0dG9uQXJyYXlbaV09bmV3IFlBSE9PLndpZGdl dC5CdXR0b24oe2lkOmRpYWxvZ0J1dHRvblByZWZpeCsnXycraSx0eXBlOiJidXR0 b24iLGxhYmVsOmJ1dHRvbnNbaV0udGV4dCxjb250YWluZXI6InJuX2RsZ19idXR0 b25zIn0pO2lmKGJ1dHRvbnNbaV0uaGFuZGxlcil7YnV0dG9uQXJyYXlbaV0uYWRk TGlzdGVuZXIoJ2NsaWNrJyxidXR0b25zW2ldLmhhbmRsZXIpO319CmlmKFlBSE9P LndpZGdldC5hY3Rpb25EaWFsb2cuZGlhbG9nLmJyaW5nVG9Ub3ApCllBSE9PLndp ZGdldC5hY3Rpb25EaWFsb2cuZGlhbG9nLmJyaW5nVG9Ub3AoKTtZQUhPTy51dGls LkRvbS5hZGRDbGFzcyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50TmFt ZSksJ3JuX2RpYWxvZycpO3JldHVybiBZQUhPTy53aWRnZXQuYWN0aW9uRGlhbG9n LmRpYWxvZzt9CmZ1bmN0aW9uIGRpc2FibGVEaWFsb2dCdXR0b25zKGRpYWxvZ19p ZCkKe3ZhciBkaWFsb2dCdXR0b25QcmVmaXg9ZGlhbG9nQnV0dG9uTmFtZStkaWFs b2dfaWQ7dmFyIHN1Ym1pdEJ1dHRvbj1ZQUhPTy53aWRnZXQuQnV0dG9uLmdldEJ1 dHRvbihkaWFsb2dCdXR0b25QcmVmaXgrJ18wJyk7aWYoc3VibWl0QnV0dG9uKQpz dWJtaXRCdXR0b24uc2V0KCJkaXNhYmxlZCIsdHJ1ZSk7dmFyIGNhbmNlbEJ1dHRv bj1ZQUhPTy53aWRnZXQuQnV0dG9uLmdldEJ1dHRvbihkaWFsb2dCdXR0b25QcmVm aXgrJ18xJyk7aWYoY2FuY2VsQnV0dG9uKQpjYW5jZWxCdXR0b24uc2V0KCJkaXNh YmxlZCIsdHJ1ZSk7fQpmdW5jdGlvbiBkaXNhYmxlRGlhbG9nU3VibWl0QnV0dG9u KGRpYWxvZ19pZCkKe3ZhciBkaWFsb2dCdXR0b25QcmVmaXg9ZGlhbG9nQnV0dG9u TmFtZStkaWFsb2dfaWQ7dmFyIHN1Ym1pdEJ1dHRvbj1ZQUhPTy53aWRnZXQuQnV0 dG9uLmdldEJ1dHRvbihkaWFsb2dCdXR0b25QcmVmaXgrJ18wJyk7aWYoc3VibWl0 QnV0dG9uKQpzdWJtaXRCdXR0b24uc2V0KCJkaXNhYmxlZCIsdHJ1ZSk7fQpmdW5j dGlvbiBlbmFibGVEaWFsb2dCdXR0b25zKGRpYWxvZ19pZCkKe3ZhciBkaWFsb2dC dXR0b25QcmVmaXg9ZGlhbG9nQnV0dG9uTmFtZStkaWFsb2dfaWQ7dmFyIHN1Ym1p dEJ1dHRvbj1ZQUhPTy53aWRnZXQuQnV0dG9uLmdldEJ1dHRvbihkaWFsb2dCdXR0 b25QcmVmaXgrJ18wJyk7aWYoc3VibWl0QnV0dG9uKQpzdWJtaXRCdXR0b24uc2V0 KCJkaXNhYmxlZCIsZmFsc2UpO3ZhciBjYW5jZWxCdXR0b249WUFIT08ud2lkZ2V0 LkJ1dHRvbi5nZXRCdXR0b24oZGlhbG9nQnV0dG9uUHJlZml4KydfMScpO2lmKGNh bmNlbEJ1dHRvbikKY2FuY2VsQnV0dG9uLnNldCgiZGlzYWJsZWQiLGZhbHNlKTt9 CmZ1bmN0aW9uIGFkZERpYWxvZ0VudGVyS2V5TGlzdGVuZXIoZGlhbG9nLGZ1bmN0 aW9uTmFtZSkKe2lmKCghKGRpYWxvZykpfHwoIShmdW5jdGlvbk5hbWUpKSkKcmV0 dXJuIG51bGw7dmFyIGtleUxpc3RlbmVyPW5ldyBZQUhPTy51dGlsLktleUxpc3Rl bmVyKGRvY3VtZW50LHtrZXlzOjEzfSx7Zm46ZnVuY3Rpb25OYW1lLHNjb3BlOmRp YWxvZyxjb3JyZWN0U2NvcGU6dHJ1ZX0pO2RpYWxvZy5jZmcuc2V0UHJvcGVydHko ImtleWxpc3RlbmVycyIsa2V5TGlzdGVuZXIpO3JldHVybiBrZXlMaXN0ZW5lcjt9 CmZ1bmN0aW9uIGRpc2FibGVEaWFsb2dLZXlMaXN0ZW5lcihkaWFsb2csa2V5TGlz dGVuZXIpCntpZigoIShkaWFsb2cpKXx8KCEoa2V5TGlzdGVuZXIpKSkKcmV0dXJu IG51bGw7ZGlhbG9nLmNmZy5zZXRQcm9wZXJ0eSgia2V5bGlzdGVuZXJzIixudWxs KTtrZXlMaXN0ZW5lci5kaXNhYmxlKCk7fQpmdW5jdGlvbiBlbmFibGVEaWFsb2dL ZXlMaXN0ZW5lcihkaWFsb2csa2V5TGlzdGVuZXIpCntpZigoIShkaWFsb2cpKXx8 KCEoa2V5TGlzdGVuZXIpKSkKcmV0dXJuIG51bGw7ZGlhbG9nLmNmZy5zZXRQcm9w ZXJ0eSgia2V5bGlzdGVuZXJzIixrZXlMaXN0ZW5lcik7a2V5TGlzdGVuZXIuZW5h YmxlKCk7fQpmdW5jdGlvbiBkaXNhYmxlRGlhbG9nQ29udHJvbHMoZGlhbG9nLGtl eUxpc3RlbmVyKQp7ZGlzYWJsZURpYWxvZ0tleUxpc3RlbmVyKGRpYWxvZyxrZXlM aXN0ZW5lcik7ZGlzYWJsZURpYWxvZ0J1dHRvbnMoZGlhbG9nLmRpYWxvZ051bWJl cik7fQpmdW5jdGlvbiBkaXNhYmxlRGlhbG9nU3VibWl0Q29udHJvbHMoZGlhbG9n LGtleUxpc3RlbmVyKQp7ZGlzYWJsZURpYWxvZ0tleUxpc3RlbmVyKGRpYWxvZyxr ZXlMaXN0ZW5lcik7ZGlzYWJsZURpYWxvZ1N1Ym1pdEJ1dHRvbihkaWFsb2cuaWQu dG9TdHJpbmcoKSk7fQpmdW5jdGlvbiBlbmFibGVEaWFsb2dDb250cm9scyhkaWFs b2csa2V5TGlzdGVuZXIsZm9jdXNFbGVtZW50KQp7ZW5hYmxlRGlhbG9nS2V5TGlz dGVuZXIoZGlhbG9nLGtleUxpc3RlbmVyKTtlbmFibGVEaWFsb2dCdXR0b25zKGRp YWxvZy5kaWFsb2dOdW1iZXIpO2lmKGZvY3VzRWxlbWVudCl7Zm9jdXNFbGVtZW50 LmZvY3VzKCk7fX0KZnVuY3Rpb24gbWVzc2FnZURpYWxvZyh0aXRsZSxtZXNzYWdl LGljb24sZXhpdENhbGxiYWNrLGZvY3VzRWxlbWVudCkKe1lBSE9PLm5hbWVzcGFj ZSgnd2lkZ2V0LmFsZXJ0Jyk7ZnVuY3Rpb24gaGFuZGxlT2soKQp7WUFIT08ud2lk Z2V0LmFsZXJ0LmRsZy5kZXN0cm95KCk7aWYoZXhpdENhbGxiYWNrKXtpZihmb2N1 c0VsZW1lbnQpe2V4aXRDYWxsYmFjayhmb2N1c0VsZW1lbnQpO30KZWxzZQpleGl0 Q2FsbGJhY2soKTt9fQpmdW5jdGlvbiBmb2N1c0ZpcnN0QnV0dG9uKCkKe2lmKGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJybl9kbGdfYnV0dG9ucyIpKQp7dmFyIG9r QnRuTmFtZT1kaWFsb2dCdXR0b25OYW1lK1lBSE9PLndpZGdldC5hbGVydC5kbGcu ZGlhbG9nTnVtYmVyKydfMCc7dmFyIG15T0tCdXR0b249WUFIT08ud2lkZ2V0LkJ1 dHRvbi5nZXRCdXR0b24ob2tCdG5OYW1lKTtpZihteU9LQnV0dG9uKQpteU9LQnV0 dG9uLmZvY3VzKCk7fQplbHNlCnthbGVydCgiQ29udGVudCBub3QgcmVhZHkiKTt9 fQpidXR0b25zPVt7dGV4dDpSTlQuTWVzc2FnZUJhc2UuT0ssaGFuZGxlcjpoYW5k bGVPayxpc0RlZmF1bHQ6dHJ1ZX1dO3ZhciB0aXRsZVN0cj10aXRsZTtzd2l0Y2go aWNvbikKe2Nhc2UiSEVMUCI6dmFyIGljb249WUFIT08ud2lkZ2V0LlNpbXBsZURp YWxvZy5JQ09OX0hFTFA7YnJlYWs7Y2FzZSJJTkZPIjp2YXIgaWNvbj1ZQUhPTy53 aWRnZXQuU2ltcGxlRGlhbG9nLklDT05fSU5GTzticmVhaztjYXNlIldBUk4iOnZh ciBpY29uPVlBSE9PLndpZGdldC5TaW1wbGVEaWFsb2cuSUNPTl9XQVJOO2JyZWFr O2RlZmF1bHQ6YnJlYWs7fQpZQUhPTy53aWRnZXQuYWxlcnQuZGxnPWFjdGlvbkRp YWxvZyh0aXRsZVN0cixkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSxi dXR0b25zKTtpZihZQUhPTy53aWRnZXQuYWxlcnQuZGxnLmJyaW5nVG9Ub3ApCllB SE9PLndpZGdldC5hbGVydC5kbGcuYnJpbmdUb1RvcCgpO2lmKGljb24pCllBSE9P LndpZGdldC5hbGVydC5kbGcuY2ZnLnF1ZXVlUHJvcGVydHkoJ2ljb24nLGljb24p O1lBSE9PLndpZGdldC5hbGVydC5kbGcuY2ZnLnF1ZXVlUHJvcGVydHkoJ3dpZHRo JywnMjBlbScpO1lBSE9PLndpZGdldC5hbGVydC5kbGcuY2ZnLnF1ZXVlUHJvcGVy dHkoJ2ZpeGVkY2VudGVyJyx0cnVlKTtZQUhPTy53aWRnZXQuYWxlcnQuZGxnLmNm Zy5zZXRQcm9wZXJ0eSgncm9sZScsJ2FsZXJ0ZGlhbG9nJyk7dmFyIG1zZ0RsZ0sx PW5ldyBZQUhPTy51dGlsLktleUxpc3RlbmVyKGRvY3VtZW50LHtrZXlzOjEzfSx7 Zm46aGFuZGxlT2ssc2NvcGU6WUFIT08ud2lkZ2V0LmFsZXJ0LmRsZyxjb3JyZWN0 U2NvcGU6dHJ1ZX0pO1lBSE9PLndpZGdldC5hbGVydC5kbGcuY2ZnLnF1ZXVlUHJv cGVydHkoImtleWxpc3RlbmVycyIsbXNnRGxnSzEpO1lBSE9PLndpZGdldC5hbGVy dC5kbGcuaGlkZUV2ZW50LnN1YnNjcmliZShoYW5kbGVPayk7WUFIT08udXRpbC5F dmVudC5vbkNvbnRlbnRSZWFkeShZQUhPTy53aWRnZXQuYWxlcnQuZGxnLmlkLGZv Y3VzRmlyc3RCdXR0b24sdGhpcyk7WUFIT08ud2lkZ2V0LmFsZXJ0LmRsZy5yZW5k ZXIoKTtZQUhPTy53aWRnZXQuYWxlcnQuZGxnLnNob3coKTtyZXR1cm4gWUFIT08u d2lkZ2V0LmFsZXJ0LmRsZzt9CmZ1bmN0aW9uIHVwZGF0ZVRpbWVyKGlkLHRpbWVy LHN1Yl9sYWJlbCkKe3RpbWVyLS07aWYodGltZXI9PTApCmRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKGlkKS52YWx1ZT1zdWJfbGFiZWw7ZWxzZQp7ZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoaWQpLnZhbHVlPXRpbWVyO3NldFRpbWVvdXQoInVwZGF0ZVRp bWVyKCciK2lkKyInLCIrdGltZXIrIiwnIitzdWJfbGFiZWwrIicpIiwxMDAwKTt9 fQpmdW5jdGlvbiB1cGRhdGVUaW1lcjIoaWQsdGltZXIpCnt2YXIgdGltZXJFbGVt ZW50PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtpZih0aW1lckVsZW1lbnQp e3RpbWVyLS07aWYodGltZXI9PTApe3RpbWVyRWxlbWVudC5pbm5lckhUTUw9IiI7 fQplbHNlCnt0aW1lckVsZW1lbnQuaW5uZXJIVE1MPXRpbWVyKycnO3NldFRpbWVv dXQoInVwZGF0ZVRpbWVyMignIitpZCsiJywiK3RpbWVyKyIpIiwxMDAwKTt9fX0K dmFyIGdsb2JhbERpYWxvZz1udWxsO3ZhciBnbG9iYWxLZXlMaXN0ZW5lcj1udWxs O3ZhciBnbG9iYWxFcnJvckVsZW1lbnQ9bnVsbDtmdW5jdGlvbiByZXNldENvbnRy b2xzQW5kVGV4dChkaWFsb2csa2V5TGlzdGVuZXIsZXJyb3JFbGVtZW50KQp7aWYo KCEoZGlhbG9nKSl8fCghKGtleUxpc3RlbmVyKSl8fCghKGVycm9yRWxlbWVudCkp KQpyZXR1cm4gbnVsbDtlbmFibGVEaWFsb2dDb250cm9scyhkaWFsb2csa2V5TGlz dGVuZXIpO2Vycm9yRWxlbWVudC5pbm5lckhUTUw9Jyc7fQpmdW5jdGlvbiBhbGVy dERpYWxvZyhtZXNzYWdlLGljb24pCntZQUhPTy5uYW1lc3BhY2UoJ3dpZGdldC5h bGVydCcpO3RoaXMuaGFuZGxlT2s9ZnVuY3Rpb24oKQp7WUFIT08ud2lkZ2V0LmFs ZXJ0LmRsZy5oaWRlKCk7fTtidXR0b25zPVt7dGV4dDonT2snLGhhbmRsZXI6aGFu ZGxlT2ssaXNEZWZhdWx0OnRydWV9XTtZQUhPTy53aWRnZXQuYWxlcnQuZGxnPW5l dyBZQUhPTy53aWRnZXQuU2ltcGxlRGlhbG9nKCd3aWRnZXRfYWxlcnQnLHtidXR0 b25zOmJ1dHRvbnMsdmlzaWJsZTpmYWxzZSx3aWR0aDonMjBlbScsekluZGV4Ojk5 OTksY2xvc2U6dHJ1ZSxmaXhlZGNlbnRlcjp0cnVlLG1vZGFsOmZhbHNlLGRyYWdn YWJsZTpmYWxzZSxjb25zdHJhaW50b3ZpZXdwb3J0OnRydWV9KTtZQUhPTy53aWRn ZXQuYWxlcnQuZGxnLnNldEJvZHkobWVzc2FnZSk7c3dpdGNoKGljb24pCntjYXNl IkhFTFAiOllBSE9PLndpZGdldC5hbGVydC5kbGcuY2ZnLnF1ZXVlUHJvcGVydHko J2ljb24nLFlBSE9PLndpZGdldC5TaW1wbGVEaWFsb2cuSUNPTl9IRUxQKTtZQUhP Ty53aWRnZXQuYWxlcnQuZGxnLnNldEhlYWRlcihSTlQuTWVzc2FnZUJhc2UuSEVM UCk7YnJlYWs7Y2FzZSJJTkZPIjpZQUhPTy53aWRnZXQuYWxlcnQuZGxnLmNmZy5x dWV1ZVByb3BlcnR5KCdpY29uJyxZQUhPTy53aWRnZXQuU2ltcGxlRGlhbG9nLklD T05fSU5GTyk7WUFIT08ud2lkZ2V0LmFsZXJ0LmRsZy5zZXRIZWFkZXIoUk5ULk1l c3NhZ2VCYXNlLklORk8pO2JyZWFrO2RlZmF1bHQ6WUFIT08ud2lkZ2V0LmFsZXJ0 LmRsZy5jZmcucXVldWVQcm9wZXJ0eSgnaWNvbicsWUFIT08ud2lkZ2V0LlNpbXBs ZURpYWxvZy5JQ09OX1dBUk4pO1lBSE9PLndpZGdldC5hbGVydC5kbGcuc2V0SGVh ZGVyKFJOVC5NZXNzYWdlQmFzZS5XQVJOKTt9CllBSE9PLndpZGdldC5hbGVydC5k bGcuY2ZnLnF1ZXVlUHJvcGVydHkoJ3pJbmRleCcsOTk5OSk7WUFIT08ud2lkZ2V0 LmFsZXJ0LmRsZy5yZW5kZXIoZG9jdW1lbnQuYm9keSk7aWYoWUFIT08ud2lkZ2V0 LmFsZXJ0LmRsZy5icmluZ1RvVG9wKQpZQUhPTy53aWRnZXQuYWxlcnQuZGxnLmJy aW5nVG9Ub3AoKTtZQUhPTy53aWRnZXQuYWxlcnQuZGxnLnNob3coKTt9CmZ1bmN0 aW9uIHRleHREaWFsb2cobWVzc2FnZSxidXR0b25zLGljb24pCnt2YXIgZGxnPW5l dyBZQUhPTy53aWRnZXQuU2ltcGxlRGlhbG9nKCd3aWRnZXRfYWxlcnQnLHtidXR0 b25zOmJ1dHRvbnMsdmlzaWJsZTpmYWxzZSx3aWR0aDonMjBlbScsekluZGV4Ojk5 OTksY2xvc2U6dHJ1ZSxmaXhlZGNlbnRlcjpmYWxzZSxtb2RhbDp0cnVlLGRyYWdn YWJsZTpmYWxzZSxjb25zdHJhaW50b3ZpZXdwb3J0OnRydWV9KTtkbGcuc2V0Qm9k eShtZXNzYWdlKTtzd2l0Y2goaWNvbikKe2Nhc2UiSEVMUCI6ZGxnLmNmZy5xdWV1 ZVByb3BlcnR5KCdpY29uJyxZQUhPTy53aWRnZXQuU2ltcGxlRGlhbG9nLklDT05f SEVMUCk7ZGxnLnNldEhlYWRlcihSTlQuTWVzc2FnZUJhc2UuSEVMUCk7YnJlYWs7 Y2FzZSJJTkZPIjpkbGcuY2ZnLnF1ZXVlUHJvcGVydHkoJ2ljb24nLFlBSE9PLndp ZGdldC5TaW1wbGVEaWFsb2cuSUNPTl9JTkZPKTtkbGcuc2V0SGVhZGVyKFJOVC5N ZXNzYWdlQmFzZS5JTkZPKTticmVhaztkZWZhdWx0OmRsZy5jZmcucXVldWVQcm9w ZXJ0eSgnaWNvbicsWUFIT08ud2lkZ2V0LlNpbXBsZURpYWxvZy5JQ09OX1dBUk4p O2RsZy5zZXRIZWFkZXIoUk5ULk1lc3NhZ2VCYXNlLldBUk4pO30KZGxnLmNmZy5x dWV1ZVByb3BlcnR5KCd6SW5kZXgnLDk5OTkpO2RsZy5yZW5kZXIoZG9jdW1lbnQu Ym9keSk7aWYoZGxnLmJyaW5nVG9Ub3ApCmRsZy5icmluZ1RvVG9wKCk7cmV0dXJu IGRsZzt9CmZ1bmN0aW9uIGFkdmFuY2VkX21vZGUoKQp7aWYoZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoImFkdnNlYXJjaCIpLnN0eWxlLmRpc3BsYXk9PSJub25lIikK e2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhZHZzZWFyY2giKS5zdHlsZS5kaXNw bGF5PSJibG9jayI7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFkdl9vcGVuIiku aW5uZXJIVE1MPSIjcm46bXNnOkJBU0lDX1NFQVJDSF9MQkwjIjt9CmVsc2UgaWYo ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFkdnNlYXJjaCIpLnN0eWxlLmRpc3Bs YXk9PSJibG9jayIpCntkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWR2c2VhcmNo Iikuc3R5bGUuZGlzcGxheT0ibm9uZSI7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo ImFkdl9vcGVuIikuaW5uZXJIVE1MPSIjcm46bXNnOkFEVkFOQ0VEX1NFQVJDSF9M QkwjIjt9fQpmdW5jdGlvbiBsZW5ndGhXaXRob3V0U3BhY2VzKHN0cmluZykKe3N0 cmluZz1zdHJpbmcucmVwbGFjZSgvXlxzK3xccyskL2csJycpO3JldHVybihzdHJp bmcubGVuZ3RoKTt9CmlmKCFPYmplY3QucHJvdG90eXBlLnRvSlNPTlN0cmluZyl7 QXJyYXkucHJvdG90eXBlLnRvSlNPTlN0cmluZz1mdW5jdGlvbigpe3ZhciBhPVsi WyJdLGIsaSxsPXRoaXMubGVuZ3RoLHY7ZnVuY3Rpb24gcChzKXtpZihiKXthLnB1 c2goIiwiKTt9CmEucHVzaChzKTtiPXRydWU7fQpmb3IoaT0wO2k8bDtpKz0xKXt2 PXRoaXNbaV07c3dpdGNoKHR5cGVvZiB2KXtjYXNlIm9iamVjdCI6aWYodil7aWYo dHlwZW9mIHYudG9KU09OU3RyaW5nPT09ImZ1bmN0aW9uIil7cCh2LnRvSlNPTlN0 cmluZygpKTt9fWVsc2V7cCgibnVsbCIpO30KYnJlYWs7Y2FzZSJzdHJpbmciOmNh c2UibnVtYmVyIjpjYXNlImJvb2xlYW4iOnAodi50b0pTT05TdHJpbmcoKSk7fX0K YS5wdXNoKCJdIik7cmV0dXJuIGEuam9pbigiIik7fTtCb29sZWFuLnByb3RvdHlw ZS50b0pTT05TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKHRoaXMpO307 RGF0ZS5wcm90b3R5cGUudG9KU09OU3RyaW5nPWZ1bmN0aW9uKCl7ZnVuY3Rpb24g ZihuKXtyZXR1cm4gbjwxMD8iMCIrbjpuO30KcmV0dXJuIlwiIit0aGlzLmdldEZ1 bGxZZWFyKCkrIi0iK2YodGhpcy5nZXRNb250aCgpKzEpKyItIitmKHRoaXMuZ2V0 RGF0ZSgpKSsiVCIrZih0aGlzLmdldEhvdXJzKCkpKyI6IitmKHRoaXMuZ2V0TWlu dXRlcygpKSsiOiIrZih0aGlzLmdldFNlY29uZHMoKSkrIlwiIjt9O051bWJlci5w cm90b3R5cGUudG9KU09OU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGlzRmluaXRl KHRoaXMpP1N0cmluZyh0aGlzKToibnVsbCI7fTtPYmplY3QucHJvdG90eXBlLnRv SlNPTlN0cmluZz1mdW5jdGlvbigpe3ZhciBhPVsieyJdLGIsayx2O2Z1bmN0aW9u IHAocyl7aWYoYil7YS5wdXNoKCIsIik7fQphLnB1c2goay50b0pTT05TdHJpbmco KSwiOiIscyk7Yj10cnVlO30KZm9yKGsgaW4gdGhpcyl7aWYodGhpcy5oYXNPd25Q cm9wZXJ0eShrKSl7dj10aGlzW2tdO3N3aXRjaCh0eXBlb2Ygdil7Y2FzZSJvYmpl Y3QiOmlmKHYpe2lmKHR5cGVvZiB2LnRvSlNPTlN0cmluZz09PSJmdW5jdGlvbiIp e3Aodi50b0pTT05TdHJpbmcoKSk7fX1lbHNle3AoIm51bGwiKTt9CmJyZWFrO2Nh c2Uic3RyaW5nIjpjYXNlIm51bWJlciI6Y2FzZSJib29sZWFuIjpwKHYudG9KU09O U3RyaW5nKCkpO319fQphLnB1c2goIn0iKTtyZXR1cm4gYS5qb2luKCIiKTt9Oyhm dW5jdGlvbihzKXt2YXIgbT17IlxiIjoiXFxiIiwiXHQiOiJcXHQiLCJcbiI6Ilxc biIsIlxmIjoiXFxmIiwiXHIiOiJcXHIiLCJcIiI6IlxcXCIiLCJcXCI6IlxcXFwi fTtzLnBhcnNlSlNPTj1mdW5jdGlvbihfOCl7dmFyIGo7ZnVuY3Rpb24gd2Fsayhr LHYpe3ZhciBpO2lmKHYmJnR5cGVvZiB2PT09Im9iamVjdCIpe2ZvcihpIGluIHYp e2lmKHYuaGFzT3duUHJvcGVydHkoaSkpe3ZbaV09d2FsayhpLHZbaV0pO319fQpy ZXR1cm4gXzgoayx2KTt9CmlmKC9eKCIoXFwufFteIlxcXG5ccl0pKj8ifFssOnt9 XFtcXTAtOS5cLStFYWVmbG5yLXUgXG5cclx0XSkrPyQvLnRlc3QodGhpcykpe3Ry eXtqPWV2YWwoIigiK3RoaXMrIikiKTt9CmNhdGNoKGUpe3JldHVybiBmYWxzZTt9 fWVsc2V7cmV0dXJuIGZhbHNlO30KaWYodHlwZW9mIF84PT09ImZ1bmN0aW9uIil7 aj13YWxrKCIiLGopO30KcmV0dXJuIGo7fTtzLnRvSlNPTlN0cmluZz1mdW5jdGlv bigpe2lmKC9bIlxcXHgwMC1ceDFmXS8udGVzdCh0aGlzKSl7cmV0dXJuIlwiIit0 aGlzLnJlcGxhY2UoLyhbXHgwMC1ceDFmXFwiXSkvZyxmdW5jdGlvbihhLGIpe3Zh ciBjPW1bYl07aWYoYyl7cmV0dXJuIGM7fQpjPWIuY2hhckNvZGVBdCgpO3JldHVy biJcXHUwMCIrTWF0aC5mbG9vcihjLzE2KS50b1N0cmluZygxNikrKGMlMTYpLnRv U3RyaW5nKDE2KTt9KSsiXCIiO30KcmV0dXJuIlwiIit0aGlzKyJcIiI7fTt9KShT dHJpbmcucHJvdG90eXBlKTt9aWYodHlwZW9mIFJOVD09PSJ1bmRlZmluZWQifHx0 eXBlb2YgUk5UIT09Im9iamVjdCIpe3ZhciBSTlQ9e307Uk5ULkV2ZW50cz17fTt9 CnZhciBvbl9iZWZvcmVfYWpheF9yZXF1ZXN0PW5ldyBZQUhPTy51dGlsLkN1c3Rv bUV2ZW50KCJvbl9iZWZvcmVfYWpheF9yZXF1ZXN0Iik7dmFyIGV2dF9zb3J0X3R5 cGVfcmVxdWVzdD1uZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgiZXZ0X3NvcnRf dHlwZV9yZXF1ZXN0Iik7dmFyIGV2dF9zb3J0X3R5cGVfdXBkYXRlPW5ldyBZQUhP Ty51dGlsLkN1c3RvbUV2ZW50KCJldnRfc29ydF90eXBlX3VwZGF0ZSIpO3ZhciBl dnRfb3JnX3R5cGVfcmVxdWVzdD1uZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgi ZXZ0X29yZ190eXBlX3JlcXVlc3QiKTt2YXIgZXZ0X29yZ190eXBlX3VwZGF0ZT1u ZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgiZXZ0X29yZ190eXBlX3VwZGF0ZSIp O3ZhciBldnRfa2V5d29yZF9jaGFuZ2VkX3JlcXVlc3Q9bmV3IFlBSE9PLnV0aWwu Q3VzdG9tRXZlbnQoImV2dF9rZXl3b3JkX2NoYW5nZWRfcmVxdWVzdCIpO3ZhciBl dnRfa2V5d29yZF9jaGFuZ2VkX3VwZGF0ZT1uZXcgWUFIT08udXRpbC5DdXN0b21F dmVudCgiZXZ0X2tleXdvcmRfY2hhbmdlZF91cGRhdGUiKTt2YXIgZXZ0X3NlYXJj aF9yZXF1ZXN0PW5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCJldnRfc2VhcmNo X3JlcXVlc3QiKTt2YXIgZXZ0X3NlYXJjaF91cGRhdGU9bmV3IFlBSE9PLnV0aWwu Q3VzdG9tRXZlbnQoImV2dF9zZWFyY2hfdXBkYXRlIik7dmFyIGV2dF9nZXRfZmls dGVyc19yZXF1ZXN0PW5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCJldnRfZ2V0 X2ZpbHRlcnNfcmVxdWVzdCIpO3ZhciBldnRfc2VhcmNoX2ZpbHRlcnNfdXBkYXRl PW5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCJldnRfc2VhcmNoX2ZpbHRlcnNf dXBkYXRlIik7dmFyIGV2dF9zZWFyY2hfdHlwZV9yZXF1ZXN0PW5ldyBZQUhPTy51 dGlsLkN1c3RvbUV2ZW50KCJldnRfc2VhcmNoX3R5cGVfcmVxdWVzdCIpO3ZhciBl dnRfc2VhcmNoX3R5cGVfdXBkYXRlPW5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50 KCJldnRfc2VhcmNoX3R5cGVfdXBkYXRlIik7dmFyIGV2dF9jdXN0b21fbWVudV9y ZXF1ZXN0PW5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCJldnRfY3VzdG9tX21l bnVfcmVxdWVzdCIpO3ZhciBldnRfY3VzdG9tX21lbnVfdXBkYXRlPW5ldyBZQUhP Ty51dGlsLkN1c3RvbUV2ZW50KCJldnRfY3VzdG9tX21lbnVfdXBkYXRlIik7dmFy IGV2dF9tZW51X2ZpbHRlcl9nZXRfcmVxdWVzdD1uZXcgWUFIT08udXRpbC5DdXN0 b21FdmVudCgiZXZ0X21lbnVfZmlsdGVyX2dldF9yZXF1ZXN0Iik7dmFyIGV2dF9t ZW51X2ZpbHRlcl9zZWxlY3RfcmVxdWVzdD1uZXcgWUFIT08udXRpbC5DdXN0b21F dmVudCgiZXZ0X21lbnVfZmlsdGVyX3NlbGVjdF9yZXF1ZXN0Iik7dmFyIGV2dF9t ZW51X2ZpbHRlcl9nZXRfdXBkYXRlPW5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50 KCJldnRfbWVudV9maWx0ZXJfZ2V0X3VwZGF0ZSIpO3ZhciBldnRfbWVudV9maWx0 ZXJfc2VsZWN0X3VwZGF0ZT1uZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgiZXZ0 X21lbnVfZmlsdGVyX3NlbGVjdF91cGRhdGUiKTt2YXIgZXZ0X21lbnVfZmlsdGVy X3NldF91cGRhdGU9bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQoImV2dF9tZW51 X2ZpbHRlcl9zZXRfdXBkYXRlIik7dmFyIGV2dF9tZW51X2ZpbHRlcl9zZXR0aW5n X3VwZGF0ZT1uZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgiZXZ0X21lbnVfZmls dGVyX3NldHRpbmdfdXBkYXRlIik7dmFyIGV2dF9tZW51X2ZpbHRlcl9zZXRfcmVx dWVzdD1uZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgiZXZ0X21lbnVfZmlsdGVy X3NldF9yZXF1ZXN0Iik7dmFyIGV2dF9zZWFyY2hfZmlsdGVyc191bnByb2Nlc3Nl ZF9yZXF1ZXN0PW5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCJldnRfc2VhcmNo X2ZpbHRlcnNfdW5wcm9jZXNzZWRfcmVxdWVzdCIpO3ZhciBldnRfc2VhcmNoX2Zp bHRlcnNfdW5wcm9jZXNzZWRfdXBkYXRlPW5ldyBZQUhPTy51dGlsLkN1c3RvbUV2 ZW50KCJldnRfc2VhcmNoX2ZpbHRlcnNfdW5wcm9jZXNzZWRfdXBkYXRlIik7dmFy IGV2dF9wYWdlX3JlcXVlc3Q9bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQoImV2 dF9wYWdlX3JlcXVlc3QiKTt2YXIgZXZ0X3JlcG9ydF91cGRhdGU9bmV3IFlBSE9P LnV0aWwuQ3VzdG9tRXZlbnQoImV2dF9yZXBvcnRfdXBkYXRlIik7dmFyIGV2dF9z ZXRfaW5pdGlhbF9maWx0ZXJzX3JlcXVlc3Q9bmV3IFlBSE9PLnV0aWwuQ3VzdG9t RXZlbnQoImV2dF9zZXRfaW5pdGlhbF9maWx0ZXJzX3JlcXVlc3QiKTt2YXIgZXZ0 X3NlYXJjaF9pbl9wcm9ncmVzc19yZXF1ZXN0PW5ldyBZQUhPTy51dGlsLkN1c3Rv bUV2ZW50KCJldnRfc2VhcmNoX2luX3Byb2dyZXNzX3JlcXVlc3QiKTt2YXIgZXZ0 X3NlYXJjaF9pbl9wcm9ncmVzc191cGRhdGU9bmV3IFlBSE9PLnV0aWwuQ3VzdG9t RXZlbnQoImV2dF9zZWFyY2hfaW5fcHJvZ3Jlc3NfdXBkYXRlIik7dmFyIGV2dF9t b3JlX3Jlc3VsdHNfcmVxdWVzdD1uZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgi ZXZ0X21vcmVfcmVzdWx0c19yZXF1ZXN0Iik7dmFyIGV2dF9ncmlkX3dpZGdldF91 cGRhdGU9bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQoImV2dF9ncmlkX3dpZGdl dF91cGRhdGUiKTt2YXIgZXZ0X3RvcGljX3dvcmRzX3VwZGF0ZT1uZXcgWUFIT08u dXRpbC5DdXN0b21FdmVudCgiZXZ0X3RvcGljX3dvcmRzX3VwZGF0ZSIpO3ZhciBl dnRfc2VhcmNoX3N1Z2dlc3RfdXBkYXRlPW5ldyBZQUhPTy51dGlsLkN1c3RvbUV2 ZW50KCJldnRfc2VhcmNoX3N1Z2dlc3RfdXBkYXRlIik7dmFyIGV2dF9maWxlX3Vw bG9hZF9yZXF1ZXN0PW5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCJldnRfZmls ZV91cGxvYWRfcmVxdWVzdCIpO3ZhciBldnRfZmlsZV91cGxvYWRfdXBkYXRlPW5l dyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCJldnRfZmlsZV91cGxvYWRfdXBkYXRl Iik7dmFyIGV2dF9hX2lkX3JlcXVlc3Q9bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZl bnQoImV2dF9hX2lkX3JlcXVlc3QiKTt2YXIgZXZ0X2FfaWRfdXBkYXRlPW5ldyBZ QUhPTy51dGlsLkN1c3RvbUV2ZW50KCJldnRfYV9pZF91cGRhdGUiKTt2YXIgZXZ0 X2lfaWRfcmVxdWVzdD1uZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgiZXZ0X2lf aWRfcmVxdWVzdCIpO3ZhciBldnRfaV9pZF91cGRhdGU9bmV3IFlBSE9PLnV0aWwu Q3VzdG9tRXZlbnQoImV2dF9pX2lkX3VwZGF0ZSIpO3ZhciBldnRfZmZfdmFsaWRh dGVfcmVxdWVzdD1uZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgiZXZ0X2ZmX3Zh bGlkYXRlX3JlcXVlc3QiKTt2YXIgZXZ0X2ZmX3ZhbGlkYXRlX3VwZGF0ZT1uZXcg WUFIT08udXRpbC5DdXN0b21FdmVudCgiZXZ0X2ZmX3ZhbGlkYXRlX3VwZGF0ZSIp O3ZhciBldnRfZmZfY291bnQ9bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQoImV2 dF9mZl9jb3VudCIpO3ZhciBldnRfZmZfcHJvdmluY2VfcmVxdWVzdD1uZXcgWUFI T08udXRpbC5DdXN0b21FdmVudCgiZXZ0X2ZmX3Byb3ZpbmNlX3JlcXVlc3QiKTt2 YXIgZXZ0X2ZmX3Byb3ZpbmNlX3VwZGF0ZT1uZXcgWUFIT08udXRpbC5DdXN0b21F dmVudCgiZXZ0X2ZmX3Byb3ZpbmNlX3VwZGF0ZSIpO3ZhciBldnRfZmZfYWNjb3Vu dF9leGlzdHNfcmVxdWVzdD1uZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgiZXZ0 X2ZmX2FjY291bnRfZXhpc3RzX3JlcXVlc3QiKTt2YXIgZXZ0X2ZmX2FjY291bnRf ZXhpc3RzX3VwZGF0ZT1uZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgiZXZ0X2Zm X2FjY291bnRfZXhpc3RzX3VwZGF0ZSIpO3ZhciBldnRfZm9ybV9idXR0b25fc3Vi bWl0PW5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCJldnRfZm9ybV9idXR0b25f c3VibWl0Iik7dmFyIGV2dF9mb3JtX2J1dHRvbl9zdWJtaXRfdXBkYXRlPW5ldyBZ QUhPTy51dGlsLkN1c3RvbUV2ZW50KCJldnRfZm9ybV9idXR0b25fc3VibWl0X3Vw ZGF0ZSIpO3ZhciBldnRfZm9ybV92YWxpZGF0ZWQ9bmV3IFlBSE9PLnV0aWwuQ3Vz dG9tRXZlbnQoImV2dF9mb3JtX3ZhbGlkYXRlZCIpO3ZhciBldnRfZm9ybV9mYWls X3ZhbGlkYXRpb249bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQoImV2dF9mb3Jt X2ZhaWxfdmFsaWRhdGlvbiIpO3ZhciBldnRfZm9ybV9vcGVuX2luZm9fcmVxdWVz dD1uZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgiZXZ0X2Zvcm1fb3Blbl9pbmZv X3JlcXVlc3QiKTt2YXIgZXZ0X2Zvcm1fcGFzc3dkX3Jlc2V0PW5ldyBZQUhPTy51 dGlsLkN1c3RvbUV2ZW50KCJldnRfZm9ybV9wYXNzd2RfcmVzZXQiKTt2YXIgZXZ0 X2VtYWlsX2xpbmtfc3VibWl0X3JlcXVlc3Q9bmV3IFlBSE9PLnV0aWwuQ3VzdG9t RXZlbnQoImV2dF9lbWFpbF9saW5rX3N1Ym1pdF9yZXF1ZXN0Iik7dmFyIGV2dF9l bWFpbF9saW5rX3N1Ym1pdF91cGRhdGU9bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZl bnQoImV2dF9lbWFpbF9saW5rX3N1Ym1pdF91cGRhdGUiKTt2YXIgZXZ0X2VtYWls X3Bhc3N3b3JkX3JlcXVlc3Q9bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQoImV2 dF9lbWFpbF9wYXNzd29yZF9yZXF1ZXN0Iik7dmFyIGV2dF9lbWFpbF9wYXNzd29y ZF91cGRhdGU9bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQoImV2dF9lbWFpbF9w YXNzd29yZF91cGRhdGUiKTt2YXIgZXZ0X2VtYWlsX3VzZXJuYW1lX3JlcXVlc3Q9 bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQoImV2dF9lbWFpbF91c2VybmFtZV9y ZXF1ZXN0Iik7dmFyIGV2dF9lbWFpbF91c2VybmFtZV91cGRhdGU9bmV3IFlBSE9P LnV0aWwuQ3VzdG9tRXZlbnQoImV2dF9lbWFpbF91c2VybmFtZV91cGRhdGUiKTt2 YXIgZXZ0X2xvZ2luX2Zvcm1fc3VibWl0X3JlcXVlc3Q9bmV3IFlBSE9PLnV0aWwu Q3VzdG9tRXZlbnQoImV2dF9sb2dpbl9mb3JtX3N1Ym1pdF9yZXF1ZXN0Iik7dmFy IGV2dF9sb2dpbl9mb3JtX3N1Ym1pdF91cGRhdGU9bmV3IFlBSE9PLnV0aWwuQ3Vz dG9tRXZlbnQoImV2dF9sb2dpbl9mb3JtX3N1Ym1pdF91cGRhdGUiKTt2YXIgZXZ0 X2xvZ291dF9saW5rX3JlcXVlc3Q9bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQo ImV2dF9sb2dvdXRfbGlua19yZXF1ZXN0Iik7dmFyIGV2dF9sb2dvdXRfbGlua191 cGRhdGU9bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQoImV2dF9sb2dvdXRfbGlu a191cGRhdGUiKTt2YXIgZXZ0X2ZlZWRiYWNrX3N1Ym1pdF9yZXF1ZXN0PW5ldyBZ QUhPTy51dGlsLkN1c3RvbUV2ZW50KCJldnRfZmVlZGJhY2tfc3VibWl0X3JlcXVl c3QiKTt2YXIgZXZ0X2ZlZWRiYWNrX3N1Ym1pdF91cGRhdGU9bmV3IFlBSE9PLnV0 aWwuQ3VzdG9tRXZlbnQoImV2dF9mZWVkYmFja19zdWJtaXRfdXBkYXRlIik7dmFy IGV2dF9hbnN3ZXJfbm90aWZpY2F0aW9uX3JlcXVlc3Q9bmV3IFlBSE9PLnV0aWwu Q3VzdG9tRXZlbnQoImV2dF9hbnN3ZXJfbm90aWZpY2F0aW9uX3JlcXVlc3QiKTt2 YXIgZXZ0X2Fuc3dlcl9ub3RpZmljYXRpb25fdXBkYXRlPW5ldyBZQUhPTy51dGls LkN1c3RvbUV2ZW50KCJldnRfYW5zd2VyX25vdGlmaWNhdGlvbl91cGRhdGUiKTt2 YXIgZXZ0X2Fuc3dlcl9ub3RpZmljYXRpb25fZGVsZXRlX3JlcXVlc3Q9bmV3IFlB SE9PLnV0aWwuQ3VzdG9tRXZlbnQoImV2dF9hbnN3ZXJfbm90aWZpY2F0aW9uX2Rl bGV0ZV9yZXF1ZXN0Iik7dmFyIGV2dF9hbnN3ZXJfbm90aWZpY2F0aW9uX2RlbGV0 ZV91cGRhdGU9bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQoImV2dF9hbnN3ZXJf bm90aWZpY2F0aW9uX2RlbGV0ZV91cGRhdGUiKTt2YXIgZXZ0X3Byb2RjYXRfbm90 aWZpY2F0aW9uX3JlbmV3YWxfcmVxdWVzdD1uZXcgWUFIT08udXRpbC5DdXN0b21F dmVudCgiZXZ0X3Byb2RjYXRfbm90aWZpY2F0aW9uX3JlbmV3YWxfcmVxdWVzdCIp O3ZhciBldnRfcHJvZGNhdF9ub3RpZmljYXRpb25fcmVuZXdhbF91cGRhdGU9bmV3 IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQoImV2dF9wcm9kY2F0X25vdGlmaWNhdGlv bl9yZW5ld2FsX3VwZGF0ZSIpO3ZhciBldnRfcHJvZGNhdF9ub3RpZmljYXRpb25f ZGVsZXRlX3JlcXVlc3Q9bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQoImV2dF9w cm9kY2F0X25vdGlmaWNhdGlvbl9kZWxldGVfcmVxdWVzdCIpO3ZhciBldnRfcHJv ZGNhdF9ub3RpZmljYXRpb25fZGVsZXRlX3VwZGF0ZT1uZXcgWUFIT08udXRpbC5D dXN0b21FdmVudCgiZXZ0X3Byb2RjYXRfbm90aWZpY2F0aW9uX2RlbGV0ZV91cGRh dGUiKTt2YXIgZXZ0X3Byb2RjYXRfbm90aWZpY2F0aW9uX3JlcXVlc3Q9bmV3IFlB SE9PLnV0aWwuQ3VzdG9tRXZlbnQoImV2dF9wcm9kY2F0X25vdGlmaWNhdGlvbl9y ZXF1ZXN0Iik7dmFyIGV2dF9wcm9kY2F0X25vdGlmaWNhdGlvbl91cGRhdGU9bmV3 IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQoImV2dF9wcm9kY2F0X25vdGlmaWNhdGlv bl91cGRhdGUiKTt2YXIgZXZ0X2NoYXRfcXVldWVfdXBkYXRlPW5ldyBZQUhPTy51 dGlsLkN1c3RvbUV2ZW50KCJldnRfY2hhdF9xdWV1ZV91cGRhdGUiKTt2YXIgZXZ0 X2NoYXRfcXVldWVfcmVxdWVzdD1uZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgi ZXZ0X2NoYXRfcXVldWVfcmVxdWVzdCIpO3ZhciBldnRfY2hhdF9zZXR0aW5nc19y ZXF1ZXN0PW5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCJldnRfY2hhdF9zZXR0 aW5nc19yZXF1ZXN0Iik7dmFyIGV2dF9jaGF0X25vdGlmeV9mYXR0YWNoX3JlcXVl c3Q9bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQoImV2dF9jaGF0X25vdGlmeV9m YXR0YWNoX3JlcXVlc3QiKTt2YXIgZXZ0X2NoYXRfbm90aWZ5X2ZhdHRhY2hfdXBk YXRlPW5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCJldnRfY2hhdF9ub3RpZnlf ZmF0dGFjaF91cGRhdGUiKTt2YXIgZXZ0X3BhY19zdGF0X3JlcXVlc3Q9bmV3IFlB SE9PLnV0aWwuQ3VzdG9tRXZlbnQoImV2dF9wYWNfc3RhdF9yZXF1ZXN0Iik7ZnVu Y3Rpb24gc2V0SW5pdGFsUmVwb3J0RmlsdGVycyhyZXBvcnRfaWQsdG9rZW4sZmls dGVycyxmb3JtYXQpCnt2YXIgZW89bmV3IFJpZ2h0Tm93LkV2ZW50LkV2ZW50T2Jq ZWN0KCk7ZW8udHlwZT0ncmVwb3J0Jztlby5maWx0ZXJzLnJlcG9ydF9pZD1yZXBv cnRfaWQ7ZW8uZmlsdGVycy50b2tlbj10b2tlbjtlby5kYXRhLmZpbHRlcnM9Zmls dGVycztlby5kYXRhLmZvcm1hdD1mb3JtYXQ7ZXZ0X3NldF9pbml0aWFsX2ZpbHRl cnNfcmVxdWVzdC5maXJlKGVvKTt9CmZ1bmN0aW9uIHN0YXJ0U2VhcmNoKGRhdGEp Cntlbz1uZXcgUmlnaHROb3cuRXZlbnQuRXZlbnRPYmplY3QoKTtlby5uYW1lPWRh dGEuaW5mby5jb250cm9sbGVyX25hbWU7ZW8udHlwZT1kYXRhLmluZm8udHlwZTtl by53X2lkPWRhdGEuaW5mby53X2lkO2VvLmZpbHRlcnMucmVwb3J0X2lkPWRhdGEu YXR0cnMucmVwb3J0X2lkO2VvLmRhdGEucmVwb3J0X3BhZ2U9ZGF0YS5hdHRycy5y ZXBvcnRfcGFnZTtldnRfc2VhcmNoX2luX3Byb2dyZXNzX3JlcXVlc3QuZmlyZShl byk7ZXZ0X3NlYXJjaF9yZXF1ZXN0LmZpcmUoZW8pO30KZnVuY3Rpb24gaW50ZXJj ZXB0SGVscGVyKHRlbXBVcmwpCnt2YXIgcGFybXM9UmlnaHROb3cuVXJsLmNvbnZl cnRUb0FycmF5KFJpZ2h0Tm93LlVybC5nZXRQYXJhbWV0ZXJTZWdtZW50KCkpO2Zv cih2YXIga2V5IGluIHBhcm1zKQp7aWYocGFybXMuaGFzT3duUHJvcGVydHkoa2V5 KSYma2V5IT0ic2Vzc2lvbiImJmtleSE9ImFfaWQiJiZrZXkhPSJpX2lkIiYma2V5 IT0icmVmbm8iJiZrZXkhPSJlcnJvcl9pZCImJmtleSE9InJlZGlyZWN0IiYma2V5 IT0ibm90aWYiJiZrZXkhPSJyZWxhdGVkIiYma2V5IT0ibXNnIiYma2V5IT0ic2Vh cmNoIikKe3RlbXBVcmw9UmlnaHROb3cuVXJsLmFkZFBhcmFtZXRlcih0ZW1wVXJs LGtleSxwYXJtc1trZXldKTt9fQpyZXR1cm4gdGVtcFVybDt9CmZ1bmN0aW9uIEV2 ZW50cygpCnt2YXIgc2VhcmNoX2ZpbHRlcnM9bmV3IE9iamVjdCgpO3ZhciBzZWFy Y2hlcz1udWxsO3ZhciBmaWx0ZXJfY291bnQ9bmV3IE9iamVjdCgpO3ZhciBoaWVy X21lbnVfbGlua19tYXA9ZmFsc2U7dmFyIHBsX25hbWU9IlBhZ2VMb2dpY0NvbnRy b2xsZXIiO3ZhciBzZXNzaW9uO3ZhciBzZXNzaW9uVmFsdWU9IiI7dmFyIGNoYXQ9 bmV3IE9iamVjdCgpO3ZhciBHRVRfREFUQT0xO3ZhciBDSEFOR0VfUEFHRT0yO3Zh ciBTRU5EX0ZJTFRFUlM9Mzt2YXIgX2Fuc3dlcklEPTA7dmFyIF9pbmNpZGVudElE PTA7dmFyIGJyb3dzZXJIaXN0b3J5TWFuYWdlbWVudEtleT0icyI7dmFyIGlzQnJv d3Nlckhpc3RvcnlNYW5hZ2VtZW50RW5hYmxlZD1mYWxzZTt2YXIgZW1wdHlIaXN0 b3J5U3RhdGU9ZmFsc2U7dmFyIGNhY2hlZFJlcG9ydFJlc3BvbnNlcz1bXTt0aGlz LmluaXQ9ZnVuY3Rpb24oc2Vzc2lvblBhcm0pCntzZXNzaW9uPXNlc3Npb25QYXJt O2lmKHNlc3Npb25QYXJtIT09IiIpCntzZXNzaW9uVmFsdWU9UmlnaHROb3cuVGV4 dC5nZXRTdWJzdHJpbmdBZnRlcihzZXNzaW9uLCcvc2Vzc2lvbi8nKTtzZWFyY2hl cz1SaWdodE5vdy5VcmwuZ2V0UGFyYW1ldGVyKCJzbm8iKTtpZighc2VhcmNoZXMp CnNlYXJjaGVzPTA7fQppbml0TGlua0ludGVyY2VwdGlvbigpO2V2dF9rZXl3b3Jk X2NoYW5nZWRfcmVxdWVzdC5zdWJzY3JpYmUob25LZXl3b3JkQ2hhbmdlZFJlcXVl c3QpO2V2dF9zZWFyY2hfcmVxdWVzdC5zdWJzY3JpYmUob25TZWFyY2hSZXF1ZXN0 KTtldnRfc2VhcmNoX2ZpbHRlcnNfdXBkYXRlLnN1YnNjcmliZShvblNlYXJjaEZp bHRlcnNVcGRhdGUpO2V2dF9zZWFyY2hfdHlwZV9yZXF1ZXN0LnN1YnNjcmliZShv blNlYXJjaFR5cGVSZXF1ZXN0KTtldnRfc29ydF90eXBlX3JlcXVlc3Quc3Vic2Ny aWJlKG9uU29ydFR5cGVSZXF1ZXN0KTtldnRfb3JnX3R5cGVfcmVxdWVzdC5zdWJz Y3JpYmUob25PcmdUeXBlUmVxdWVzdCk7ZXZ0X2N1c3RvbV9tZW51X3JlcXVlc3Qu c3Vic2NyaWJlKG9uQ3VzdG9tTWVudVJlcXVlc3QpO2V2dF9wYWdlX3JlcXVlc3Qu c3Vic2NyaWJlKG9uUGFnZVJlcXVlc3QpO2V2dF9zZXRfaW5pdGlhbF9maWx0ZXJz X3JlcXVlc3Quc3Vic2NyaWJlKG9uU2V0SW5pdGlhbEZpbHRlcnNSZXF1ZXN0KTtl dnRfc2VhcmNoX2luX3Byb2dyZXNzX3JlcXVlc3Quc3Vic2NyaWJlKG9uU2VhcmNo SW5Qcm9ncmVzcyk7ZXZ0X21vcmVfcmVzdWx0c19yZXF1ZXN0LnN1YnNjcmliZShv bk1vcmVSZXN1bHRzUmVxdWVzdCk7ZXZ0X2dyaWRfd2lkZ2V0X3VwZGF0ZS5zdWJz Y3JpYmUoUmlnaHROb3cuVXJsLnRyYW5zZm9ybUxpbmtzKTtldnRfZ3JpZF93aWRn ZXRfdXBkYXRlLnN1YnNjcmliZShpbml0TGlua0ludGVyY2VwdGlvbik7ZXZ0X21l bnVfZmlsdGVyX2dldF9yZXF1ZXN0LnN1YnNjcmliZShvbk1lbnVGaWx0ZXJHZXQp O2V2dF9tZW51X2ZpbHRlcl9zZWxlY3RfcmVxdWVzdC5zdWJzY3JpYmUob25NZW51 RmlsdGVyU2VsZWN0KTtldnRfbWVudV9maWx0ZXJfc2V0X3JlcXVlc3Quc3Vic2Ny aWJlKG9uTWVudUZpbHRlclNldCk7ZXZ0X3NlYXJjaF9maWx0ZXJzX3VucHJvY2Vz c2VkX3JlcXVlc3Quc3Vic2NyaWJlKG9uU2VhcmNoRmlsdGVyc1VucHJvY2Vzc2Vk KTtldnRfZmlsZV91cGxvYWRfcmVxdWVzdC5zdWJzY3JpYmUob25GaWxlVXBsb2Fk KTtldnRfZmZfdmFsaWRhdGVfcmVxdWVzdC5zdWJzY3JpYmUoZmZfdmFsaWRhdGVf cmVxdWVzdCk7ZXZ0X2ZmX3Byb3ZpbmNlX3JlcXVlc3Quc3Vic2NyaWJlKG9uQ291 bnRyeVJlcXVlc3QpO2V2dF9mZl9hY2NvdW50X2V4aXN0c19yZXF1ZXN0LnN1YnNj cmliZShvbkFjY291bnRFeGlzdHNSZXF1ZXN0KTtldnRfZmZfY291bnQuc3Vic2Ny aWJlKG9uRkZDb3VudCk7ZXZ0X2Zvcm1fYnV0dG9uX3N1Ym1pdC5zdWJzY3JpYmUo c3VibWl0X3JlcXVlc3QpO2V2dF9mb3JtX29wZW5faW5mb19yZXF1ZXN0LnN1YnNj cmliZShnZXRUYWJsZUlkcyk7ZXZ0X2Zvcm1fcGFzc3dkX3Jlc2V0LnN1YnNjcmli ZShvblNlbmRQYXNzd29yZFJlc2V0Rm9ybSk7ZXZ0X2VtYWlsX2xpbmtfc3VibWl0 X3JlcXVlc3Quc3Vic2NyaWJlKG9uRW1haWxMaW5rUmVxdWVzdCk7ZXZ0X2VtYWls X3Bhc3N3b3JkX3JlcXVlc3Quc3Vic2NyaWJlKG9uRW1haWxQYXNzd29yZFJlcXVl c3QpO2V2dF9lbWFpbF91c2VybmFtZV9yZXF1ZXN0LnN1YnNjcmliZShvbkVtYWls VXNlcm5hbWVSZXF1ZXN0KTtldnRfbG9naW5fZm9ybV9zdWJtaXRfcmVxdWVzdC5z dWJzY3JpYmUob25Mb2dpbkZvcm1SZXF1ZXN0KTtldnRfbG9nb3V0X2xpbmtfcmVx dWVzdC5zdWJzY3JpYmUob25Mb2dvdXRMaW5rUmVxdWVzdCk7ZXZ0X2ZlZWRiYWNr X3N1Ym1pdF9yZXF1ZXN0LnN1YnNjcmliZShvbkZlZWRiYWNrRm9ybVJlcXVlc3Qp O2V2dF9hbnN3ZXJfbm90aWZpY2F0aW9uX3JlcXVlc3Quc3Vic2NyaWJlKG9uQW5z d2VyTm90aWZpY2F0aW9uUmVxdWVzdCk7ZXZ0X2Fuc3dlcl9ub3RpZmljYXRpb25f ZGVsZXRlX3JlcXVlc3Quc3Vic2NyaWJlKG9uQW5zd2VyTm90aWZpY2F0aW9uRGVs ZXRlUmVxdWVzdCk7ZXZ0X3Byb2RjYXRfbm90aWZpY2F0aW9uX2RlbGV0ZV9yZXF1 ZXN0LnN1YnNjcmliZShvblByb2RDYXREZWxldGVSZXF1ZXN0KTtldnRfcHJvZGNh dF9ub3RpZmljYXRpb25fcmVuZXdhbF9yZXF1ZXN0LnN1YnNjcmliZShvblByb2RD YXRSZW5ld1JlcXVlc3QpO2V2dF9wcm9kY2F0X25vdGlmaWNhdGlvbl9yZXF1ZXN0 LnN1YnNjcmliZShvblByb2RDYXROb3RpZmljYXRpb25SZXF1ZXN0KTtldnRfaV9p ZF9yZXF1ZXN0LnN1YnNjcmliZShvbkluY2lkZW50Q2hhbmdlZCk7ZXZ0X2FfaWRf cmVxdWVzdC5zdWJzY3JpYmUob25BbnN3ZXJDaGFuZ2VkKTtldnRfY2hhdF9xdWV1 ZV9yZXF1ZXN0LnN1YnNjcmliZShvbkNoZWNrUXVldWUpO2V2dF9jaGF0X3NldHRp bmdzX3JlcXVlc3Quc3Vic2NyaWJlKG9uQ2hhdFNldHRpbmdzUmVxdWVzdCk7ZXZ0 X2NoYXRfbm90aWZ5X2ZhdHRhY2hfcmVxdWVzdC5zdWJzY3JpYmUob25DaGF0Tm90 aWZ5RkF0dGFjaCk7fTtmdW5jdGlvbiBpbnRlcmNlcHRMaW5rQ2xpY2soZSkKe2lm KCh0aGlzLmhyZWYuaW5kZXhPZignamF2YXNjcmlwdDonKT4tMXx8dGhpcy5ocmVm PT0iIil8fHRoaXMuaHJlZi5pbmRleE9mKCdkb2Nfdmlldy5waHAnKT4tMXx8dGhp cy5ocmVmLmluZGV4T2YoJ2RvY19zdWJtaXQucGhwJyk+LTF8fHRoaXMuaHJlZi5p bmRleE9mKCdkb2Nfc2VydmUucGhwJyk+LTF8fHRoaXMuaHJlZi5pbmRleE9mKCdx YXV0aWxzLnBocCcpPi0xfHx0aGlzLmhyZWYuaW5kZXhPZigndmVyaWZ5X2FjY3Rf bG9naW4ucGhwJyk+LTF8fHRoaXMuaG9zdG5hbWUhPXdpbmRvdy5sb2NhdGlvbi5o b3N0bmFtZXx8KHRoaXMuaHJlZi5pbmRleE9mKCIvY2kvIik+LTEmJiEodGhpcy5o cmVmLmluZGV4T2YoIi9jaS9vcGVuc2VhcmNoIik+LTEpKSkKcmV0dXJuO2lmKCFZ QUhPTy51dGlsLkRvbS5oYXNDbGFzcyh0aGlzLCJub0ludGVyY2VwdCIpKQp7dmFy IHRlbXBVcmw9dGhpcy5ocmVmO2lmKHRoaXMuaHJlZi5pbmRleE9mKCdub0ludGVy Y2VwdCcpPi0xKQp7dGVtcFVybD11cmxQYXJtRGVsZXRlKHRlbXBVcmwsIm5vSW50 ZXJjZXB0Iik7dGVtcFVybD11cmxQYXJtQWRkKHRlbXBVcmwsInNlYXJjaCIsMSk7 dGhpcy5ocmVmPXRlbXBVcmw7cmV0dXJuIHRydWU7fQp2YXIgZW1wdHlTZWFyY2hG aWx0ZXJzPXRydWU7Zm9yKHZhciBwcm9wIGluIHNlYXJjaF9maWx0ZXJzKQp7aWYo c2VhcmNoX2ZpbHRlcnMuaGFzT3duUHJvcGVydHkocHJvcCkpCntlbXB0eVNlYXJj aEZpbHRlcnM9ZmFsc2U7YnJlYWs7fX0KaWYoZW1wdHlTZWFyY2hGaWx0ZXJzKQp7 dGVtcFVybD1pbnRlcmNlcHRIZWxwZXIodGVtcFVybCk7fQplbHNlCntmb3IodmFy IHJlcG9ydCBpbiBzZWFyY2hfZmlsdGVycykKe2lmKHNlYXJjaF9maWx0ZXJzLmhh c093blByb3BlcnR5KHJlcG9ydCkpCnt0ZW1wVXJsPVJpZ2h0Tm93LlVybC5jb252 ZXJ0U2VhcmNoRmlsdGVycyh0ZW1wVXJsLHNlYXJjaF9maWx0ZXJzW3JlcG9ydF0u ZmlsdGVycyxyZXBvcnQsc2VhcmNoZXMpO2NvbnRpbnVlO319fQp0aGlzLmhyZWY9 dGVtcFVybDt9fQpmdW5jdGlvbiBpbml0TGlua0ludGVyY2VwdGlvbigpCnt2YXIg bm9kZXM9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2EnKTtSaWdodE5v dy5VSS5zdWJzY3JpYmVPbmNlKG5vZGVzLCJjbGljayIsaW50ZXJjZXB0TGlua0Ns aWNrKTt9CmZ1bmN0aW9uIGFuc3dlck5vdGlmaWNhdGlvblVwZGF0ZShvKQp7aWYo by5yZXNwb25zZVRleHQhPW51bGwpCmV2dF9hbnN3ZXJfbm90aWZpY2F0aW9uX3Vw ZGF0ZS5maXJlKG8ucmVzcG9uc2VUZXh0KTt9CmZ1bmN0aW9uIG9uQW5zd2VyTm90 aWZpY2F0aW9uUmVxdWVzdCh0eXBlLGV2ZW50X29iaikKe3ZhciBldnRPYmo9ZXZl bnRfb2JqWzBdO3ZhciBwb3N0PWV2dE9iai5kYXRhLnBvc3Q7dmFyIHVybD0iL2Np L2FqYXhSZXF1ZXN0L2Fuc3dlck5vdGlmaWNhdGlvbiI7Uk5ULkV2ZW50cy5hamF4 UmVxdWVzdChwb3N0LHVybCwiYW5zd2VyTm90aWZpY2F0aW9uVXBkYXRlIik7fQpm dW5jdGlvbiBhbnN3ZXJOb3RpZmljYXRpb25EZWxldGVVcGRhdGUobykKe2lmKG8u cmVzcG9uc2VUZXh0IT1udWxsKQpldnRfYW5zd2VyX25vdGlmaWNhdGlvbl9kZWxl dGVfdXBkYXRlLmZpcmUoby5yZXNwb25zZVRleHQpO30KZnVuY3Rpb24gb25BbnN3 ZXJOb3RpZmljYXRpb25EZWxldGVSZXF1ZXN0KHR5cGUsZXZlbnRfb2JqKQp7dmFy IGV2dE9iaj1ldmVudF9vYmpbMF07dmFyIHBvc3Q9ZXZ0T2JqLmRhdGEucG9zdDt2 YXIgdXJsPSIvY2kvYWpheFJlcXVlc3QvYW5zd2VyTm90aWZpY2F0aW9uIjtSTlQu RXZlbnRzLmFqYXhSZXF1ZXN0KHBvc3QsdXJsLCJhbnN3ZXJOb3RpZmljYXRpb25E ZWxldGVVcGRhdGUiKTt9CmZ1bmN0aW9uIGxvZ2luU3VjY2VzcyhvKQp7aWYoby5y ZXNwb25zZVRleHQhPW51bGwpCmV2dF9sb2dpbl9mb3JtX3N1Ym1pdF91cGRhdGUu ZmlyZShvLnJlc3BvbnNlVGV4dCk7fQpmdW5jdGlvbiBsb2dvdXRTdWNjZXNzKG8p CntpZihvLnJlc3BvbnNlVGV4dCE9bnVsbCkKZXZ0X2xvZ291dF9saW5rX3VwZGF0 ZS5maXJlKG8ucmVzcG9uc2VUZXh0KTt9CmZ1bmN0aW9uIG9uTG9naW5Gb3JtUmVx dWVzdCh0eXBlLGV2ZW50X29iaikKe3ZhciBldnRPYmo9ZXZlbnRfb2JqWzBdO3Zh ciBwb3N0PWV2dE9iai5kYXRhLnBvc3Q7dmFyIHVybD0iL2NpL2FqYXhSZXF1ZXN0 L2RvTG9naW4iO1JOVC5FdmVudHMuYWpheFJlcXVlc3QocG9zdCx1cmwsImxvZ2lu U3VjY2VzcyIsImdlbmVyaWNBamF4RmFpbHVyZSIsZXZ0T2JqLndfaWQpO30KZnVu Y3Rpb24gb25Mb2dvdXRMaW5rUmVxdWVzdCh0eXBlLGV2ZW50X29iaikKe3ZhciBl dnRPYmo9ZXZlbnRfb2JqWzBdO3ZhciBwb3N0PWV2dE9iai5kYXRhLnBvc3Q7dmFy IHVybD0iL2NpL2FqYXhSZXF1ZXN0L2RvTG9nb3V0IjtSTlQuRXZlbnRzLmFqYXhS ZXF1ZXN0KHBvc3QsdXJsLCJsb2dvdXRTdWNjZXNzIik7fQpmdW5jdGlvbiBvbkZp bGVVcGxvYWQodHlwZSxldmVudF9vYmopCnt2YXIgdXBsb2FkX3R5cGU9ZXZlbnRf b2JqWzBdLmRhdGEudXBsb2FkX3R5cGU7dmFyIGNhbGxiYWNrPXt1cGxvYWQ6dXBs b2FkQ2FsbGJhY2ssZmFpbHVyZTpnZW5lcmljQWpheEZhaWx1cmV9O3RyeQp7aWYo dXBsb2FkX3R5cGU9PSJjaGF0IikKWUFIT08udXRpbC5Db25uZWN0LmFzeW5jUmVx dWVzdCgnUE9TVCcsIi9jaS9mYXR0YWNoL3VwbG9hZENoYXQvIitldmVudF9vYmpb MF0uZGF0YS5lbmdhZ2VtZW50X2lkKyIvIitldmVudF9vYmpbMF0uZGF0YS5jaGF0 X3NpZCxjYWxsYmFjayk7ZWxzZQpZQUhPTy51dGlsLkNvbm5lY3QuYXN5bmNSZXF1 ZXN0KCdQT1NUJywiL2NpL2ZhdHRhY2gvdXBsb2FkIitzZXNzaW9uLGNhbGxiYWNr KTt9CmNhdGNoKGUpCnt2YXIgbz1uZXcgT2JqZWN0KCk7by5yZXNwb25zZVRleHQ9 IntcImVycm9yXCI6ODh9Ijt1cGxvYWRDYWxsYmFjayhvKTt9fQpmdW5jdGlvbiB1 cGxvYWRDYWxsYmFjayhvKQp7aWYoby5yZXNwb25zZVRleHQhPW51bGwpCmV2dF9m aWxlX3VwbG9hZF91cGRhdGUuZmlyZShvLnJlc3BvbnNlVGV4dCk7fQpmdW5jdGlv biBzZXRTZWFyY2hGaWx0ZXIoZXZ0T2JqKQp7aWYoIXNlYXJjaF9maWx0ZXJzW2V2 dE9iai5maWx0ZXJzLnJlcG9ydF9pZF0pCntzZWFyY2hfZmlsdGVyc1tldnRPYmou ZmlsdGVycy5yZXBvcnRfaWRdPW5ldyBPYmplY3QoKTtzZWFyY2hfZmlsdGVyc1tl dnRPYmouZmlsdGVycy5yZXBvcnRfaWRdWydmaWx0ZXJzJ109bmV3IE9iamVjdCgp O3NlYXJjaF9maWx0ZXJzW2V2dE9iai5maWx0ZXJzLnJlcG9ydF9pZF1bJ2Zvcm1h dCddPW5ldyBPYmplY3QoKTt9CnNlYXJjaF9maWx0ZXJzW2V2dE9iai5maWx0ZXJz LnJlcG9ydF9pZF1bJ2ZpbHRlcnMnXVtldnRPYmoudHlwZV09ZXZ0T2JqO30KZnVu Y3Rpb24gZ2V0VGFibGVJZHModHlwZSxldmVudF9vYmopCntfYW5zd2VySUQ9ZXZl bnRfb2JqWzBdWzBdO19pbmNpZGVudElEPWV2ZW50X29ialswXVsxXTt9CmZ1bmN0 aW9uIHN1Ym1pdF9yZXF1ZXN0KHR5cGUsZXZlbnRfb2JqKQp7ZXZlbnRfb2JqPWV2 ZW50X29ialswXTtSaWdodE5vdy5VSS5Gb3JtLmVycm9yQ291bnQ9MDtSaWdodE5v dy5VSS5Gb3JtLmZvcm1GaWVsZHM9bmV3IEFycmF5KCk7UmlnaHROb3cuVUkuRm9y bS5mb3JtPWV2ZW50X29iai5kYXRhLmZvcm07UmlnaHROb3cuVUkuRm9ybS53aWRn ZXRzVG9WYWxpZGF0ZT1ldnRfZmZfdmFsaWRhdGVfdXBkYXRlLnN1YnNjcmliZXJz Lmxlbmd0aDtSaWdodE5vdy5VSS5Gb3JtLndpZGdldHNUb1Byb2Nlc3M9ZXZ0X2Zm X3ZhbGlkYXRlX3VwZGF0ZS5zdWJzY3JpYmVycy5sZW5ndGg7UmlnaHROb3cuVUku Rm9ybS5mb3JtVG9rZW49ZXZlbnRfb2JqLmRhdGEuZl90b2s7ZXZ0X2ZmX3ZhbGlk YXRlX3VwZGF0ZS5maXJlKGV2ZW50X29iaik7fQpmdW5jdGlvbiBmZl92YWxpZGF0 ZV9yZXF1ZXN0KHR5cGUsZXZlbnRfb2JqKQp7LS1SaWdodE5vdy5VSS5Gb3JtLndp ZGdldHNUb1ZhbGlkYXRlO2lmKGV2ZW50X29ialswXS5mb3JtKQp7aWYoZXZlbnRf b2JqWzBdLmZvcm09PT1SaWdodE5vdy5VSS5Gb3JtLmZvcm18fGV2ZW50X29ialsw XS5mb3JtLmlkPT09UmlnaHROb3cuVUkuRm9ybS5mb3JtKQpSaWdodE5vdy5VSS5G b3JtLmZvcm1GaWVsZHMucHVzaChldmVudF9vYmpbMF0uZGF0YSk7fQppZihSaWdo dE5vdy5VSS5Gb3JtLndpZGdldHNUb1ZhbGlkYXRlPT0wKQp7ZXZ0X2Zvcm1fdmFs aWRhdGVkLmZpcmUoKTtpZighUmlnaHROb3cuVUkuRm9ybS5jaGF0U3VibWl0JiYh UmlnaHROb3cuVUkuRm9ybS5wYXNzd29yZFJlc2V0KQpvblNlbmRGb3JtKCk7fX0K ZnVuY3Rpb24gb25GRkNvdW50KHR5cGUsZXZlbnRfb2JqKQp7LS1SaWdodE5vdy5V SS5Gb3JtLndpZGdldHNUb1Byb2Nlc3M7aWYoUmlnaHROb3cuVUkuRm9ybS53aWRn ZXRzVG9Qcm9jZXNzPT0wJiZSaWdodE5vdy5VSS5Gb3JtLndpZGdldHNUb1ZhbGlk YXRlIT0wKQpldnRfZm9ybV9mYWlsX3ZhbGlkYXRpb24uZmlyZSgpO30KZnVuY3Rp b24gb25Db3VudHJ5UmVxdWVzdCh0eXBlLGV2dE9iaikKe3ZhciBwb3N0RGF0YT0i Y291bnRyeV9pZD0iK2V2dE9ialswXS5kYXRhLmNvdW50cnlfaWQ7Uk5ULkV2ZW50 cy5hamF4UmVxdWVzdChwb3N0RGF0YSwiL2NpL2FqYXhSZXF1ZXN0TWluL2dldENv dW50cnlWYWx1ZXMiLCJvblByb3ZpbmNlVXBkYXRlIixudWxsLGV2dE9iaik7fQpm dW5jdGlvbiBvblByb3ZpbmNlVXBkYXRlKG8pCntpZihvLnJlc3BvbnNlVGV4dCE9 bnVsbCkKe3ZhciByZXN1bHQ9WUFIT08ubGFuZy5KU09OLnBhcnNlKG8ucmVzcG9u c2VUZXh0KTtpZihyZXN1bHQpCmV2dF9mZl9wcm92aW5jZV91cGRhdGUuZmlyZShy ZXN1bHQpO2Vsc2UKUmlnaHROb3cuVUkuRGlhbG9nLm1lc3NhZ2VEaWFsb2coUmln aHROb3cuSW50ZXJmYWNlLmdldE1lc3NhZ2UoIkVSUk9SX1JFUVVFU1RfQUNUSU9O X0NPTVBMRVRFRF9NU0ciKSx7aWNvbjoiV0FSTiJ9KTt9fQpmdW5jdGlvbiBvbkFj Y291bnRFeGlzdHNSZXF1ZXN0KHR5cGUsZXZ0T2JqKQp7dmFyIHBvc3Q9ZXZ0T2Jq WzBdLmRhdGEucG9zdDtwb3N0Kz0oIiZwd1Jlc2V0PSIrUmlnaHROb3cuVUkuRm9y bS5wYXNzd29yZFJlc2V0KTtSTlQuRXZlbnRzLmFqYXhSZXF1ZXN0KHBvc3QsIi9j aS9hamF4UmVxdWVzdC9jaGVja0ZvckV4aXN0aW5nQ29udGFjdCIsIm9uRXhpc3Rp bmdBY2NvdW50VXBkYXRlIik7fQpmdW5jdGlvbiBvbkV4aXN0aW5nQWNjb3VudFVw ZGF0ZShvKQp7aWYoby5yZXNwb25zZVRleHQhPW51bGwpCmV2dF9mZl9hY2NvdW50 X2V4aXN0c191cGRhdGUuZmlyZShZQUhPTy5sYW5nLkpTT04ucGFyc2Uoby5yZXNw b25zZVRleHQpKTt9CmZ1bmN0aW9uIG9uU2VhcmNoVHlwZVJlcXVlc3QodHlwZSxh cmcpCnt2YXIgZXZ0T2JqPWFyZ1swXTtldnRfc2VhcmNoX3R5cGVfdXBkYXRlLmZp cmUoZXZ0T2JqKTt9CmZ1bmN0aW9uIG9uU29ydFR5cGVSZXF1ZXN0KHR5cGUsYXJn KQp7dmFyIGV2dE9iaj1hcmdbMF07ZXZ0X3NvcnRfdHlwZV91cGRhdGUuZmlyZShl dnRPYmopO30KZnVuY3Rpb24gb25PcmdUeXBlUmVxdWVzdCh0eXBlLGFyZykKe3Zh ciBldnRPYmo9YXJnWzBdO2V2dF9vcmdfdHlwZV91cGRhdGUuZmlyZShldnRPYmop O30KZnVuY3Rpb24gb25DdXN0b21NZW51UmVxdWVzdCh0eXBlLGFyZykKe3ZhciBl dnRPYmo9YXJnWzBdO2V2dF9jdXN0b21fbWVudV91cGRhdGUuZmlyZShldnRPYmop O30KZnVuY3Rpb24gb25BbnN3ZXJDaGFuZ2VkKHR5cGUsYXJnKQp7dmFyIGV2dE9i aj1hcmdbMF07dmFyIHBhY2tldD1uZXcgT2JqZWN0KCk7cGFja2V0LmFfaWQ9ZXZ0 T2JqLmFfaWQ7ZXZ0X2FfaWRfdXBkYXRlLmZpcmUocGFja2V0KTt9CmZ1bmN0aW9u IG9uSW5jaWRlbnRDaGFuZ2VkKHR5cGUsYXJnKQp7dmFyIGV2dE9iaj1hcmdbMF07 dmFyIHBhY2tldD1uZXcgT2JqZWN0KCk7cGFja2V0LmlfaWQ9ZXZ0T2JqLmlfaWQ7 ZXZ0X2lfaWRfdXBkYXRlLmZpcmUocGFja2V0KTt9CmZ1bmN0aW9uIGVtYWlsTGlu a1N1Y2Nlc3MobykKe2lmKG8ucmVzcG9uc2VUZXh0IT1udWxsKQp7dmFyIGV2dE9i aj1vLmFyZ3VtZW50O2V2dF9lbWFpbF9saW5rX3N1Ym1pdF91cGRhdGUuZmlyZShv LnJlc3BvbnNlVGV4dCxldnRPYmopO319CmZ1bmN0aW9uIG9uRW1haWxMaW5rUmVx dWVzdCh0eXBlLGFyZykKe3ZhciBldnRPYmo9YXJnWzBdO3ZhciBwb3N0PWV2dE9i ai5kYXRhLnBvc3Q7dmFyIHVybD0iL2NpL2FqYXhSZXF1ZXN0L2VtYWlsQW5zd2Vy IjtSTlQuRXZlbnRzLmFqYXhSZXF1ZXN0KHBvc3QsdXJsLCJlbWFpbExpbmtTdWNj ZXNzIixudWxsLGV2dE9iaik7fQpmdW5jdGlvbiBlbWFpbFBhc3N3b3JkU3VjY2Vz cyhvKQp7aWYoby5yZXNwb25zZVRleHQhPW51bGwpCmV2dF9lbWFpbF9wYXNzd29y ZF91cGRhdGUuZmlyZShvLnJlc3BvbnNlVGV4dCk7fQpmdW5jdGlvbiBvbkVtYWls UGFzc3dvcmRSZXF1ZXN0KHR5cGUsYXJnKQp7dmFyIGV2dE9iaj1hcmdbMF07dmFy IHBvc3Q9ZXZ0T2JqLmRhdGEucG9zdDt2YXIgdXJsPSIvY2kvYWpheFJlcXVlc3Qv ZW1haWxQYXNzd29yZCI7Uk5ULkV2ZW50cy5hamF4UmVxdWVzdChwb3N0LHVybCwi ZW1haWxQYXNzd29yZFN1Y2Nlc3MiKTt9CmZ1bmN0aW9uIGVtYWlsVXNlcm5hbWVT dWNjZXNzKG8pCntpZihvLnJlc3BvbnNlVGV4dCE9bnVsbCkKZXZ0X2VtYWlsX3Vz ZXJuYW1lX3VwZGF0ZS5maXJlKG8ucmVzcG9uc2VUZXh0KTt9CmZ1bmN0aW9uIG9u RW1haWxVc2VybmFtZVJlcXVlc3QodHlwZSxhcmcpCnt2YXIgZXZ0T2JqPWFyZ1sw XTt2YXIgcG9zdD1ldnRPYmouZGF0YS5wb3N0O3ZhciB1cmw9Ii9jaS9hamF4UmVx dWVzdC9lbWFpbFVzZXJuYW1lIjtSTlQuRXZlbnRzLmFqYXhSZXF1ZXN0KHBvc3Qs dXJsLCJlbWFpbFVzZXJuYW1lU3VjY2VzcyIpO30KZnVuY3Rpb24gZmVlZGJhY2tT dWNjZXNzKG8pCntpZihvLnJlc3BvbnNlVGV4dCE9bnVsbCkKZXZ0X2ZlZWRiYWNr X3N1Ym1pdF91cGRhdGUuZmlyZShvLnJlc3BvbnNlVGV4dCk7fQpmdW5jdGlvbiBv bkZlZWRiYWNrRm9ybVJlcXVlc3QodHlwZSxhcmcpCnt2YXIgZXZ0T2JqPWFyZ1sw XTt2YXIgcG9zdD1ldnRPYmouZGF0YS5wb3N0O3ZhciB1cmw9Ii9jaS9hamF4UmVx dWVzdC9zdWJtaXRGZWVkYmFjayI7Uk5ULkV2ZW50cy5hamF4UmVxdWVzdChwb3N0 LHVybCwiZmVlZGJhY2tTdWNjZXNzIik7fQpmdW5jdGlvbiBvbktleXdvcmRDaGFu Z2VkUmVxdWVzdCh0eXBlLGFyZykKe3ZhciBldnRfb2JqPWFyZ1swXTtpZihzZWFy Y2hfZmlsdGVyc1tldnRfb2JqLmZpbHRlcnMucmVwb3J0X2lkXSkKc2VhcmNoX2Zp bHRlcnNbZXZ0X29iai5maWx0ZXJzLnJlcG9ydF9pZF1bJ2Zvcm1hdCddLmhpZ2hs aWdodExlbmd0aD1ldnRfb2JqLmRhdGEubGVuZ3RoO2V2dF9rZXl3b3JkX2NoYW5n ZWRfdXBkYXRlLmZpcmUoZXZ0X29iaik7fQpmdW5jdGlvbiBtZW51RmlsdGVyR2V0 U3VjY2VzcyhvKQp7aWYoby5hcmd1bWVudCE9bnVsbCkKe3ZhciBldnRPYmo9by5h cmd1bWVudDtpZihvLnJlc3BvbnNlVGV4dCE9PXVuZGVmaW5lZCkKe3ZhciByZXN1 bHRzPVlBSE9PLmxhbmcuSlNPTi5wYXJzZShvLnJlc3BvbnNlVGV4dCk7aWYocmVz dWx0cykKe2V2dE9iai5kYXRhLmNhY2hlW2V2dE9iai5kYXRhLnZhbHVlXT1yZXN1 bHRzWzBdO2V2dE9iai5kYXRhLmhpZXJfZGF0YT1yZXN1bHRzWzBdO2V2dE9iai5k YXRhLmxldmVsKz0xO2V2dF9tZW51X2ZpbHRlcl9nZXRfdXBkYXRlLmZpcmUoZXZ0 T2JqKTtpZihldnRPYmouZGF0YS5saW5raW5nX29uJiZldnRPYmouZGF0YS5maWx0 ZXJfbmFtZS5pbmRleE9mKCJwcm9kIik+LTEpCntoaWVyX21lbnVfbGlua19tYXA9 cmVzdWx0c1snbGlua19tYXAnXTtsaW5raW5nRXZ0T2JqPW5ldyBFdmVudE9iamVj dCgpO2xpbmtpbmdFdnRPYmouZGF0YS5sZXZlbD0xO2xpbmtpbmdFdnRPYmouZGF0 YS5oaWVyX2RhdGE9aGllcl9tZW51X2xpbmtfbWFwWzBdO2lmKGV2dE9iai5kYXRh LmZpbHRlcl9uYW1lLmluZGV4T2YoJ3Byb2R1Y3RzJykhPT0tMSkKbGlua2luZ0V2 dE9iai5kYXRhLmZpbHRlcl9uYW1lPWV2dE9iai5kYXRhLmZpbHRlcl9uYW1lLnJl cGxhY2UoInByb2R1Y3RzIiwiY2F0ZWdvcmllcyIpO2Vsc2UKbGlua2luZ0V2dE9i ai5kYXRhLmZpbHRlcl9uYW1lPWV2dE9iai5kYXRhLmZpbHRlcl9uYW1lLnJlcGxh Y2UoInByb2QiLCJjYXQiKTtsaW5raW5nRXZ0T2JqLmZpbHRlcnMucmVwb3J0X2lk PWV2dE9iai5maWx0ZXJzLnJlcG9ydF9pZDtldnRfbWVudV9maWx0ZXJfZ2V0X3Vw ZGF0ZS5maXJlKGxpbmtpbmdFdnRPYmopO2lmKGV2dE9iai5kYXRhLnZhbHVlPT0t MSkKaGllcl9tZW51X2xpbmtfbWFwPSIiO319CmVsc2UKe1JpZ2h0Tm93LlVJLkRp YWxvZy5tZXNzYWdlRGlhbG9nKFJpZ2h0Tm93LkludGVyZmFjZS5nZXRNZXNzYWdl KCJFUlJPUl9SRVFVRVNUX0FDVElPTl9DT01QTEVURURfTVNHIikse2ljb246IldB Uk4ifSk7fX19fQpmdW5jdGlvbiBvbk1lbnVGaWx0ZXJHZXQodHlwZSxhcmcpCnt2 YXIgZXZ0T2JqPWFyZ1swXTtpZihldnRPYmouZGF0YS5sZXZlbD41KQpyZXR1cm47 aWYoZXZ0T2JqLmRhdGEubGlua19tYXAmJmhpZXJfbWVudV9saW5rX21hcCE9IiIp CmhpZXJfbWVudV9saW5rX21hcD1ldnRPYmouZGF0YS5saW5rX21hcDtpZighZXZ0 T2JqLmRhdGEubGlua2luZ19vbikKe2lmKGV2dE9iai5kYXRhLnZhbHVlPDEpCntl dnRPYmouZGF0YS5sZXZlbCs9MTtldnRPYmouZGF0YS5oaWVyX2RhdGE9QXJyYXko KTtldnRfbWVudV9maWx0ZXJfZ2V0X3VwZGF0ZS5maXJlKGV2dE9iaik7cmV0dXJu O30KaWYoZXZ0T2JqLmRhdGEuY2FjaGVbZXZ0T2JqLmRhdGEudmFsdWVdKQp7ZXZ0 T2JqLmRhdGEuaGllcl9kYXRhPWV2dE9iai5kYXRhLmNhY2hlW2V2dE9iai5kYXRh LnZhbHVlXTtldnRPYmouZGF0YS5sZXZlbCs9MTtldnRfbWVudV9maWx0ZXJfZ2V0 X3VwZGF0ZS5maXJlKGV2dE9iaik7cmV0dXJuO319CmVsc2UKe2lmKChldnRPYmou ZGF0YS5maWx0ZXJfbmFtZS5pbmRleE9mKCJjYXQiKT4tMSkmJmhpZXJfbWVudV9s aW5rX21hcCE9IiIpCntpZighZXZ0T2JqLmRhdGEucmVzZXQpCmV2dE9iai5kYXRh LmxldmVsKz0xO2V2dE9iai5kYXRhLmhpZXJfZGF0YT1oaWVyX21lbnVfbGlua19t YXBbZXZ0T2JqLmRhdGEudmFsdWVdO2V2dF9tZW51X2ZpbHRlcl9nZXRfdXBkYXRl LmZpcmUoZXZ0T2JqKTtyZXR1cm47fX0KdmFyIHBvc3REYXRhPSJmaWx0ZXI9Iitl dnRPYmouZGF0YS5maWx0ZXJfbmFtZSsiJmx2bD0iKyhldnRPYmouZGF0YS5sZXZl bCsxKSsiJmlkPSIrZXZ0T2JqLmRhdGEudmFsdWUrIiZsaW5raW5nPSIrZXZ0T2Jq LmRhdGEubGlua2luZ19vbjtSTlQuRXZlbnRzLmFqYXhSZXF1ZXN0KHBvc3REYXRh LCIvY2kvYWpheFJlcXVlc3RNaW4vZ2V0SGllclZhbHVlcyIsIm1lbnVGaWx0ZXJH ZXRTdWNjZXNzIixudWxsLGV2dE9iaik7fQpmdW5jdGlvbiBvbk1lbnVGaWx0ZXJT ZWxlY3QodHlwZSxhcmcpCnt2YXIgZXZ0T2JqPWFyZ1swXTtldnRfbWVudV9maWx0 ZXJfc2VsZWN0X3VwZGF0ZS5maXJlKGV2dE9iaik7fQpmdW5jdGlvbiBvbk1lbnVG aWx0ZXJTZXRTdWNjZXNzKG8pCntpZihvLnJlc3BvbnNlVGV4dCE9bnVsbCkKe3Jl c3VsdD1ZQUhPTy5sYW5nLkpTT04ucGFyc2Uoby5yZXNwb25zZVRleHQpO2lmKHJl c3VsdCkKZXZ0X21lbnVfZmlsdGVyX3NldF91cGRhdGUuZmlyZShyZXN1bHQpO2Vs c2UKUmlnaHROb3cuVUkuRGlhbG9nLm1lc3NhZ2VEaWFsb2coUmlnaHROb3cuSW50 ZXJmYWNlLmdldE1lc3NhZ2UoIkVSUk9SX1JFUVVFU1RfQUNUSU9OX0NPTVBMRVRF RF9NU0ciKSx7aWNvbjoiV0FSTiJ9KTt9fQpmdW5jdGlvbiBvbk1lbnVGaWx0ZXJT ZXQodHlwZSxhcmcpCnt2YXIgY2hhaW47dmFyIGhpZXJWYWx1ZXM9YXJnWzBdLmRh dGEuaGllclNldERhdGE7Y2hhaW49aGllclZhbHVlc1sxXVsnaWQnXTtmb3IodmFy IGk9MjtpPGhpZXJWYWx1ZXMubGVuZ3RoOysraSkKe2lmKGhpZXJWYWx1ZXNbaV1b J2lkJ10+MCkKY2hhaW4rPScsJytoaWVyVmFsdWVzW2ldWydpZCddO30KdmFyIHBv c3REYXRhPSJjaGFpbj0iK2NoYWluKyImZmlsdGVyX3R5cGU9IithcmdbMF0uZGF0 YS5maWx0ZXJfbmFtZTtldnRfbWVudV9maWx0ZXJfc2V0dGluZ191cGRhdGUuZmly ZSgpO1JOVC5FdmVudHMuYWpheFJlcXVlc3QocG9zdERhdGEsIi9jaS9hamF4UmVx dWVzdC9wcm9kY2F0QWRkTm90aWZpY2F0aW9uIiwib25NZW51RmlsdGVyU2V0U3Vj Y2VzcyIpO30KZnVuY3Rpb24gb25Qcm9kQ2F0Tm90aWZpY2F0aW9uUmVxdWVzdCh0 eXBlLGFyZykKe3ZhciBldnRPYmo9YXJnWzBdO3ZhciBwb3N0RGF0YT0iZmlsdGVy X3R5cGU9IitldnRPYmouZGF0YS5maWx0ZXJfdHlwZSsiJmNoYWluPSIrZXZ0T2Jq LmRhdGEuY2hhaW4rIiZjaWQ9IitldnRPYmouZGF0YS5jaWQ7Uk5ULkV2ZW50cy5h amF4UmVxdWVzdChwb3N0RGF0YSwiL2NpL2FqYXhSZXF1ZXN0L3Byb2RjYXRBZGRO b3RpZmljYXRpb24iLCJvblByb2RDYXROb3RpZmljYXRpb25VcGRhdGUiKTt9CmZ1 bmN0aW9uIG9uUHJvZENhdE5vdGlmaWNhdGlvblVwZGF0ZShvKQp7aWYoby5yZXNw b25zZVRleHQhPW51bGwpCnt2YXIgcmVzdWx0PVlBSE9PLmxhbmcuSlNPTi5wYXJz ZShvLnJlc3BvbnNlVGV4dCk7aWYocmVzdWx0KQpldnRfcHJvZGNhdF9ub3RpZmlj YXRpb25fdXBkYXRlLmZpcmUocmVzdWx0KTtlbHNlClJpZ2h0Tm93LlVJLkRpYWxv Zy5tZXNzYWdlRGlhbG9nKFJpZ2h0Tm93LkludGVyZmFjZS5nZXRNZXNzYWdlKCJF UlJPUl9SRVFVRVNUX0FDVElPTl9DT01QTEVURURfTVNHIikse2ljb246IldBUk4i fSk7fX0KZnVuY3Rpb24gb25Qcm9kQ2F0RGVsZXRlUmVxdWVzdFN1Y2Nlc3MobykK e2lmKG8ucmVzcG9uc2VUZXh0IT1udWxsKQp7dmFyIHJlc3VsdD1ZQUhPTy5sYW5n LkpTT04ucGFyc2Uoby5yZXNwb25zZVRleHQpO2lmKHJlc3VsdCkKZXZ0X3Byb2Rj YXRfbm90aWZpY2F0aW9uX2RlbGV0ZV91cGRhdGUuZmlyZShyZXN1bHQpO2Vsc2UK UmlnaHROb3cuVUkuRGlhbG9nLm1lc3NhZ2VEaWFsb2coUmlnaHROb3cuSW50ZXJm YWNlLmdldE1lc3NhZ2UoIkVSUk9SX1JFUVVFU1RfQUNUSU9OX0NPTVBMRVRFRF9N U0ciKSx7aWNvbjoiV0FSTiJ9KTt9fQpmdW5jdGlvbiBvblByb2RDYXREZWxldGVS ZXF1ZXN0KHR5cGUsYXJnKQp7dmFyIGV2dE9iaj1hcmdbMF07dmFyIHBvc3REYXRh PSJmaWx0ZXJfdHlwZT0iK2V2dE9iai5kYXRhLmZpbHRlcl90eXBlKyImY2hhaW49 IitldnRPYmouZGF0YS5jaGFpbisiJnRpbWVzdGFtcD0iK2V2dE9iai5kYXRhLnRp bWU7cG9zdERhdGErPShldnRPYmouZGF0YS5jaWQpPygiJmNpZD0iK2V2dE9iai5k YXRhLmNpZCk6Jyc7Uk5ULkV2ZW50cy5hamF4UmVxdWVzdChwb3N0RGF0YSwiL2Np L2FqYXhSZXF1ZXN0L3Byb2RjYXREZWxldGVOb3RpZmljYXRpb24iLCJvblByb2RD YXREZWxldGVSZXF1ZXN0U3VjY2VzcyIpO30KZnVuY3Rpb24gb25Qcm9kQ2F0UmVu ZXdSZXF1ZXN0U3VjY2VzcyhvKQp7aWYoby5yZXNwb25zZVRleHQhPW51bGwpCnt2 YXIgcmVzdWx0PVlBSE9PLmxhbmcuSlNPTi5wYXJzZShvLnJlc3BvbnNlVGV4dCk7 aWYocmVzdWx0KQpldnRfcHJvZGNhdF9ub3RpZmljYXRpb25fcmVuZXdhbF91cGRh dGUuZmlyZShyZXN1bHQpO2Vsc2UKUmlnaHROb3cuVUkuRGlhbG9nLm1lc3NhZ2VE aWFsb2coUmlnaHROb3cuSW50ZXJmYWNlLmdldE1lc3NhZ2UoIkVSUk9SX1JFUVVF U1RfQUNUSU9OX0NPTVBMRVRFRF9NU0ciKSx7aWNvbjoiV0FSTiJ9KTt9fQpmdW5j dGlvbiBvblByb2RDYXRSZW5ld1JlcXVlc3QodHlwZSxhcmcpCnt2YXIgZXZ0T2Jq PWFyZ1swXTt2YXIgcG9zdERhdGE9ImZpbHRlcl90eXBlPSIrZXZ0T2JqLmRhdGEu ZmlsdGVyX3R5cGUrIiZjaGFpbj0iK2V2dE9iai5kYXRhLmNoYWluKyImdGltZXN0 YW1wPSIrZXZ0T2JqLmRhdGEudGltZTtSTlQuRXZlbnRzLmFqYXhSZXF1ZXN0KHBv c3REYXRhLCIvY2kvYWpheFJlcXVlc3QvcHJvZGNhdFJlbmV3Tm90aWZpY2F0aW9u Iiwib25Qcm9kQ2F0UmVuZXdSZXF1ZXN0U3VjY2VzcyIpO30KZnVuY3Rpb24gb25T ZWFyY2hSZXF1ZXN0KHR5cGUsYXJnKQp7dmFyIGV2dE9iaj1hcmdbMF07dmFyIGxv Y2F0aW9uPXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS50b1N0cmluZygpO3ZhciBz cGxpdFJlc3VsdD1sb2NhdGlvbi5zcGxpdCgiL2FwcCIpO3ZhciByZWxfcGF0aD0i L2FwcCIrKChzcGxpdFJlc3VsdC5sZW5ndGg+MSk/c3BsaXRSZXN1bHRbMV06IiIp O3ZhciB1cmw9ZXZ0T2JqLmRhdGEucmVwb3J0X3BhZ2U7aWYoc2VhcmNoZXMhPW51 bGwpCntzZWFyY2hlcysrO30KaWYodXJsPT0iInx8cmVsX3BhdGguc3Vic3RyaW5n KDAsdXJsLmxlbmd0aCk9PXVybCkKe2lmKCFzZWFyY2hfZmlsdGVyc1tldnRPYmou ZmlsdGVycy5yZXBvcnRfaWRdKQp7c2VhcmNoX2ZpbHRlcnNbZXZ0T2JqLmZpbHRl cnMucmVwb3J0X2lkXT1uZXcgT2JqZWN0KCk7c2VhcmNoX2ZpbHRlcnNbZXZ0T2Jq LmZpbHRlcnMucmVwb3J0X2lkXVsnZmlsdGVycyddPW5ldyBPYmplY3QoKTtzZWFy Y2hfZmlsdGVyc1tldnRPYmouZmlsdGVycy5yZXBvcnRfaWRdWydmb3JtYXQnXT1u ZXcgT2JqZWN0KCk7fQpzZWFyY2hfZmlsdGVyc1tldnRPYmouZmlsdGVycy5yZXBv cnRfaWRdWydmaWx0ZXJzJ11bJ3BhZ2UnXT0xO3NlYXJjaF9maWx0ZXJzW2V2dE9i ai5maWx0ZXJzLnJlcG9ydF9pZF1bJ2ZpbHRlcnMnXVsnc2VhcmNoJ109MTtmaWx0 ZXJfY291bnQuYWN0aW9uPUdFVF9EQVRBO2V2dF9zZWFyY2hfdXBkYXRlLmZpcmUo ZXZ0T2JqKTt9CmVsc2UKe2ZpbHRlcl9jb3VudC5hY3Rpb249Q0hBTkdFX1BBR0U7 aWYoc3BsaXRSZXN1bHRbMF0uc2xpY2UoLTEpPT0nLycpCnNwbGl0UmVzdWx0WzBd PXNwbGl0UmVzdWx0WzBdLnNsaWNlKDAsLTEpO2ZpbHRlcl9jb3VudC51cmw9c3Bs aXRSZXN1bHRbMF0rdXJsO30KZmlsdGVyX2NvdW50LnN1YnNjcmliZWQ9ZXZ0X2dl dF9maWx0ZXJzX3JlcXVlc3Quc3Vic2NyaWJlcnMubGVuZ3RoO2ZpbHRlcl9jb3Vu dC5hY3R1YWw9MDtmaWx0ZXJfY291bnQucmVwb3J0X2lkPWV2dE9iai5maWx0ZXJz LnJlcG9ydF9pZDtyZXF1ZXN0VXBkYXRlZFNlYXJjaEZpbHRlcnMoZXZ0T2JqLmZp bHRlcnMucmVwb3J0X2lkKTt9CmZ1bmN0aW9uIHJlcXVlc3RVcGRhdGVkU2VhcmNo RmlsdGVycyhyZXBvcnRfaWQpCnt2YXIgZXZ0T2JqPW5ldyBSaWdodE5vdy5FdmVu dC5FdmVudE9iamVjdCgpO2V2dE9iai5maWx0ZXJzLnJlcG9ydF9pZD1yZXBvcnRf aWQ7ZXZ0T2JqLm5hbWU9cGxfbmFtZTtldnRfZ2V0X2ZpbHRlcnNfcmVxdWVzdC5m aXJlKGV2dE9iaik7fQpmdW5jdGlvbiBvblNlYXJjaEZpbHRlcnNVbnByb2Nlc3Nl ZCh0eXBlLGFyZ3MpCntldnRPYmo9YXJnc1swXTtmaWx0ZXJfY291bnQuYWN0aW9u PVNFTkRfRklMVEVSUztmaWx0ZXJfY291bnQuc3Vic2NyaWJlZD1ldnRfZ2V0X2Zp bHRlcnNfcmVxdWVzdC5zdWJzY3JpYmVycy5sZW5ndGg7ZmlsdGVyX2NvdW50LmFj dHVhbD0wO2ZpbHRlcl9jb3VudC5yZXBvcnRfaWQ9ZXZ0T2JqLmZpbHRlcnMucmVw b3J0X2lkO2ZpbHRlcl9jb3VudC51cmw9ZXZ0T2JqLmRhdGEudXJsO2ZpbHRlcl9j b3VudC5maWx0ZXJfbmFtZT1ldnRPYmouZGF0YS5maWx0ZXJfbmFtZTtyZXF1ZXN0 VXBkYXRlZFNlYXJjaEZpbHRlcnMoZXZ0T2JqLmZpbHRlcnMucmVwb3J0X2lkKTt9 CmZ1bmN0aW9uIG9uU2VhcmNoRmlsdGVyc1VwZGF0ZSh0eXBlLGFyZ3MpCntpZihh cmdzWzBdIT1udWxsKQpzZXRTZWFyY2hGaWx0ZXIoYXJnc1swXSk7ZmlsdGVyX2Nv dW50LmFjdHVhbCsrO2lmKGZpbHRlcl9jb3VudC5zdWJzY3JpYmVkPT1maWx0ZXJf Y291bnQuYWN0dWFsKQp7aWYoZmlsdGVyX2NvdW50LmFjdGlvbj09MSkKe3JlcXVl c3RSZXBvcnQoZmlsdGVyX2NvdW50LnJlcG9ydF9pZCk7fQplbHNlIGlmKGZpbHRl cl9jb3VudC5hY3Rpb249PTIpCntyZXF1ZXN0TmV3UGFnZSgpO30KZWxzZSBpZihm aWx0ZXJfY291bnQuYWN0aW9uPT0zKQp7dmFyIHVybD1maWx0ZXJfY291bnQudXJs O3VybD1SaWdodE5vdy5VcmwuY29udmVydFNlYXJjaEZpbHRlcnModXJsLHNlYXJj aF9maWx0ZXJzW2ZpbHRlcl9jb3VudC5yZXBvcnRfaWRdWydmaWx0ZXJzJ10sZmls dGVyX2NvdW50LnJlcG9ydF9pZCxzZWFyY2hlcyk7dmFyIGVvPW5ldyBSaWdodE5v dy5FdmVudC5FdmVudE9iamVjdCgpO2VvLm5hbWU9cGxfbmFtZTtlby5kYXRhLnVy bD11cmw7ZW8uZGF0YS5yZXBvcnRfaWQ9ZmlsdGVyX2NvdW50LnJlcG9ydF9pZCsi Ijtlby5kYXRhLmZpbHRlcl9uYW1lPWZpbHRlcl9jb3VudC5maWx0ZXJfbmFtZTtp ZihlbXB0eUhpc3RvcnlTdGF0ZSkKWUFIT08udXRpbC5IaXN0b3J5Lm5hdmlnYXRl KGJyb3dzZXJIaXN0b3J5TWFuYWdlbWVudEtleSwiIik7ZXZ0X3NlYXJjaF9maWx0 ZXJzX3VucHJvY2Vzc2VkX3VwZGF0ZS5maXJlKGVvKTt9fX0KZnVuY3Rpb24gcmVx dWVzdE5ld1BhZ2UoKQp7dmFyIG5ld3VybD1maWx0ZXJfY291bnQudXJsO25ld3Vy bD1SaWdodE5vdy5VcmwuY29udmVydFNlYXJjaEZpbHRlcnMobmV3dXJsLHNlYXJj aF9maWx0ZXJzW2ZpbHRlcl9jb3VudC5yZXBvcnRfaWRdWydmaWx0ZXJzJ10sZmls dGVyX2NvdW50LnJlcG9ydF9pZCxzZWFyY2hlcyk7bmV3dXJsPVJpZ2h0Tm93LlVy bC5hZGRQYXJhbWV0ZXIobmV3dXJsLCJzZWFyY2giLCIxIik7bmV3dXJsKz1zZXNz aW9uO1JpZ2h0Tm93LlVybC5uYXZpZ2F0ZShuZXd1cmwpO30KZnVuY3Rpb24gb25T ZXRJbml0aWFsRmlsdGVyc1JlcXVlc3QodHlwZSxhcmdzKQp7dmFyIGV2dE9iaj1h cmdzWzBdO2lmKCFzZWFyY2hfZmlsdGVyc1tldnRPYmouZmlsdGVycy5yZXBvcnRf aWRdKQp7c2VhcmNoX2ZpbHRlcnNbZXZ0T2JqLmZpbHRlcnMucmVwb3J0X2lkXT1u ZXcgT2JqZWN0KCk7c2VhcmNoX2ZpbHRlcnNbZXZ0T2JqLmZpbHRlcnMucmVwb3J0 X2lkXVsnZmlsdGVycyddPW5ldyBPYmplY3QoKTtzZWFyY2hfZmlsdGVyc1tldnRP YmouZmlsdGVycy5yZXBvcnRfaWRdWydmb3JtYXQnXT1uZXcgT2JqZWN0KCk7fQpz ZWFyY2hfZmlsdGVyc1tldnRPYmouZmlsdGVycy5yZXBvcnRfaWRdWyd0b2tlbidd PWV2dE9iai5maWx0ZXJzLnRva2VuO2Zvcih2YXIgbm9kZSBpbiBldnRPYmouZGF0 YS5mb3JtYXQpCntpZihub2RlIT0ndW5kZWZpbmVkJykKc2VhcmNoX2ZpbHRlcnNb ZXZ0T2JqLmZpbHRlcnMucmVwb3J0X2lkXVsnZm9ybWF0J11bbm9kZV09ZXZ0T2Jq LmRhdGEuZm9ybWF0W25vZGVdO30KZm9yKHZhciBub2RlIGluIGV2dE9iai5kYXRh LmZpbHRlcnMpCntpZihub2RlIT0ndW5kZWZpbmVkJykKc2VhcmNoX2ZpbHRlcnNb ZXZ0T2JqLmZpbHRlcnMucmVwb3J0X2lkXVsnZmlsdGVycyddW25vZGVdPWV2dE9i ai5kYXRhLmZpbHRlcnNbbm9kZV07fQp2YXIgYm9va21hcmtlZFN0YXRlPVlBSE9P LnV0aWwuSGlzdG9yeS5nZXRCb29rbWFya2VkU3RhdGUoYnJvd3Nlckhpc3RvcnlN YW5hZ2VtZW50S2V5KTt2YXIgaW5pdGlhbEhpc3RvcnlTdGF0ZT1ib29rbWFya2Vk U3RhdGV8fCIiO2lmKCFlbXB0eUhpc3RvcnlTdGF0ZSkKZW1wdHlIaXN0b3J5U3Rh dGU9Z2V0SGlzdG9yeVN0YXRlRm9yKGJ1aWxkUmVxdWVzdFBhcmFtZXRlcnMoZXZ0 T2JqLmZpbHRlcnMucmVwb3J0X2lkKSk7WUFIT08udXRpbC5IaXN0b3J5LnJlZ2lz dGVyKGJyb3dzZXJIaXN0b3J5TWFuYWdlbWVudEtleSxpbml0aWFsSGlzdG9yeVN0 YXRlLHJlcXVlc3RSZXBvcnRIaXN0b3J5Q2FsbGJhY2spO3RyeQp7WUFIT08udXRp bC5IaXN0b3J5Lm9uUmVhZHkoZnVuY3Rpb24oKXt2YXIgY3VycmVudFN0YXRlPVlB SE9PLnV0aWwuSGlzdG9yeS5nZXRDdXJyZW50U3RhdGUoYnJvd3Nlckhpc3RvcnlN YW5hZ2VtZW50S2V5KTtpZihjdXJyZW50U3RhdGUhPT0iIikKcmVxdWVzdFJlcG9y dEhpc3RvcnlDYWxsYmFjayhjdXJyZW50U3RhdGUpO30pO1lBSE9PLnV0aWwuSGlz dG9yeS5pbml0aWFsaXplKCJybl9IaXN0b3J5X0ZpZWxkIiwicm5fSGlzdG9yeV9J ZnJhbWUiKTtpc0Jyb3dzZXJIaXN0b3J5TWFuYWdlbWVudEVuYWJsZWQ9dHJ1ZTt9 Y2F0Y2goZSl7aXNCcm93c2VySGlzdG9yeU1hbmFnZW1lbnRFbmFibGVkPWZhbHNl O319CmZ1bmN0aW9uIG9uTW9yZVJlc3VsdHNSZXF1ZXN0KHR5cGUsYXJnKQp7dmFy IGV2dE9iaj1hcmdbMF07aWYoIXNlYXJjaF9maWx0ZXJzW2V2dE9iai5maWx0ZXJz LnJlcG9ydF9pZF0pCntzZWFyY2hfZmlsdGVyc1tldnRPYmouZmlsdGVycy5yZXBv cnRfaWRdPW5ldyBPYmplY3QoKTtzZWFyY2hfZmlsdGVyc1tldnRPYmouZmlsdGVy cy5yZXBvcnRfaWRdWydmaWx0ZXJzJ109bmV3IE9iamVjdCgpO3NlYXJjaF9maWx0 ZXJzW2V2dE9iai5maWx0ZXJzLnJlcG9ydF9pZF1bJ2Zvcm1hdCddPW5ldyBPYmpl Y3QoKTt9CnNlYXJjaF9maWx0ZXJzW2V2dE9iai5maWx0ZXJzLnJlcG9ydF9pZF1b J2ZpbHRlcnMnXVsnbm9fdHJ1bmNhdGUnXT0xO3NlYXJjaF9maWx0ZXJzW2V2dE9i ai5maWx0ZXJzLnJlcG9ydF9pZF1bJ2ZpbHRlcnMnXVsnc2VhcmNoJ109MDtyZXF1 ZXN0UmVwb3J0KGV2dE9iai5maWx0ZXJzLnJlcG9ydF9pZCk7c2VhcmNoX2ZpbHRl cnNbZXZ0T2JqLmZpbHRlcnMucmVwb3J0X2lkXVsnZmlsdGVycyddWydub190cnVu Y2F0ZSddPTA7fQpmdW5jdGlvbiBvblNlYXJjaEluUHJvZ3Jlc3ModHlwZSxhcmcp CntldnRfc2VhcmNoX2luX3Byb2dyZXNzX3VwZGF0ZS5maXJlKGFyZ1swXSk7fQpm dW5jdGlvbiBvblBhZ2VSZXF1ZXN0KHR5cGUsYXJnKQp7dmFyIGV2dE9iaj1hcmdb MF07aWYoIXNlYXJjaF9maWx0ZXJzW2V2dE9iai5maWx0ZXJzLnJlcG9ydF9pZF0p CntzZWFyY2hfZmlsdGVyc1tldnRPYmouZmlsdGVycy5yZXBvcnRfaWRdPW5ldyBP YmplY3QoKTtzZWFyY2hfZmlsdGVyc1tldnRPYmouZmlsdGVycy5yZXBvcnRfaWRd WydmaWx0ZXJzJ109bmV3IE9iamVjdCgpO3NlYXJjaF9maWx0ZXJzW2V2dE9iai5m aWx0ZXJzLnJlcG9ydF9pZF1bJ2Zvcm1hdCddPW5ldyBPYmplY3QoKTt9CnNlYXJj aF9maWx0ZXJzW2V2dE9iai5maWx0ZXJzLnJlcG9ydF9pZF1bJ2ZpbHRlcnMnXVsn cGFnZSddPWV2dE9iai5kYXRhLnBhZ2U7ZGVsZXRlIHNlYXJjaF9maWx0ZXJzW2V2 dE9iai5maWx0ZXJzLnJlcG9ydF9pZF1bJ2ZpbHRlcnMnXVsnc2VhcmNoJ107cmVx dWVzdFJlcG9ydChldnRPYmouZmlsdGVycy5yZXBvcnRfaWQpO30KZnVuY3Rpb24g cmVxdWVzdFJlcG9ydChyZXBvcnRfaWQpCnt2YXIgcmVxdWVzdFBhcmFtZXRlcnM9 YnVpbGRSZXF1ZXN0UGFyYW1ldGVycyhyZXBvcnRfaWQpO2lmKGlzQnJvd3Nlckhp c3RvcnlNYW5hZ2VtZW50RW5hYmxlZCkKe3RyeXt2YXIgc3RhdGVTdHJpbmc9WUFI T08ubGFuZy5KU09OLnN0cmluZ2lmeShyZXF1ZXN0UGFyYW1ldGVycyk7dmFyIHN0 YXRlT2JqZWN0PXJlcXVlc3RQYXJhbWV0ZXJzO2lmKCJwImluIHN0YXRlT2JqZWN0 LnNmJiYiZGF0YSJpbiBzdGF0ZU9iamVjdC5zZi5wJiYiY2FjaGUiaW4gc3RhdGVP YmplY3Quc2YucC5kYXRhKQpkZWxldGUgc3RhdGVPYmplY3Quc2YucC5kYXRhLmNh Y2hlO2lmKCJjImluIHN0YXRlT2JqZWN0LnNmJiYiZGF0YSJpbiBzdGF0ZU9iamVj dC5zZi5jJiYiY2FjaGUiaW4gc3RhdGVPYmplY3Quc2YuYy5kYXRhKQpkZWxldGUg c3RhdGVPYmplY3Quc2YuYy5kYXRhLmNhY2hlO3ZhciBzdGF0ZT1SaWdodE5vdy5U ZXh0LkVuY29kaW5nLmJhc2U2NEVuY29kZShZQUhPTy5sYW5nLkpTT04uc3RyaW5n aWZ5KHN0YXRlT2JqZWN0KSk7dmFyIG5ld0xlbmd0aDtpZih3aW5kb3cubG9jYXRp b24uaHJlZi5pbmRleE9mKCcjJyk+LTEpCm5ld0xlbmd0aD13aW5kb3cubG9jYXRp b24uaHJlZi5zdWJzdHIoMCx3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCcj JykpLmxlbmd0aCtzdGF0ZS5sZW5ndGg7ZWxzZQpuZXdMZW5ndGg9d2luZG93Lmxv Y2F0aW9uLmhyZWYubGVuZ3RoK3N0YXRlLmxlbmd0aDtpZihZQUhPTy5lbnYudWEu aWU+MCYmbmV3TGVuZ3RoPjIwODApCntyZXF1ZXN0UmVwb3J0V2l0aChyZXF1ZXN0 UGFyYW1ldGVycyk7cmV0dXJuO30KWUFIT08udXRpbC5IaXN0b3J5Lm5hdmlnYXRl KGJyb3dzZXJIaXN0b3J5TWFuYWdlbWVudEtleSxzdGF0ZSk7fQpjYXRjaChlcnIp e2FsZXJ0KCJlcnJvcjogIitlcnIubWVzc2FnZSk7fX0KZWxzZQpyZXF1ZXN0UmVw b3J0V2l0aChyZXF1ZXN0UGFyYW1ldGVycyk7fQpmdW5jdGlvbiBnZXRSZXF1ZXN0 UGFyYW1ldGVyc0ZvcihoaXN0b3J5U3RhdGUpCntpZihoaXN0b3J5U3RhdGU9PT0i IikKcmV0dXJuIGdldFJlcXVlc3RQYXJhbWV0ZXJzRm9yKGVtcHR5SGlzdG9yeVN0 YXRlKTtyZXR1cm4gWUFIT08ubGFuZy5KU09OLnBhcnNlKFJpZ2h0Tm93LlRleHQu RW5jb2RpbmcuYmFzZTY0RGVjb2RlKGhpc3RvcnlTdGF0ZSkpO30KZnVuY3Rpb24g Z2V0SGlzdG9yeVN0YXRlRm9yKHJlcXVlc3RQYXJhbWV0ZXJzKQp7cmV0dXJuIFJp Z2h0Tm93LlRleHQuRW5jb2RpbmcuYmFzZTY0RW5jb2RlKFlBSE9PLmxhbmcuSlNP Ti5zdHJpbmdpZnkocmVxdWVzdFBhcmFtZXRlcnMpKTt9CmZ1bmN0aW9uIGdldEVt cHR5RXZlbnRPYmplY3RXaXRoKHJlcG9ydElkKQp7dmFyIG5ld2VvPW5ldyBSaWdo dE5vdy5FdmVudC5FdmVudE9iamVjdCgpO25ld2VvLmZpbHRlcnMucmVwb3J0X2lk PXJlcG9ydElkO25ld2VvLmZpbHRlcnMuZGF0YT0iIjtyZXR1cm4gbmV3ZW87fQpm dW5jdGlvbiByZXF1ZXN0UmVwb3J0SGlzdG9yeUNhbGxiYWNrKGhpc3RvcnlTdGF0 ZSkKe3ZhciByZXF1ZXN0UGFyYW1ldGVycz1nZXRSZXF1ZXN0UGFyYW1ldGVyc0Zv cihoaXN0b3J5U3RhdGUpO2V2dF9zZWFyY2hfaW5fcHJvZ3Jlc3NfcmVxdWVzdC5m aXJlKG5ldyBSaWdodE5vdy5FdmVudC5FdmVudE9iamVjdCgpKTtpZihyZXF1ZXN0 UGFyYW1ldGVycy5zZi5zZWFyY2hUeXBlIT1udWxsKQpldnRfc2VhcmNoX3R5cGVf dXBkYXRlLmZpcmUocmVxdWVzdFBhcmFtZXRlcnMuc2Yuc2VhcmNoVHlwZSk7aWYo cmVxdWVzdFBhcmFtZXRlcnMuc2Yuc29ydF9hcmdzIT1udWxsKQpldnRfc29ydF90 eXBlX3VwZGF0ZS5maXJlKHJlcXVlc3RQYXJhbWV0ZXJzLnNmLnNvcnRfYXJncyk7 ZXZ0X2tleXdvcmRfY2hhbmdlZF91cGRhdGUuZmlyZShyZXF1ZXN0UGFyYW1ldGVy cy5zZi5rZXl3b3JkfHxnZXRFbXB0eUV2ZW50T2JqZWN0V2l0aChyZXF1ZXN0UGFy YW1ldGVycy5yZXBvcnRfaWQpKTtzZWFyY2hfZmlsdGVyc1tyZXF1ZXN0UGFyYW1l dGVycy5yZXBvcnRfaWRdLmZpbHRlcnM9cmVxdWVzdFBhcmFtZXRlcnMuc2Y7cmVx dWVzdFJlcG9ydFdpdGgocmVxdWVzdFBhcmFtZXRlcnMpO30KdmFyIHJlcXVlc3RQ YXJhbWV0ZXJDb3VudGVyPTA7ZnVuY3Rpb24gYnVpbGRSZXF1ZXN0UGFyYW1ldGVy cyhyZXBvcnRfaWQpCnt2YXIgc2Y9c2VhcmNoX2ZpbHRlcnNbcmVwb3J0X2lkXS5m aWx0ZXJzO3ZhciBmbXQ9c2VhcmNoX2ZpbHRlcnNbcmVwb3J0X2lkXS5mb3JtYXQ7 dmFyIHRva2VuPXNlYXJjaF9maWx0ZXJzW3JlcG9ydF9pZF0udG9rZW47cmV0dXJu eydzZic6c2YsJ3JlcG9ydF9pZCc6cmVwb3J0X2lkLCd0b2tlbic6dG9rZW4sJ2Zt dCc6Zm10LCdjJzpyZXF1ZXN0UGFyYW1ldGVyQ291bnRlcisrfTt9CmZ1bmN0aW9u IHJlcXVlc3RSZXBvcnRXaXRoKHJlcXVlc3RQYXJhbWV0ZXJzKQp7dmFyIHBvc3RE YXRhPSJmaWx0ZXJzPSIrZW5jb2RlVVJJQ29tcG9uZW50KFlBSE9PLmxhbmcuSlNP Ti5zdHJpbmdpZnkocmVxdWVzdFBhcmFtZXRlcnMuc2YpKSsiJnJlcG9ydF9pZD0i K3JlcXVlc3RQYXJhbWV0ZXJzLnJlcG9ydF9pZCsiJnJfdG9rPSIrcmVxdWVzdFBh cmFtZXRlcnMudG9rZW4rIiZmb3JtYXQ9IitZQUhPTy5sYW5nLkpTT04uc3RyaW5n aWZ5KHJlcXVlc3RQYXJhbWV0ZXJzLmZtdCk7aWYoaXNCcm93c2VySGlzdG9yeU1h bmFnZW1lbnRFbmFibGVkJiZjYWNoZWRSZXBvcnRSZXNwb25zZXNbcG9zdERhdGFd KQphamF4UmVwb3J0RGF0YVN1Y2Nlc3MoY2FjaGVkUmVwb3J0UmVzcG9uc2VzW3Bv c3REYXRhXSk7ZWxzZQpSTlQuRXZlbnRzLmFqYXhSZXF1ZXN0KHBvc3REYXRhLCIv Y2kvYWpheFJlcXVlc3QvZ2V0UmVwb3J0RGF0YSIsImFqYXhSZXBvcnREYXRhU3Vj Y2VzcyIpO30KZnVuY3Rpb24gYWpheFJlcG9ydERhdGFTdWNjZXNzKG8pCntpZihv LnJlc3BvbnNlVGV4dCE9PXVuZGVmaW5lZCkKe2lmKGlzQnJvd3Nlckhpc3RvcnlN YW5hZ2VtZW50RW5hYmxlZCkKY2FjaGVkUmVwb3J0UmVzcG9uc2VzW28uYXJndW1l bnRdPW87dmFyIHJlc3VsdHM9WUFIT08ubGFuZy5KU09OLnBhcnNlKG8ucmVzcG9u c2VUZXh0KTt2YXIgZW89bmV3IFJpZ2h0Tm93LkV2ZW50LkV2ZW50T2JqZWN0KCk7 ZW8ubmFtZT1wbF9uYW1lO2VvLmRhdGE9cmVzdWx0cztlby5maWx0ZXJzLnJlcG9y dF9pZD1yZXN1bHRzLnJlcG9ydF9pZDtldnRfcmVwb3J0X3VwZGF0ZS5maXJlKGVv KTtldnRfdG9waWNfd29yZHNfdXBkYXRlLmZpcmUoZW8pO2V2dF9zZWFyY2hfc3Vn Z2VzdF91cGRhdGUuZmlyZShlbyk7UmlnaHROb3cuVXJsLnRyYW5zZm9ybUxpbmtz KCk7aW5pdExpbmtJbnRlcmNlcHRpb24oKTt9fQpmdW5jdGlvbiBmb3JtRmllbGRT ZW5kU3VjY2VzcyhvKQp7aWYoby5yZXNwb25zZVRleHQhPT11bmRlZmluZWQpCmV2 dF9mb3JtX2J1dHRvbl9zdWJtaXRfdXBkYXRlLmZpcmUoby5yZXNwb25zZVRleHQp O30KZnVuY3Rpb24gb25TZW5kRm9ybSgpCntvblNlbmRGb3JtLl9zbWFydEFzc2lz dGFudD0ob25TZW5kRm9ybS5fc21hcnRBc3Npc3RhbnQ9PT10cnVlKT9mYWxzZTp0 cnVlO3ZhciBmb3JtRmllbGRzPVlBSE9PLmxhbmcuSlNPTi5zdHJpbmdpZnkoUmln aHROb3cuVUkuRm9ybS5mb3JtRmllbGRzKTt2YXIgcG9zdERhdGE9ImFfaWQ9Iitf YW5zd2VySUQrIiZpX2lkPSIrX2luY2lkZW50SUQrIiZzbXJ0X2Fzc3Q9IitvblNl bmRGb3JtLl9zbWFydEFzc2lzdGFudCsiJmZfdG9rPSIrUmlnaHROb3cuVUkuRm9y bS5mb3JtVG9rZW4rIiZmb3JtPSIrZW5jb2RlVVJJQ29tcG9uZW50KGZvcm1GaWVs ZHMpO1JOVC5FdmVudHMuYWpheFJlcXVlc3QocG9zdERhdGEsIi9jaS9hamF4UmVx dWVzdC9zZW5kRm9ybSIsImZvcm1GaWVsZFNlbmRTdWNjZXNzIiwiZ2VuZXJpY0Fq YXhGYWlsdXJlIik7fQpmdW5jdGlvbiBvblNlbmRQYXNzd29yZFJlc2V0Rm9ybSh0 eXBlLGFyZykKe3ZhciBldnRPYmo9YXJnWzBdO3ZhciBwb3N0RGF0YT0icHdfcmVz ZXQ9IitldnRPYmoucHdfcmVzZXQ7dHJ5e3ZhciBmb3JtRmllbGRzPVlBSE9PLmxh bmcuSlNPTi5zdHJpbmdpZnkoUmlnaHROb3cuVUkuRm9ybS5mb3JtRmllbGRzKTtm b3JtRmllbGRzPWVuY29kZVVSSUNvbXBvbmVudChmb3JtRmllbGRzKTtwb3N0RGF0 YSs9IiZmX3Rvaz0iK1JpZ2h0Tm93LlVJLkZvcm0uZm9ybVRva2VuKyImZm9ybT0i K2Zvcm1GaWVsZHM7fWNhdGNoKGUpe30KUk5ULkV2ZW50cy5hamF4UmVxdWVzdChw b3N0RGF0YSwiL2NpL2FqYXhSZXF1ZXN0L3Jlc2V0UGFzc3dvcmQiLCJmb3JtRmll bGRTZW5kU3VjY2VzcyIsImdlbmVyaWNBamF4RmFpbHVyZSIpO30KZnVuY3Rpb24g Y2hhdFF1ZXVlQW5zd2VyKG8pCntpZihvLnJlc3BvbnNlVGV4dCE9PXVuZGVmaW5l ZCkKZXZ0X2NoYXRfcXVldWVfdXBkYXRlLmZpcmUoby5yZXNwb25zZVRleHQpO30K ZnVuY3Rpb24gb25DaGVja1F1ZXVlKHR5cGUsYXJncykKe3ZhciBldnRPYmo9WUFI T08ubGFuZy5KU09OLnBhcnNlKGFyZ3NbMF0pO3ZhciBwb3N0RGF0YT0iaW50ZXJm YWNlX2lkPSIrZXZ0T2JqLmRhdGEuaW50ZXJmYWNlX2lkO2lmKGV2dE9iai5kYXRh LnFpZCkKcG9zdERhdGErPSImcWlkPSIrZXZ0T2JqLmRhdGEucWlkO2lmKGV2dE9i ai5kYXRhLmNfaWQpCnBvc3REYXRhKz0iJmNfaWQ9IitldnRPYmouZGF0YS5jX2lk O2lmKGV2dE9iai5kYXRhLm9yZ19pZCkKcG9zdERhdGErPSImb3JnX2lkPSIrZXZ0 T2JqLmRhdGEub3JnX2lkO2lmKGV2dE9iai5kYXRhLmNvbnRhY3RfZW1haWwpCnBv c3REYXRhKz0iJmNvbnRhY3RfZW1haWw9IitldnRPYmouZGF0YS5jb250YWN0X2Vt YWlsO2lmKGV2dE9iai5kYXRhLmNvbnRhY3RfZm5hbWUpCnBvc3REYXRhKz0iJmNv bnRhY3RfZm5hbWU9IitldnRPYmouZGF0YS5jb250YWN0X2ZuYW1lO2lmKGV2dE9i ai5kYXRhLmNvbnRhY3RfbG5hbWUpCnBvc3REYXRhKz0iJmNvbnRhY3RfbG5hbWU9 IitldnRPYmouZGF0YS5jb250YWN0X2xuYW1lO2lmKGV2dE9iai5kYXRhLnByb2Qp CnBvc3REYXRhKz0iJnByb2Q9IitldnRPYmouZGF0YS5wcm9kO2lmKGV2dE9iai5k YXRhLmNhdCkKcG9zdERhdGErPSImY2F0PSIrZXZ0T2JqLmRhdGEuY2F0O2lmKGV2 dE9iai5kYXRhLnRlc3QpCnBvc3REYXRhKz0iJnRlc3Q9IitldnRPYmouZGF0YS50 ZXN0O1JOVC5FdmVudHMuYWpheFJlcXVlc3QocG9zdERhdGEsIi9jaS9hamF4UmVx dWVzdE9wdGlvbmFsL2NoZWNrQ2hhdFF1ZXVlIiwiY2hhdFF1ZXVlQW5zd2VyIik7 fQpmdW5jdGlvbiBvbkNoYXRTZXR0aW5nc1JlcXVlc3QodHlwZSxhcmdzKQp7dmFy IGV2dE9iaj1hcmdzWzBdO2NoYXQud2FpdF90aHJlc2hvbGQ9ZXZ0T2JqLmRhdGEu d2FpdF90aHJlc2hvbGQ7Y2hhdC5taW5fYWdlbnRzX2F2YWlsPWV2dE9iai5kYXRh Lm1pbl9hZ2VudHNfYXZhaWw7fQpmdW5jdGlvbiBvbkNoYXROb3RpZnlGQXR0YWNo KHR5cGUsYXJncykKe3ZhciBldnRPYmo9YXJnc1swXTtwb3N0RGF0YT0iZW5nYWdl bWVudElkPSIrZXZ0T2JqLmRhdGEuZW5nYWdlbWVudF9pZDtwb3N0RGF0YSs9IiZj aGF0U0lkPSIrZXZ0T2JqLmRhdGEuY2hhdF9zaWQ7Uk5ULkV2ZW50cy5hamF4UmVx dWVzdChwb3N0RGF0YSwiL2NpL2FqYXhSZXF1ZXN0L25vdGlmeUNoYXRTZXJ2aWNl RkF0dGFjaCIsImNoYXROb3RpZnlGQXR0YWNoQW5zd2VyIik7fQpmdW5jdGlvbiBj aGF0Tm90aWZ5RkF0dGFjaEFuc3dlcihvKQp7aWYoby5yZXNwb25zZVRleHQhPW51 bGwpCmV2dF9jaGF0X25vdGlmeV9mYXR0YWNoX3VwZGF0ZS5maXJlKG8ucmVzcG9u c2VUZXh0KTt9CmZ1bmN0aW9uIG9uUGFjU3RhdFJlcXVlc3QodHlwZSxhcmdzKQp7 dmFyIGV2dE9iaj1hcmdzWzBdO2lmKGV2dE9iaikKe3Bvc3REYXRhPSJ0eXBlPSIr ZXZ0T2JqLmRhdGEuZHFhSW5zZXJ0VHlwZSsiJndpZGdldD0iK2V2dE9iai5kYXRh LmRxYVdpZGdldFR5cGUrIiZjb2x1bW49IitldnRPYmouZGF0YS5kcWFBY3Rpb247 Uk5ULkV2ZW50cy5hamF4UmVxdWVzdChwb3N0RGF0YSwiL2NpL2FqYXhSZXF1ZXN0 L2luc2VydFdpZGdldFN0YXRzIik7fX0KZnVuY3Rpb24gZ2VuZXJpY0FqYXhGYWls dXJlKG8pCntpZihvLnJlc3BvbnNlVGV4dCE9PXVuZGVmaW5lZCkKe2lmKG8ucmVz cG9uc2VUZXh0PT0iQ2xlYW5zZSBFcnJvciIpCnthbGVydCgiQWpheCBkYXRhIGZh aWx1cmU6IElsbGVnYWwgcGFyYW1ldGVyIHZhbHVlIik7fQplbHNlCnthbGVydCgi QWpheCByZXF1ZXN0IGZhaWx1cmU6ICIrby5yZXNwb25zZVRleHQpO319fQpSTlQu RXZlbnRzLmFqYXhSZXF1ZXN0PWZ1bmN0aW9uKHBvc3QsdXJsLHN1Y2Nlc3NIYW5k bGVyLGZhaWx1cmVIYW5kbGVyLGRhdGEpCnt2YXIgcmVxdWVzdE9iamVjdD17InBv c3QiOnBvc3QsInVybCI6dXJsLCJzdWNjZXNzSGFuZGxlciI6c3VjY2Vzc0hhbmRs ZXIsImZhaWx1cmVIYW5kbGVyIjpmYWlsdXJlSGFuZGxlciwiZGF0YSI6ZGF0YX07 b25fYmVmb3JlX2FqYXhfcmVxdWVzdC5maXJlKHJlcXVlc3RPYmplY3QpO3JlcXVl c3RPYmplY3Q9UmlnaHROb3cuTGFuZy5jbG9uZU9iamVjdChyZXF1ZXN0T2JqZWN0 KTt2YXIgY2FsbGJhY2s9e307Y2FsbGJhY2suc3VjY2Vzcz1ldmFsKHJlcXVlc3RP YmplY3Quc3VjY2Vzc0hhbmRsZXIpOyhyZXF1ZXN0T2JqZWN0LmZhaWx1cmVIYW5k bGVyPT1udWxsKT9jYWxsYmFjay5mYWlsdXJlPWdlbmVyaWNBamF4RmFpbHVyZTpj YWxsYmFjay5mYWlsdXJlPWV2YWwocmVxdWVzdE9iamVjdC5mYWlsdXJlSGFuZGxl cik7aWYocmVxdWVzdE9iamVjdC5kYXRhIT1udWxsKWNhbGxiYWNrLmFyZ3VtZW50 PXJlcXVlc3RPYmplY3QuZGF0YTtyZXF1ZXN0T2JqZWN0LnVybCs9c2Vzc2lvbjtp ZihyZXF1ZXN0T2JqZWN0LnBvc3Q9PSIiKQp2YXIgcmVxdWVzdD1ZQUhPTy51dGls LkNvbm5lY3QuYXN5bmNSZXF1ZXN0KCdQT1NUJyxyZXF1ZXN0T2JqZWN0LnVybCxj YWxsYmFjayk7ZWxzZQp2YXIgcmVxdWVzdD1ZQUhPTy51dGlsLkNvbm5lY3QuYXN5 bmNSZXF1ZXN0KCdQT1NUJyxyZXF1ZXN0T2JqZWN0LnVybCxjYWxsYmFjayxyZXF1 ZXN0T2JqZWN0LnBvc3QpO307fQ== ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=home.gif Content-Type: image/gif; name=home.gif Content-Location: http://acer--uk.custhelp.com/euf/rightnow/optimized/1316468885/themes/standard/images/acer/home.gif Content-Transfer-Encoding: Base64 R0lGODlhDgALALMAAAAAAP////Pz8+fn58DAwL+/v3Z2dmlpaV1dXVBQUCsrK/// /wAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAOAAsAAAQvcEkpTBozU6PU1VvXfVkl iuQyHOf5DUnbXrE8S4SIILmCZAUdIugDCom/CVGWjAAAOw== ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=Share.png Content-Type: image/png; name=Share.png Content-Location: http://acer--uk.custhelp.com/euf/rightnow/optimized/1316468885/themes/standard/images/Share.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAAACXBIWXMAAABIAAAA SABGyWs+AAAACXZwQWcAAAAUAAAAFACjOyrRAAAAyVBMVEUAAAANDQ0ODg4PDw8R ERESEhITExMUFBQVFRUZGRkfHx8gHh8hHx8mJiYpJygsLCwvLy9nZ2doaGhqampr a2tubm5vb290dHR5d3h5eXl6enp8fHx+fn6AgICEhISFhYWHh4eLi4uMjIyNjY2O jo6SkpKUlJSXl5eYmJienp6fn5+hoaGioqKnp6epqamqqqqrq6usrKyurq62tra6 urq9vb3Av7/AwMDCwcHDw8PExMTHx8fIyMjJyMnKycng4ODq6ur+/v7///8D4h// AAAAAXRSTlMAQObYZgAAAAFiS0dEQYnebE4AAACzSURBVBgZBcG7SgNRFADAObtn EUUsxF9QAzYBe/+/i00KsRG7WBgkwUd27z3OAACAYPUOAKYv4X63BoD66C/h/LEB gNj8pPqb4RPXoKTqC9St1wWUVDVDp8+gJFVQVAFS9TpiZDjgUkm1zP0B3GE7K6l9 HxsAp6ZJsCHWnguQhAGFAZBiiEAnBhCVYpxgYUwQUowTtK2YQEh5McIVQOyWNO1v AEBOv/F0ejuAUGBcnQEAgH9qL0b+Zw97UgAAACV0RVh0Y3JlYXRlLWRhdGUAMjAw OS0wOC0xN1QxNTo0ODowNyswMDowMLktnTAAAAAldEVYdG1vZGlmeS1kYXRlADIw MDktMDgtMTdUMTU6NDg6MDcrMDA6MDDmnOsEAAAAAElFTkSuQmCC ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=Print.png Content-Type: image/png; name=Print.png Content-Location: http://acer--uk.custhelp.com/euf/rightnow/optimized/1316468885/themes/standard/images/Print.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAAACXBIWXMAAABIAAAA SABGyWs+AAAACXZwQWcAAAAUAAAAFACjOyrRAAAA0lBMVEUAAAALCwsNDQ0VFRUX GRsZGRkaGhoaHR8bGxsdHR0eHh4fHx8lJSUnKSsrKysvLy8vMTM9PT0/QENDQ0NE REREREdHR0dKSkpLTE9NTU1OTk5SUlVWVlZbXF9cXFxjY2NnZ2dubm5wcHBxcXF4 eHh6enuEhISFg4OFhYWGhISGhoaIhoeLi42ZmZmampqcm5ufn5+np6mpqamtrKy2 tra8u7vIyMjR0NDX1tbd3d3h4ODh4eHi4uLt7e3u7u7w8PDy8vLz8/P19fX9/f3+ /v7///9ScSblAAAAAXRSTlMAQObYZgAAAAFiS0dERPm0mMEAAAC2SURBVBgZlcHZ dsFQGIDRj0jMaiZKpKKaqhZBDCF1avX9X6lr8efUTS+6N/zPWOPX8CKGaL59ErZP wmvsRcMj0al8iEqHq6Zllcy+MEuW1QRyUVR/1upRlAPycdx61FpxnAcKSnUHWlep AlC8vM+W2mw6LQJmGE4W2iQMTSDtuuWqVnbdNJBynIzxIIyM46QAYxFkayNRywaB AV+b+Wt7fRTr9svb6hNQu975W5x72wM3T3f4yw9gviZkBhQ0XQAAACV0RVh0Y3Jl YXRlLWRhdGUAMjAwOS0wOC0xN1QxNTo0ODowNiswMDowMB9aloQAAAAldEVYdG1v ZGlmeS1kYXRlADIwMDktMDgtMTdUMTU6NDg6MDYrMDA6MDBA6+CwAAAAAElFTkSu QmCC ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=Email.png Content-Type: image/png; name=Email.png Content-Location: http://acer--uk.custhelp.com/euf/rightnow/optimized/1316468885/themes/standard/images/Email.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABU0lEQVQ4y+2UwaqC UBCGe4qiRXbfpm2tXLjqLXLnRgh6ATc9QmKSbZLIQlLBbS+QohRtooUS8t/mlJIE Qve2bOCDM8w/P8eZg7XaNz4S9Xodn6BkeDweEQQB9vv9W1DP6XQqGzYaDbiui+Fw iPP5jDiOEUVRJaQhLfWMx2OQR8nQcRxMJhOs12skSYLD4VAJaUhLPfP5vGxI191u t9B1nSHLMpbLJa7XKy6XSwkyohppcj3xMkPbtjGdTgt6vR4GgwGyLEOapgw6h2HI as9a4sVws9lAVdUCRVHQ6XTQ7XaLufE8j36/z2rPWqLSUBRFNp/ZbMZyQRAYeZ3m LUlStSF9sqZpbDaGYbBzFYvFAqPRqMhfno3v+7AsC6ZpvgUtaLValbfcbDax2+3Y pv+C53kgD2bm3R4012rd4NB+hrvzw2g/uOd5LddyD1zHxfdH9v/4BdviV7KvFAtH AAAAAElFTkSuQmCC ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=Notification.png Content-Type: image/png; name=Notification.png Content-Location: http://acer--uk.custhelp.com/euf/rightnow/optimized/1316468885/themes/standard/images/Notification.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAAACXBIWXMAAABIAAAA SABGyWs+AAAACXZwQWcAAAAUAAAAFACjOyrRAAABtlBMVEUAAAANDQ0ODg4QEBAS EhITExMUFBQWFhYXFxcZGRkaGhobGxsdHR0eHh4fHx8gICAjIyMkJCQmJiYoKCgp KSkuLi4wMDAxMTEyMjI2NjY3Nzc6Ojo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJD Q0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tMTExNTU1PT09RUVFSUlJTU1NUVFRV VVVWVlZZWVlaWlpbW1teXl5fX19gYGBhYWFkZGRoaGhpaWlra2tubm5vb29wcHBx cXFzc3N0dHR1dXV4eHh5eXl6enp8fHx+fn5/f3+BgYGCgoKDg4OGhoaHh4eIiIiO jo6Pj4+RkZGUlJSXl5eenp6goKChoaGjo6OkpKSmpqarq6usrKy0tLS2tra6urrC wsLExMTGxsbHx8fLy8vMzMzNzc3Pz8/T09PU1NTV1NTW1tbX1tbX19fY2Njb2trc 3Nzd3d3h4eHi4uLj4+Pk5OTl49rl5OTn5+fo6Ojp6enq6err6urr6+vs7Ozt7e3v 7+/w8PDz8/P08eX09PT19PT29vb4+Pj5+fn6+vr8/Pz9/f3+/v7///+/WGNAAAAA AXRSTlMAQObYZgAAAAFiS0dEkHgKjgwAAAEOSURBVBjTY2CAAWYWBnSgbBPgxI8m LKTXFeQlrceLLKZW2NucGOni6C+HELMyT29O8VGQ1/TWtYALisQ0dhf6qsurW3oK wAW5cyZ0N/nry6mZRrAhBHOBgoHGcqomYaxwQYn8CT3Noc6Kyua+fHDB6KbczPgQ DxNNMzctmFhsQlJGdm5UuL2GrK01TFCxt7evtzktOcBKR1uP3RUimNo/sbEiK9gv MtzdytSQESxmHKwmJcDD5ezMySEgZ+CgAhYU07EwUJW3bI+zkpTXMdIQgWjn4xMW V1aqipKRERXk4bVDDhQmJgYCoK21obq8tLggL6+gqKSssr6pDSzc0drS1FBXU1Nb 19jS2tHJwAAA5+lAS4WfecMAAAAldEVYdGNyZWF0ZS1kYXRlADIwMDktMDgtMjVU MTU6Mjg6MzYrMDA6MDCtWiXDAAAAJXRFWHRtb2RpZnktZGF0ZQAyMDA5LTA4LTI1 VDE1OjI4OjM2KzAwOjAw8utT9wAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VS ZWFkeXHJZTwAAAAASUVORK5CYII= ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=icon_hotKeyHelp.png Content-Type: image/png; name=icon_hotKeyHelp.png Content-Location: http://support.gateway.com/s/images/icon_hotKeyHelp.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAACAAAAAhCAIAAAA3RD4GAAAACXBIWXMAAAsTAAAL EwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj33 3vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEs DIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIe EeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH /w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAn f+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJ V2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4 mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHg g/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl 7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/A V/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5 WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQ WHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAA RKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv 1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4 IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGy UT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPE bDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhM WE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPE NyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD 5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2h tlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0 dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHK CpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2ep O6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN 2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIp G6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3n U9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36 p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYP jGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLn m+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cR p7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0H DYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dn F2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofc n8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh 7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJ gUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5p DoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85 ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7 F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/R NtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9 MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo 1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5 sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWF fevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTP ZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJ zs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ +7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3v dy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtb Ylu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ7 52PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7 nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9 zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9D BY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfy l5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT 0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADq YAAAOpgAABdvkl/FRgAAAcBJREFUeNpi/P//PwMtARMDjQHNLWAhqOL27dt79+y9 fPnSzm3bISLuXp66unrOLs6qqqoEtTPiiYN379719fauWLoMl4KI6KjMrCxpaWly LHj37l1IUNCjBw/xO1BOQX7x0qV47MAZB329vXDTTc3NFi9fdufBfQhavHyZqbkZ ROrRg4clRUXfv3/H6YT/2MCxY8eU5RUgKCIs7Nu3b2gKvn37lpWZCVezYf36/zgA dh8cOXwYzm5qaeHk5ERTwMnJ2dzSAufu2rWLtCCaOW06PMHgSipCQkLpWZkQNjyB EWUBcoBaWVnhiWEpKSly8gEnJ+edB/cZGBiePn2KGTjI4NixYxRlNPwJ/OnTp/CQ gYcV1YqK79+/lxQVwbkBgYHUtODp06dJCQmnT56CcEvKy/GVGf9JBE+ePHG0t4fn gKzMTPzqGSgxvbqqCjMPUmRBRFgY3PTp06YTo4UECzasX0+q6f///2ckvsp0cnCA FH+m5mbLV66kco329OlTeOGaV1BA/Srz27dviDpATo62dTL+HE5ynQwBwsLCvRP6 yXAN44hpF23csEFFQRGCNm7YMJJadjS3gHG0dU0IAAYAE/QpQukrJAMAAAAASUVO RK5CYII= ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=icon_systemProperties.png Content-Type: image/png; name=icon_systemProperties.png Content-Location: http://support.gateway.com/s/images/icon_systemProperties.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAACgAAAAhCAIAAAAkk37yAAAACXBIWXMAAAsTAAAL EwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj33 3vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEs DIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIe EeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH /w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAn f+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJ V2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4 mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHg g/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl 7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/A V/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5 WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQ WHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAA RKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv 1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4 IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGy UT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPE bDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhM WE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPE NyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD 5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2h tlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0 dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHK CpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2ep O6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN 2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIp G6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3n U9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36 p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYP jGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLn m+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cR p7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0H DYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dn F2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofc n8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh 7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJ gUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5p DoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85 ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7 F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/R NtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9 MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo 1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5 sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWF fevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTP ZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJ zs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ +7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3v dy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtb Ylu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ7 52PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7 nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9 zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9D BY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfy l5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT 0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADq YAAAOpgAABdvkl/FRgAAA31JREFUeNrkV29IE2EYPyM4dqnJOTIZuIHugx9UWmy2 FOZAWppBSCxxGRZNN7+UJQj+h9TUlFyGTuaHjamVoDMIRfzsQCcmhAp3Bm7cfanc J3sPP10f3ng55u3PjYFEL/vw3LPf+/zeu+e53/NcGs/z2HmsC9g5rYtJ7GFZ1rfk +7qzAwDAMIwgiGsajem2Sa1WJx4kTdKjZlm2p6t7a3OTAyDiLxlB3Cwvez00RJJk 6olv6HS/fvyMASDl2Vvb26nMMcdxNE175+ZkhCwaBsfxkdHRcDicMmKWZZ80NjZb rdnZ2T19fTiOi7I+etxYXFx8v7b2zcgIx3FxgvLxFsMwRoMhX6nKV6pa7HYAQJPV Ci+FvyarFQDQYrcLkTHCxrnjcDjcYLGEjoLwcm1l1eP2jDscl7OyhDClSjXucHjc nrWVVSEy+eLq6uz8ODcf4XTOuJRK5b2au6enpxiGZWRmflld2Q4EXj5vjUAufl4u KSmRnGOaphHr4uflOks9tG1PrQRBPHvRiuM4juNv3zlCoRBibW6xI+TQ4GAyOR4Z HoYJ6+zo4HkeAFBnNkOP0WAAADRYHk47nWeL4Pj4GOXe7/eLBo9KDABAmymKQoWG nJAj4jQMw0Dk1OQUgkkjpigK7qwzm4V+v9+PuGe9XlTGwvPxPC+8adHyjprj/b09 aBgqjEK/Xq9va2+Hdm9XNypj74d5oVaTJGmqroI2wzDJCEhu7tUIj81uQ0Hhamtv 1+v1EbCiomJoBIPBlLXFV/39eSoltE3VVTa77SwmIyMdGr9PTlJGTJLktMuFYZi2 VDc6NiaKOTg4gMaVnBwJ/fhS+t/zUhQlClCr1c4ZV2FhoUwm3ja+Hx5CQy6XS1Au lmUNZeXQ/nawHy16DK3Vaa7H2B71USsUCm2pDtq7u7tSc7HwaQFVgPihYyjXss8n 1Ck+4SXUmWjKFau4bplMsHRDR8H3ExOJjwyDAwPQ1pbqzr5mCfXj9fV1dPapyam4 9ypsyRFalqhkooVUFwpvjFgURSHdhoIaI2z8YY/juIH+fmFXrrPU36mpycvLUygU sHsGg0Hf0hKST6hloqoiecqcm53t7epOMM3OGVdlZWXKxluapj1u99mBJEK0zQ/M iYzWaVK/nViW3Q4EAoGAf2MDzmLaUl1+QUGF0ajRaBKc5pMh/uc/2v4/4j8DAPG1 hKuH7svgAAAAAElFTkSuQmCC ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=icon_F3_PowerOptions.png Content-Type: image/png; name=icon_F3_PowerOptions.png Content-Location: http://support.gateway.com/s/images/icon_F3_PowerOptions.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAACsAAAAoCAIAAADoq5Q5AAAACXBIWXMAAAsTAAAL EwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj33 3vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEs DIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIe EeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH /w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAn f+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJ V2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4 mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHg g/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl 7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/A V/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5 WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQ WHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAA RKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv 1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4 IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGy UT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPE bDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhM WE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPE NyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD 5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2h tlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0 dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHK CpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2ep O6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN 2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIp G6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3n U9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36 p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYP jGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLn m+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cR p7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0H DYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dn F2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofc n8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh 7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJ gUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5p DoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85 ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7 F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/R NtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9 MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo 1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5 sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWF fevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTP ZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJ zs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ +7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3v dy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtb Ylu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ7 52PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7 nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9 zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9D BY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfy l5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT 0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADq YAAAOpgAABdvkl/FRgAABY1JREFUeNrsWH1MU1cUf7fvrXxUylfpF21faYHJR9FW nUihaFQEhYpj2x/KmKAuxkXZFHQRXVx0aoybEmfcPxKRmYGZDhOwAs5lmgkFEf2D jzqDqBShIJR+2Vfe690fbyEEI2DLQrJ4/rq595xzf+edc8/vvgsghMicCgOZa3mH 4P+AwGq1ziWC0lOnthVsKT1d6hUE6KmYzWZVwgJOUHB6WtrwyIjHfjz/BoTLhWEY i8VisVgugpiDLEC3GwBAj8cHHgjmSfQE8cetW3q93ma3MxjTx2C32ymKYrPZs4Og f2Dgm5IDutra2Ng4N0VNq3+vpeX40WMQwivVv81CFgwGw9b8/OqrV1AUBQzwL6cA 8CZy+f3mzU9yPtI3NSWp1bNwFjo7OzPS1oQGBslxaTiPn5qcIhGK+JywFZpU0+Dg 6/p1N25EyeQiHj8/L28KtzPNwrOnz3bu+KKttTU4JMTpdPqxWGsz1zEYjIa6+jXp 6YGv5Vin0+3eVWizWmNiY/cfPOhtP3A4HHuLilhMn0hphDCMu0SlqqioIAgCQtje 3v66/vXa6zFR0eE8ftz8+Xdu35na+YwQNN5tjIyQRYglYoFw0ULlteprUyg3NTYu Vir5nLDQwKBvDx16/vy5twisVmtebq6IL8DDRe9HRl4sL59CuaOzc21GhpDLFfEF X+/dV1VZuT4zy2AweIXgSXe3HJfKJDgvJHTH9u0Oh+PNWC1Fu/cIwrhCLm9teobR aOzr65Pj0n3FxZ5XIoSwpbnZRRAohrGDgpKSk/38/BAE6enpaW9vx3E8JiYGRVFa +XLV5QtlZSwWy+12F+0tFgqFEMI4Rbxer/e8EsfGxgp37ZKKxEIuLyNtzePHf0MI 627oli5aLBWJo2Xy7w4fdrvdEMK2+/cXxCvEfAE/lPPjmTP0JITw+LFjiUs+GB4e 9pCZIIT9L/rpzh8hi5DLIxEEufrrVYPBgKIoSZI/X6yor6u32+1l58+/HBwkXK5l yeosrXacKXAcp6P0nBdIkoQQMn2Y7KBAkiQxDEtJ1XQZuvp6jRRFEQRRevr0iHnk cmWVr69vgK9vQcEWiUQybg4QQEfiFTcCAMZcYxazhXazKTf3zNmz4aJwkiQBAE+6 u48eOeLv5+dwODbk5GRkrpto+8r5CiJwCgJjTLu3QCCEEFIk+expT/+LF/S8QqHY +GluQEAAhNBFEFaLhaTc8qiorPVadMJmEMIHbW1Mpk9wcLCHCFAUVSerURRl+vgY DI9u/3l7fGnrts85YWFutxsAwACMsTHX8hXLNRrNRHOKopqammJiYzy/oQAAEhOX 2mw2DMPMIyMdHR0TEozEKxT0USRJMio6OkurnWTe1nbfYh7dkPOhV3ekkNDQZI3G 5XL5+/tfr6m52dAwvqRJ1WAYRh/aqOjopKSkSbanvv8hNIyzctVqrxCw2ey8zZ9R bgpF0UGT6WJ5udFopJeUKhVr3jyKong8nnb95A/w07lzLc3NOwsL38Mwb7nRZDJ9 nJMTzuXJJDgeLirYnG809kIIR0dHFyuVYoEwO0vrdDonmlRXVy+IV2zauHHSvIfc CCFsbW1dqEgQ8QURYokcl6ao1bU1NTabbfXKVdEy+VeFX9JqFEWZTKYDJSVyXKpU JExLjBBCMPO/94b6+uI9RS+HhjAMAwAAABKUCxMTlz140JaZmZmamjowMKDT6ap+ qXw5NCQSi8vKL8THx0/fbN7q/eDhw4cnT5xo/OuuzWZjMpkQQroSCYJwOp0AQRAA eDyeWpOyv6REJpPNqN297QuG1WK5dOlSc7P+Uaeht7d31GxGAKALFsdxiVSyLkub nZ1NU+h/goAWl8t1715LV0eXyWSiPXC4HJVKFRsbN/O9vULw7v3gHYJZln8GAO+y WBEjnB4fAAAAAElFTkSuQmCC ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=icon_bluetooth.png Content-Type: image/png; name=icon_bluetooth.png Content-Location: http://support.gateway.com/s/images/icon_bluetooth.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAA AARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAA OpgAABdwnLpRPAAAAwBQTFRFAAAAAQEBAgICAwMDBQUFBgYGBwcHCAgICQkJCgoK CwsLDAwMDQ0NDg4ODw8PEBAQEREREhISFBQUFRUVGBgYGRkZGxsbHBwcHR0dICAg IiIiIyMjJCQkJSUlKCgoKysrLCwsLi4uLy8vMDAwMTExNDQ0NjY2Nzc3Ojo6Ozs7 Pz8/QEBAQkJCRUVFSEhIS0tLUFBQVVVVX19fZGRkZWVlampqcHBwdHR0dXV1hYWF h4eHioqKjY2Nj4+PkJCQkZGRkpKSlZWVmpqam5ubn5+fpKSkpaWlpqamp6enqamp qqqqrKysr6+vs7OztbW1t7e3uLi4ubm5urq6vr6+xcXFx8fHyMjIysrKzc3Nzs7O 0tLS1NTU1dXV19fX2NjY2tra3Nzc3d3d3t7e39/f4eHh4+Pj5OTk5eXl5+fn6Ojo 6enp6urq6+vr7Ozs7e3t7+/v8fHx8vLy9PT09fX19vb29/f3+Pj4+fn5+vr6+/v7 /Pz8/f39/v7+////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAJ0aa0gAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVU IHYzLjM2qefiJQAAAa5JREFUOE+tk1dXwkAQhUOAQAoBezcoKigqRgFF7F1E7GLB hoAgKhERRdz/brJLQggPPui+ZM/Md+7Mzp1g4JeD/StQjK75fL5AWFCrVkvkZtsw dCx8rIooQNQh5QgCItSyQsjAcyfMcJsG+MX3ZEIG/EidA2F0adUClAyAMNIIVoiK QrLSn6gAdmAfE7VASIrpcJz7ck9/rJtwHO8tlSBSUeDFPD1vM/W/jVHBwipBEFQm rwF0vYmT5sHcuP065aQtViv4VgFSBZwYiB2M5rwXCZeJZhrIOGoClYCAieFuz5/S KRdjpNhGNlQHECwzdPWSGCFpUYCll8oaBcxAsn2Xwr2TYVmrzWaZe9cCOmPXnVB4 fXCYSZI0E1ufWgBrjwuT5an0o12vFwexrX5FxiV22ZHKOzjg7slmOWlsN+omgTSo vuiwaJZbdGFNArI1wKLihdtb2pWc60aTlkd9pgAbYB+a5ak1C5gVu4/QUgU0gFcG DlG+qagBki0wzsH64m5GtBsFjuHSUihPLdQtLQDZGWXtPadKXn4FDAiRIM/z/pVk Na08Ux2qvf/95/0BegtMueIYF5kAAAAASUVORK5CYII= ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=icon_F4_zz.gif Content-Type: image/gif; name=icon_F4_zz.gif Content-Location: http://support.gateway.com/s/images/icon_F4_zz.gif Content-Transfer-Encoding: Base64 R0lGODlhHAAjAPcAACEYISkhISkpKTEpKTEpMTExMTk5OUJCQlJSUlpSUlpaWmNj Y2tra3Nzc3t7e4yMjJSUlJycnK2trbWtrbW1tb29vcbGxs7OztbW1t7e3ufn5+/v 7/f39/////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// /////////////////ywAAAAAHAAjAAAItAA7CBxIsKDBgwgTKlzIsKHDhxAjFlyQ AIECBhILBgCwMUBGgwoAQPhIUAIABBxICtTAMYNKgQgASGgYoSPHmzMlbLS4wGVC CDZtzqxp0ydCDBCSQniwUUCFlxA4LniJQUAAARtUcihwlcJLBxsbvLSwsUBKkluv XnjJgOODlxSsHjj7cYNVAQ8k6NVrISKGoDcDIPAr4IDhwwcMTIXIAUMGDI4hP9bw srLly5gza97MmWRAAAA7 ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=icon_F5_displaytoggle_nobutton.gif Content-Type: image/gif; name=icon_F5_displaytoggle_nobutton.gif Content-Location: http://support.gateway.com/s/images/icon_F5_displaytoggle_nobutton.gif Content-Transfer-Encoding: Base64 R0lGODlhIwAoAPcAACEYIUI5OVpSUmtra3t7e4yMjJSUlKWlpa2trbWtrbW1tb29 vcbGxs7OztbW1t7e3ufn5+/v7/f39/////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// /////////////////ywAAAAAIwAoAAAI0wAnCBxIsKDBgwgTKlzIsKHDhxAjSpxI saLFixgzatyYMIIBAgEAiBwJQACBAxNQMiAwgCRJAgUcEHQwwEGEgw4aAJggYAIB BDIXCB0qwYEBBDMJLNzZk4CDBS5HLkCAdKADpQqZ+nwaVeTUqgKvLuW5FWrXqQmS jm3K9SxVtVnJOjUbFS3chFrndgXwdaaABQ4gEISQE0FeAw0eKBi6QMGDBT8JSkDw UQDJAAQIJGAwocEEBwgyuxxA4KhgjqhTq17NurXr17Bjy55Nu7bt27gTBgQAOw== ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=icon_F6_brighttoggle_nobutton.gif Content-Type: image/gif; name=icon_F6_brighttoggle_nobutton.gif Content-Location: http://support.gateway.com/s/images/icon_F6_brighttoggle_nobutton.gif Content-Transfer-Encoding: Base64 R0lGODlhIgAkAPcAACEYITExMTkxMUI5OVpSUlpaWmNjY2tra3Nzc3t7e4SEhIyM jJSUlJycnKWlpa2lpa2trbWtrbW1tb29vcbGxs7OztbW1t7e3ufn5+/v7/f39/// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// /////////////////ywAAAAAIgAkAAAI7QA3CBxIsKDBgwgTKlzIsKHDhxAjSpxI saLFixgzStSwIIHHjx8lEHRQoAABkygLODg4YUAFCxYmNIB5AQIADAIvANjJsycA CgYhrGSQoYKCDQsybDhgIafPpxCCRk2wQACAAgaUJni5wcJTnyILQoiwIUPPBgIT NACgQOdXnlHFQsDa8wCAC1sJvOQZgC/PsATHCrS6c+WGBE03uH0LIG7gqRIQHFiQ 9XBir4wBkBVLliiFqEmXJl68s29PwANbvrwwwcEFmBNuCsQMwLRPoAU5gtxtWKAD xmg1Ch9OvLjx48iTK1/OvLnz5xIDAgA7 ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=icon_touchpad.png Content-Type: image/png; name=icon_touchpad.png Content-Location: http://support.gateway.com/s/images/icon_touchpad.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAA AARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAA OpgAABdwnLpRPAAAAwBQTFRFJyUlKCYmLCoqLiwsLi0tNDIyNTMzNjQ0ODc3Pz09 Q0JCRUNDR0VFTEtLT01NUU9PUlBQV1VVWVdXYV9fY2JiZGNjZ2ZmcXBwdHNzd3Z2 fXx8fn19jIuLj46OkZGRlJOTnJubnZ2dn5+foqGhpKSkqKenrKurvLy8vr29xcTE xcXFzczM09LS1tbW2NjY3t3d5eXl5ubm6+vr7Ozs7e3t7u7u8fHx9vb2+Pj4+/v7 /f39////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAl2khpQAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVU IHYzLjM2qefiJQAAAMZJREFUOE/tk+kWgiAQhafUNDOzsj2z0sp2zdKS93+vToDC cTk9QN1fMPdjGAYA9EXwB3AHqvrguzfSoVIg3vQA2nEVEC4k+MjigcB1qNYzAdsA LQ54NBQDqyNSF0C7cIAnBniWTDO/T0qgRXoynjyZDzt6zeQUBIgG2XowkyLg68zX o/SdsAxnFSDdopv5XA0j0I5zmmPF3hnLsLdiNAZTElSl6ZQBOHZHp/AaGAXgULM9 pmV9m8+AJjKv4asAsEB+9CP/4g2o8cmV9FhFnwAAAABJRU5ErkJggg== ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=F8.gif Content-Type: image/gif; name=F8.gif Content-Location: http://support.gateway.com/s/images/F8.gif Content-Transfer-Encoding: Base64 R0lGODlhJAAiAPcAACEYIUI5OVJSUlpSUmNjY2tra3Nzc3t7e4SEhIyMjJSUlJyU lJycnKWlpa2lpbWtrb29vcbGxs7OztbW1t7e3ufn5+/v7/f39/////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// /////////////////ywAAAAAJAAiAAAI/gAxCBxIsKDBgwgTKlzIsKHDhxAjSpx4 sIIFig0nAGCAkWEDAA06GowQUmABABJGloyo8YDACwAAXCgYAYDLiBUC2BQoAUCB ghp3QggQoeGFAAEQ3Py4EoMFnTYtVFCAEmEFATFjNoBw86SECQOyZj0AAcCEBAMQ PiAAAQKBAxe4YoAp84HYsUcHWDB78MFPDAUUYJDb86fduzvtWijwoO/fwINdMsVw +K7LmhUONDb4QIACBQIMxHVJoGplsS4HBICZ0qAEqFq50p3ZE/GBniQDJLRAYULP pLd9DuRNoWbMA1LLFmVo/MDkkccx1FzesOYBrwitC7wIMQKDmDOzGjeNWFikwgsD qJtfz769+/fw48ufT7+++YAAADs= ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=FRightArrow.gif Content-Type: image/gif; name=FRightArrow.gif Content-Location: http://support.gateway.com/s/images/FRightArrow.gif Content-Transfer-Encoding: Base64 R0lGODlhHwAjAPcAACEYITExMTkxMTk5OUI5OUpCQkpKSlJSUlpaWmNjY2tjY2tr a3Nzc3t7e4R7hISEhIyEhIyMjJSUlJycnKWlpa2trbW1tb29vcbGxs7Ozt7e3ufn 5+/v7/f39/////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// /////////////////ywAAAAAHwAjAAAI/gA9CBxIsKDBgwgTKlzIsKHDhxAFXrAQ ceEFAAAuVEx4MeNGDxMwFMyAMQNBDg1MLnQAYIDKhBwOABDAYSEFjAgGVniwYEGD CQJvAjjQkEIAkxkKYDwgE4CBCh4aLKj58CaBkBs2YJhAAACFihoGJNBY8EICjxAZ AKB40EKBnA85AGjQIWEDABosWtB48WvCCl49YLhAtiDGjBcLH7wogSRGxQIPZ7AA AGpCyhMcA3h5UAOABwofbPaQ4QJnhAkIQB6IoUCBiBcX5C2o4a5fiKITUKC64cIC AAwgdqAqGkCCnmc/e9Cw+mBMASo1MDCA0UADjRoEBF7YVMJCzacNKMoMftLC7IE3 D1CFeXtghJYGM6yPKAHjR4QTZt7fz7+///8ABlhQQAAAOw== ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=FLeftArrow.gif Content-Type: image/gif; name=FLeftArrow.gif Content-Location: http://support.gateway.com/s/images/FLeftArrow.gif Content-Transfer-Encoding: Base64 R0lGODlhIQAmAPcAACEYITExMTkxMTk5OUJCQkpCQlJSUlpaWmNjY2tra3Nzc4R7 hISEhJSUlJycnKWlpa2trbW1tb29vcbGxs7Ozt7e3u/v7/f39/////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// /////////////////ywAAAAAIQAmAAAI/gAxCBxIsKDBgwgTKlzIsKHDhxAjSkx4 oYKFiQsNABBwESNCAAAIVPCIQcJIgiAHnBQIIcLDCAAGTCAoIYEDgg5AzmwIEwCC gRAaIFjQ4GTKlQwfAHiAAUIBkFABMLDw4ACFiUqjRjXQUSIFrWAZYFQAFixShxa0 BoC6FmQDh0GLSigL9qeDBg26GkwAUkJPulATYIAqIWGDBAgqzAXZtqwCDAkQn004 oGxjADclkgUcU+9DC5UBv8VIITTYxxIfJLhoYXNbAxAwOLD6MOtoDBYkNIBA4YLA AzGvNuQ7QHjC0gBcNrTAwLhAvpkHUohNku9tkgURALiOfaBiz93DC4sfT768+fPo SQYEADs= ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=FUpArrow.gif Content-Type: image/gif; name=FUpArrow.gif Content-Location: http://support.gateway.com/s/images/FUpArrow.gif Content-Transfer-Encoding: Base64 R0lGODlhHwAmAPcAACEYIUI5OVpSUmtra3t7e4yMjJSUlKWlpbWtrb29vcbGxtbW 1t7e3ufn5+/v7/f39/////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// /////////////////ywAAAAAHwAmAAAI8QAhCBxIsKDBgwgTKlzIsKHDhxANNkAQ cWGDAAQqJlQQAEBGjQYTABj5UWADkAZGkhT44AAABREfEFC5EoKDkQEeICTAsydP ATRrQkAwMgHCoEhpEnBggMCDjgKOJk3KcyRTqwenUlUwEsGColm1Bs1I8kHXsGJV ZpxJ1iPatG5nBoAwwK1BuGohzBwAoWNJgnhX1m1r4G1apyMLNDh7NzABogASiATA wLBYAh0BPKg717JWAgwGHPgKoPBBnz6Bjh2o+uTDzashcAVQQGPKvAIR5ATpUigE nSBl+w4+kAFG4gcbmEbOvLnz59CjS5/uMCAAOw== ------------lklIDkRqA33x7wS7VvfJGW Content-Disposition: inline; filename=FDnArrow.gif Content-Type: image/gif; name=FDnArrow.gif Content-Location: http://support.gateway.com/s/images/FDnArrow.gif Content-Transfer-Encoding: Base64 R0lGODlhHwAlAPcAACEYIUI5OVpSUmtra3t7e4yMjJSUlKWlpbWtrb29vcbGxtbW 1t7e3ufn5+/v7/f39/////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// /////////////////ywAAAAAHwAlAAAI3gAhCBxIsKDBgwgTKlzIsKHDhxAROoi4 8AEBBBQTPhgAAGNGgw0CAOj4seACkSMxPiig4KOCkTAxihTwQOOCBQxu5lxgAGZM CAdGJki4wKfRoypnJmRwtGlKgUEBNEBY1ClSgQ2eHmRq1ahHCCIJUO3qdSABAGK3 kvX59SyAsWu1QnCLkGvctgAEwL07UADaunG1Ohh5YO9ajwlGLgAc2KPfAEQDk0wM oDDCBwwya84cla0DkQEmUnzJdiXJjwxQnl5cEkIDv6dbD9wYW7bABwa+2h4oerfv 38CDCw8eEAA7 ------------lklIDkRqA33x7wS7VvfJGW--